GRANT - Amazon Redshift

GRANT

Define permissões de acesso para um usuário ou grupo de usuários.

As permissões incluem opções de acesso como leitura de dados em tabelas e visualizações, gravação de dados e criação de tabelas. Use este comando para fornecer permissões específicas para uma tabela, banco de dados, esquema, função, procedimento, linguagem ou coluna. Para revogar permissões de um objeto de banco de dados, use o comando REVOKE.

As permissões também incluem opções de acesso, como a capacidade de adicionar ou remover objetos ou consumidores de uma unidade de compartilhamento de dados. Para adicionar ou remover objetos de banco de dados de uma unidade de compartilhamento de dados para um usuário ou grupo de usuários, use a permissão ALTER. Da mesma forma, para adicionar ou remover consumidores de uma unidade de compartilhamento de dados, use a permissão SHARE. Para revogar permissões de um objeto de banco de dados, use o comando REVOKE. ALTER e SHARE são as únicas permissões que você pode conceder aos usuários e grupos de usuários.

Você também pode conceder perfis para gerenciar permissões de banco de dados e controlar o que os usuários podem fazer em relação aos seus dados. Ao definir perfis e atribuí-los aos usuários, você pode limitar as ações que esses usuários podem realizar, como limitar os usuários somente aos comandos CREATE TABLE e INSERT. Para obter mais informações sobre o comando CREATE ROLE, consulte CREATE ROLE. O Amazon Redshift tem alguns perfis definidos pelo sistema que você também pode usar para conceder permissões específicas aos seus usuários. Para obter mais informações, consulte Funções definidas pelo sistema do Amazon Redshift.

Só é possível CONCEDER ou REVOGAR permissões de USO em um esquema externo para usuários de banco de dados e grupos de usuários que usam a sintaxe ON SCHEMA. Ao usar ON EXTERNAL SCHEMA com AWS Lake Formation, só é possível conceder (GRANT) e revogar (REVOKE) permissões para um perfil do AWS Identity and Access Management (IAM). Para obter a lista de permissões, consulte a sintaxe.

Para procedimentos armazenados, a única permissão que pode ser concedida é EXECUTE.

Não é possível executar GRANT (em um recurso externo) em um bloco de transação (BEGIN ... END). Para obter mais informações sobre transações, consulte Isolamento serializável.

Sintaxe

GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL PROCEDURES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT USAGE ON LANGUAGE language_name [, ...] TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

A seguir está a sintaxe para permissões por coluna em tabelas e visualizações do Amazon Redshift.

