ALTER DEFAULT PRIVILEGES - Amazon Redshift

ALTER DEFAULT PRIVILEGES

Define o conjunto padrão de permissões de acesso que será aplicado a objetos criados no futuro pelo usuário especificado. Por padrão, os usuários podem alterar somente suas próprias permissões de acesso padrão. Somente um superusuário pode especificar permissões padrão para outros usuários.

Privilégios padrão podem ser aplicados a funções, usuários ou grupos de usuários. É possível definir permissões padrão globalmente para todos os objetos criados no banco de dados atual ou para os objetos criados somente nos esquemas especificados.

As permissões padrão se aplicam somente a novos objetos. Executar ALTER DEFAULT PRIVILEGES não altera as permissões em objetos existentes. Para conceder permissões em todos os objetos atuais e futuros criados por qualquer usuário em um banco de dados ou esquema, consulte Scoped permissions.

Para visualizar informações sobre os privilégios padrão para usuários de bancos de dados, consulte a PG_DEFAULT_ACL tabela de catálogos do sistema.

Para obter mais informações sobre privilégios, consulte GRANT.

Privilégios obrigatórios

A seguir estão os privilégios obrigatórios para ALTER DEFAULT PRIVILEGES:

  • Superusuário

  • Usuários com o privilégio ALTER DEFAULT PRIVILEGES

  • Usuários que alterem seus próprios privilégios de acesso padrão

  • Usuários que definam privilégios para esquemas aos quais eles têm privilégios de acesso

Sintaxe

ALTER DEFAULT PRIVILEGES [ FOR USER target_user [, ...] ] [ IN SCHEMA schema_name [, ...] ] grant_or_revoke_clause where grant_or_revoke_clause is one of: GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | REFERENCES | TRUNCATE } [,...] | ALL [ PRIVILEGES ] } ON TABLES TO { user_name [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTIONS TO { user_name [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON PROCEDURES TO { user_name [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRUNCATE } [,...] | ALL [ PRIVILEGES ] } ON TABLES FROM user_name [, ...] [ RESTRICT ] REVOKE { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRUNCATE } [,...] | ALL [ PRIVILEGES ] } ON TABLES FROM { ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ] REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTIONS FROM user_name [, ...] [ RESTRICT ] REVOKE { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTIONS FROM { ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ] REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [ PRIVILEGES ] } ON PROCEDURES FROM user_name [, ...] [ RESTRICT ] REVOKE { EXECUTE | ALL [ PRIVILEGES ] } ON PROCEDURES FROM { ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ]

Parâmetros

FOR USER target_user

Opcional. Nome do usuário para o qual os privilégios padrão são definidos. Somente os superusuários podem especificar privilégios padrão para outros usuários. O valor padrão é o usuário atual.

IN SCHEMA schema_name

Opcional. Se uma cláusula IN SCHEMA for exibida, os privilégios padrão especificados são aplicados a novos objetos criados com o schema_name especificado. Nesse caso, o usuário ou grupo de usuários de destino do comando ALTER DEFAULT PRIVILEGES deve usar o comando CREATE para criar o privilégio para o esquema especificado. Os privilégios padrão específicos de um esquema são adicionados a privilégios padrão globais existentes. Por padrão, os privilégios padrão são aplicados globalmente ao banco de dados inteiro.

GRANT

O conjunto de privilégios a ser concedido a usuários ou grupos especificados para todas as novas tabelas, visualizações, funções ou procedimentos armazenados criados pelo usuário especificado. É possível definir os mesmos privilégios e opções com a cláusula GRANT que você pode definir com o comando GRANT.

WITH GRANT OPTION

Cláusula que indica que o usuário que recebe os privilégios por sua vez pode conceder os mesmos privilégios a outros. Você não pode conceder WITH GRANT OPTION a um grupo ou a PUBLIC.

TO user_name | ROLE role_name | GROUP group_name

Nome do usuário, da função ou do grupo de usuários ao qual os privilégios padrão especificados são aplicados.

REVOKE

Conjunto de privilégios a serem revogados dos usuários ou grupos especificados para todas as novas tabelas, funções ou procedimentos armazenados criados pelo usuário especificado. É possível definir os mesmos privilégios e opções com a cláusula REVOKE que você pode definir com o comando REVOKE.

GRANT OPTION FOR

Cláusula que revoga somente a opção de conceder um privilégio especificado a outros usuários e não revoga o próprio privilégio. Não é possível revogar GRANT OPTION de um grupo ou de PUBLIC.

FROM user_name | ROLE role_name | GROUP group_name

O nome do usuário, da função ou do grupo de usuários do qual os privilégios especificados são revogados por padrão.

RESTRICT

A opção RESTRICT revoga somente os privilégios que o usuário concedeu diretamente. Esse é o padrão.

Exemplos

Digamos que você deseja permitir que qualquer usuário do grupo report_readers visualize todas as tabelas e visualizações criadas pelo usuário report_admin. Nesse caso, execute o comando a seguir como superusuário.

alter default privileges for user report_admin grant select on tables to group report_readers;

No exemplo a seguir, o primeiro comando concede privilégios SELECT em todas as novas tabelas e visualizações criadas.

alter default privileges grant select on tables to public;

O exemplo a seguir concede o privilégio INSERT ao grupo de usuários sales_admin para todas as novas tabelas e exibições que você criar no esquema sales.

alter default privileges in schema sales grant insert on tables to group sales_admin;

O exemplo a seguir inverte o comando ALTER DEFAULT PRIVILEGES do exemplo anterior.

alter default privileges in schema sales revoke insert on tables from group sales_admin;

Por padrão, o grupo de usuários PUBLIC tem permissão de execução para todas as novas funções definidas por usuário. Para revogar permissões de execução public para suas novas funções e depois conceder a permissão de execução somente para o grupo de usuários dev_test, execute os comandos a seguir.

alter default privileges revoke execute on functions from public; alter default privileges grant execute on functions to group dev_test;