GRANT { { SELECT | UPDATE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { [ TABLE ] table_name [, ...] } TO { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

A seguir está a sintaxe para as permissões ASSUMEROLE concedidas a usuários e grupos com um perfil especificado. Para começar a usar o privilégio ASSUMEROLE, consulte Observações de uso para conceder a permissão ASSUMEROLE.

GRANT ASSUMEROLE ON { 'iam_role' [, ...] | default | ALL } TO { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...] FOR { ALL | COPY | UNLOAD | EXTERNAL FUNCTION | CREATE MODEL } [, ...]

A seguir está a sintaxe para integração do Redshift Spectrum com Lake Formation.

GRANT { SELECT | ALL [ PRIVILEGES ] } ( column_list ) ON EXTERNAL TABLE schema_name.table_name TO { IAM_ROLE iam_role } [, ...] [ WITH GRANT OPTION ] GRANT { { SELECT | ALTER | DROP | DELETE | INSERT } [, ...] | ALL [ PRIVILEGES ] } ON EXTERNAL TABLE schema_name.table_name [, ...] TO { { IAM_ROLE iam_role } [, ...] | PUBLIC } [ WITH GRANT OPTION ] GRANT { { CREATE | ALTER | DROP } [, ...] | ALL [ PRIVILEGES ] } ON EXTERNAL SCHEMA schema_name [, ...] TO { IAM_ROLE iam_role } [, ...] [ WITH GRANT OPTION ]

A seguir está a sintaxe para usar GRANT para permissões de unidade de compartilhamento de dados no Amazon Redshift. ALTER e SHARE são as únicas permissões que você pode conceder aos usuários e grupos de usuários neste caso.

GRANT { ALTER | SHARE } ON DATASHARE datashare_name TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

A seguir está a sintaxe para usar GRANT para permissões de uso de unidade de compartilhamento de dados no Amazon Redshift. Você concede acesso de uma unidade de compartilhamento de dados a um consumidor usando a permissão USAGE. Você não pode conceder essa permissão a usuários ou grupos de usuários. Essa permissão também não é compatível com WITH GRANT OPTION para a instrução GRANT. Somente usuários ou grupos de usuários com a permissão SHARE concedida anteriormente a eles para (FOR) a unidade de compartilhamento de dados podem executar esse tipo de instrução GRANT.

GRANT USAGE ON DATASHARE datashare_name TO NAMESPACE 'namespaceGUID' [, ...] | ACCOUNT 'accountnumber' [ VIA DATA CATALOG ] [, ...]

Veja a seguir um exemplo de como conceder o uso de uma unidade de compartilhamento de dados a uma conta do Lake Formation.

GRANT USAGE ON salesshare TO ACCOUNT '123456789012' VIA DATA CATALOG;

A seguir está a sintaxe para permissões de uso de compartilhamento de dados GRANT em um banco de dados específico ou esquema criado a partir de um datashare. Esta permissão USAGE não concede permissão de uso a bancos de dados que não são criados a partir do datashare especificado. Só é possível CONCEDER ou REVOGAR permissões ALTER ou SHARE em um datashare para usuários e grupos de usuários.

GRANT USAGE ON { DATABASE shared_database_name [, ...] | SCHEMA shared_schema} TO { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

A seguir está a sintaxe para permissões de modelos de machine learning no Amazon Redshift.

GRANT CREATE MODEL TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON MODEL model_name [, ...] TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

A sintaxe a seguir concede permissões de perfil no Amazon Redshift.

GRANT { ROLE role_name } [, ...] TO { { user_name [ WITH ADMIN OPTION ] } | ROLE role_name }[, ...]

A sintaxe a seguir concede permissões de sistema a perfis no Amazon Redshift.

GRANT { { CREATE USER | DROP USER | ALTER USER | CREATE SCHEMA | DROP SCHEMA | ALTER DEFAULT PRIVILEGES | CREATE TABLE | DROP TABLE | ALTER TABLE | CREATE OR REPLACE FUNCTION | CREATE OR REPLACE EXTERNAL FUNCTION | DROP FUNCTION | CREATE OR REPLACE PROCEDURE | DROP PROCEDURE | CREATE OR REPLACE VIEW | DROP VIEW | CREATE MODEL | DROP MODEL | CREATE DATASHARE | ALTER DATASHARE | DROP DATASHARE | CREATE LIBRARY | DROP LIBRARY | CREATE ROLE | DROP ROLE TRUNCATE TABLE VACUUM | ANALYZE | CANCEL }[, ...] } | { ALL [ PRIVILEGES ] } TO { ROLE role_name } [, ...]

Veja a seguir a sintaxe para conceder permissões para explicar os filtros de política de segurança no nível da linha de uma consulta no plano EXPLAIN. É possível revogar o privilégio usando a instrução REVOKE.

GRANT EXPLAIN RLS TO ROLE rolename

Veja a seguir a sintaxe para conceder permissões para ignorar políticas de segurança no nível da linha para uma consulta.

GRANT IGNORE RLS TO ROLE rolename

Veja a seguir a sintaxe para conceder permissões para a política de segurança no nível da linha especificada.

GRANT SELECT ON [ TABLE ] table_name [, ...] TO RLS POLICY policy_name [, ...]

Parâmetros

SELECT

Concede permissão para selecionar dados de uma tabela ou visualização usando uma instrução SELECT. A permissão SELECT também é necessária para fazer referência a valores de coluna existentes para as operações UPDATE ou DELETE.

INSERT

Concede permissão para carregar dados em uma tabela usando uma instrução INSERT ou COPY.

UPDATE

Concede permissão para atualizar uma coluna de tabela usando a instrução UPDATE. As operações UPDATE também exigem a permissão SELECT, pois devem fazer referência a colunas da tabela para determinar que linhas atualizar ou computar novos valores para as colunas.

DELETE

Concede permissão para excluir uma linha de dados de uma tabela. As operações DELETE também necessitam do privilégio SELECT, pois devem fazer referência a colunas da tabela para determinar que linhas excluir.

REFERENCES

Concede permissão para criar uma restrição de chave estrangeira. Você precisa conceder essa permissão na tabela referenciada e na tabela que faz a referência. Caso contrário, o usuário não poderá criar a restrição.

ALL [ PRIVILEGES ]

Concede todas as permissões disponíveis de uma vez ao usuário ou ao grupo de usuários especificado. A palavra-chave PRIVILEGES é opcional.

GRANT ALL ON SCHEMA não concede permissões CREATE para esquemas externos.

É possível conceder a permissão ALL para uma tabela em um AWS Glue Data Catalog habilitado para o Lake Formation. Nesse caso, permissões individuais (como SELECT, ALTER e assim por diante) são registradas no catálogo de dados.

ALTER

Concede permissão para alterar uma tabela em um AWS Glue Data Catalog habilitado para o Lake Formation. Essa permissão só é aplicada ao usar o Lake Formation.

DROP

Concede permissão para remover uma tabela. Essa permissão se aplica no Amazon Redshift e em um AWS Glue Data Catalog que está habilitado para o Lake Formation.

ASSUMEROLE

Concede permissões para executar comandos COPY, UNLOAD, EXTERNAL FUNCTION e CREATE MODEL a usuários, perfis ou grupos com um perfil especificado. O usuário, perfil ou grupo assume esse perfil ao executar o comando especificado. Para começar a usar a permissão ASSUMEROLE, consulte Observações de uso para conceder a permissão ASSUMEROLE.

ON [ TABLE ] table_name

Concede as permissões especificadas em uma tabela ou visualização. A palavra-chave TABLE é opcional. Você pode listar várias tabelas e exibições em uma instrução.

ON ALL TABLES IN SCHEMA schema_name

Concede as permissões especificadas em todas as tabelas e exibições no esquema de referência.

( column_name [,...] ) ON TABLE table_name

Concede as permissões especificadas a usuários, grupos ou PUBLIC nas colunas especificadas da tabela ou visualização do Amazon Redshift.

( column_list ) ON EXTERNAL TABLE schema_name.table_name

Concede as permissões especificadas para um perfil do IAM nas colunas especificadas da tabela do Lake Formation no esquema mencionado.

ON EXTERNAL TABLE schema_name.table_name

Concede as permissões especificadas para um perfil do IAM nas tabelas especificadas do Lake Formation no esquema mencionado.

ON EXTERNAL SCHEMA schema_name

Concede as permissões especificadas para um perfil do IAM no esquema mencionado.

ON iam_role

Concede as permissões especificadas para um perfil do IAM.

TO username

Indica o usuário que está recebendo as permissões.

TO IAM_ROLE iam_role

Indica o perfil do IAM que está recebendo as permissões.

WITH GRANT OPTION

Indica que o usuário que recebe as permissões pode, por sua vez, conceder as mesmas permissões a outros. WITH GRANT OPTION não pode ser concedido a um grupo ou a PUBLIC.

ROLE role_name

Concede as permissões ao perfil.

GROUP nome_grupo

Concede as permissões a um grupo de usuários. Pode ser uma lista separada por vírgulas para especificar vários grupos de usuários.

PUBLIC

Concede as permissões especificadas a todos os usuários, incluindo os usuários criados posteriormente. PUBLIC representa um grupo que inclui sempre todos os usuários. As permissões de um usuário individual consistem na soma das permissões concedidas a PUBLIC, das permissões concedidas a todos os grupos aos quais o usuário pertence e de quaisquer permissões concedidas ao usuário individualmente.

Conceder PUBLIC a um EXTERNAL TABLE do Lake Formation resulta em conceder a permissão para o grupo todos do Lake Formation.

CREATE

Dependendo do objeto do banco de dados, as seguintes permissões são concedidas ao usuário ou ao grupo de usuários:

  • Para bancos de dados, CREATE permite que os usuários criem esquemas no banco de dados.

  • Para esquemas, CREATE permite que os usuários criem objetos em um esquema. Para renomear um objeto, o usuário deve ter a permissão CREATE e ser proprietário do objeto a ser renomeado.

  • Não há suporte para CREATE ON SCHEMA nos esquemas externos do Amazon Redshift Spectrum. Para conceder o uso de tabelas externas em um esquema externo, conceda USAGE ON SCHEMA a usuários que precisam de acesso. Somente o proprietário de um esquema externo ou um superusuário tem permissão para criar tabelas externas no esquema externo. Para transferir a propriedade de um esquema externo, use ALTER SCHEMA para alterar o proprietário.

TEMPORARY | TEMP

Concede permissão para criar tabelas temporárias no banco de dados especificado. Para executar as consultas do Amazon Redshift Spectrum, o usuário do banco de dados precisa ter permissão para criar tabelas temporárias no banco de dados.

nota

Por padrão, os usuários recebem permissão para criar tabelas temporárias por associação automática ao grupo PUBLIC. Para remover a permissão para que qualquer usuário crie tabelas temporárias, revogue a permissão TEMP do grupo PUBLIC. Em seguida, conceda explicitamente a permissão para criar tabelas temporárias para usuários ou grupos de usuários específicos.

ON DATABASE nome_bd

Concede as permissões especificadas em um banco de dados.

USAGE

Concede a permissão USAGE em um esquema específico, que torna objetos naquele esquema acessíveis aos usuários. As ações específicas nesses objetos devem ser concedidas separadamente (por exemplo, permissões SELECT ou UPDATE em tabelas) para esquemas locais do Amazon Redshift. Por padrão, todos os usuários têm permissões CREATE e USAGE no esquema PUBLIC.

Ao conceder USAGE a esquemas externos usando a sintaxe ON SCHEMA, você não precisa conceder ações separadamente nos objetos no esquema externo. As permissões de catálogo correspondentes controlam as permissões granulares nos objetos externos do esquema.

ON SCHEMA schema_name

Concede as permissões especificadas em um esquema.

GRANT CREATE ON SCHEMA e a permissão CREATE em GRANT ALL ON SCHEMA não são compatíveis com os esquemas externos do Amazon Redshift Spectrum. Para conceder o uso de tabelas externas em um esquema externo, conceda USAGE ON SCHEMA a usuários que precisam de acesso. Somente o proprietário de um esquema externo ou um superusuário tem permissão para criar tabelas externas no esquema externo. Para transferir a propriedade de um esquema externo, use ALTER SCHEMA para alterar o proprietário.

EXECUTE ON ALL FUNCTIONS IN SCHEMA schema_name

Concede as permissões especificadas em todas as funções no esquema de referência.

O Amazon Redshift não comporta instruções GRANT ou REVOKE para entradas pg_proc builtin definidas no namespace pg_catalog.

EXECUTE ON PROCEDURE procedure_name

Concede a permissão EXECUTE em um procedimento armazenado específico. Como os nomes de procedimento armazenado podem ser sobrecarregados, você deverá incluir a lista de argumentos para o procedimento. Para obter mais informações, consulte Nomeação de procedimentos armazenados.

EXECUTE ON ALL PROCEDURES IN SCHEMA schema_name

Concede as permissões especificadas em todos os procedimentos armazenados no esquema de referência.

USAGE ON LANGUAGE nome_linguagem

Concede a permissão USAGE em um idioma.

A permissão USAGE ON LANGUAGE é necessária para criar funções definidas pelo usuário (UDFs) executando o comando CREATE FUNCTION. Para obter mais informações, consulte Segurança e privilégios de UDF.

A permissão USAGE ON LANGUAGE é necessária para criar procedimentos armazenados executando o comando CREATE PROCEDURE. Para obter mais informações, consulte Segurança e privilégios para procedimentos armazenados .

Para UDFs Python, use plpythonu. Para UDFs SQL, use sql. Para procedimentos armazenados, use plpgsql.

FOR { ALL | COPY | UNLOAD | EXTERNAL FUNCTION | CREATE MODEL } [, ...]

Especifica o comando SQL para o qual a permissão é concedida. Você pode especificar ALL para conceder a permissão nas instruções COPY, UNLOAD, EXTERN FUNCTION e CREATE MODEL. Esta cláusula aplica-se apenas à concessão da permissão ASSUMEROLE.

ALTER

Concede a permissão ALTER aos usuários para adicionar ou remover objetos de uma unidade de compartilhamento de dados ou para definir a propriedade PUBLICACCESSIBLE. Para obter mais informações, consulte ALTER DATASHARE.

SHARE

Concede permissões a usuários e grupos de usuários para adicionar consumidores de dados a uma unidade de compartilhamento de dados. Essa permissão é necessária para permitir que o consumidor específico (conta ou namespace) acesse a unidade de compartilhamento de dados de seus clusters. O consumidor pode ser o mesmo ou de uma conta da AWS diferente, com o mesmo ou um namespace de cluster diferente, conforme especificado por um identificador globalmente exclusivo (GUID).

ON DATASHARE datashare_name

Concede as permissões especificadas na unidade de compartilhamento de dados de referência. Para obter informações sobre granularidade de controle de acesso de consumidor, consulte Compartilhamento de dados em diferentes níveis no Amazon Redshift.

USAGE

Quando USO é concedido a uma conta de consumidor ou namespace dentro da mesma conta, a conta de consumidor específica ou namespace dentro da conta pode acessar o datashare e os objetos do datashare de forma somente leitura.

TO NAMESPACE 'clusternamespace GUID'

Indica um namespace na mesma conta em que os consumidores podem receber as permissões especificadas para a unidade de compartilhamento de dados. Os namespaces usam um GUID alfanumérico de 128 bits.

TO ACCOUNT 'accountnumber' [ VIA DATA CATALOG ]

Indica o número de outra conta cujos consumidores podem receber as permissões especificadas para a unidade de compartilhamento de dados. Especificar “VIA DATA CATALOG” indica que você está concedendo o uso da unidade de compartilhamento de dados a uma conta do Lake Formation. Omitir esse parâmetro significa que você está concedendo uso a uma conta que possui o cluster.

ON DATABASE shared_database_name> [, ...]

Concede as permissões de uso especificadas no banco de dados especificado que é criado na unidade de compartilhamento de dados especificada.

ON SCHEMA shared_schema

Concede as permissões especificadas no esquema especificado que é criado na unidade de compartilhamento de dados especificada.

CREATE MODEL

Concede a permissão CREATE MODEL a usuários ou grupos de usuários específicos.

ON MODEL model_name

Concede a permissão EXECUTE em um modelo específico.

{ role } [, ...]

A função a ser concedida a outra função, um usuário ou PUBLIC.

PUBLIC representa um grupo que inclui sempre todos os usuários. As permissões de um usuário individual consistem na soma das permissões concedidas a PUBLIC, das permissões concedidas a todos os grupos aos quais o usuário pertence e de quaisquer permissões concedidas ao usuário individualmente.

TO { { user_name [ WITH ADMIN OPTION ] } | role }[, ...]

Concede a função especificada a um usuário especificado com a WITH ADMIN OPTION, outra função ou PUBLIC.

A cláusula WITH ADMIN OPTION fornece as opções de administração para todas as funções concedidas a todos os beneficiários.

EXPLAIN RLS TO ROLE rolename

Concede permissão para explicar os filtros de política de segurança por linha de uma consulta no plano EXPLAIN para um perfil.

IGNORE RLS TO ROLE rolename

Concede permissão para ignorar políticas de segurança por linha para uma consulta a um perfil.

Para saber mais sobre as observações de uso de GRANT, consulte Observações de uso.

Para conferir exemplos de como usar GRANT, consulte Exemplos.