ALTER DEFAULT PRIVILEGES - Amazon Redshift

ALTER DEFAULT PRIVILEGES

Define el conjunto de permisos de acceso predeterminado que se van a aplicar a los objetos que el usuario especificado cree en el futuro. De manera predeterminada, los usuarios pueden cambiar solo sus propios permisos de acceso predeterminados. Solo un superusuario puede especificar los permisos predeterminados de otros usuarios.

Puede aplicar privilegios predeterminados a roles, usuarios o grupos de usuarios. Puede configurar permisos predeterminados globalmente para todos los objetos creados en la base de datos actual o para objetos creados solo en los esquemas especificados.

Los permisos predeterminados se aplican solo a los objetos nuevos. Ejecutar ALTER DEFAULT PRIVILEGES no cambia los permisos de objetos existentes. Para conceder permisos a todos los objetos actuales y futuros creados por cualquier usuario dentro de una base de datos o un esquema, consulte Permisos acotados.

Para ver información acerca de los privilegios predeterminados para usuarios de bases de datos, consulte la tabla de catálogo del sistema PG_DEFAULT_ACL.

Para obtener más información acerca de los privilegios, consulte GRANT.

Privilegios necesarios

Los siguientes privilegios son necesarios para ALTER DEFAULT PRIVILEGES:

  • Superusuario

  • Usuarios con el privilegio ALTER DEFAULT PRIVILEGES

  • Usuarios que cambien sus propios privilegios de acceso predeterminados

  • Usuarios que establezcan privilegios para esquemas para los que tienen privilegios de acceso

Sintaxis

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. El nombre del usuario para el que se definen los privilegios predeterminados. Solo un superusuario puede especificar los privilegios predeterminados de otros usuarios. El valor predeterminado es el usuario actual.

IN SCHEMA schema_name

Opcional. Si aparece una cláusula IN SCHEMA, los privilegios predeterminados especificados se aplican a objetos nuevos creados en el schema_name (nombre_de_esquema) especificado. En este caso, el usuario o grupo de usuarios que es destino de ALTER DEFAULT PRIVILEGES debe tener el privilegio CREATE para el esquema especificado. Los privilegios predeterminados que son específicos de un esquema se agregan a los privilegios predeterminados globales existentes. Por defecto, los privilegios predeterminados se aplican globalmente a toda la base de datos.

GRANT

Define el conjunto de privilegios que se concederá a los usuarios o grupos especificados para todas las tablas y vistas, funciones o procedimientos almacenados nuevos creados por el usuario especificado. Puede configurar los mismos privilegios y opciones con la cláusula GRANT que con el comando GRANT.

WITH GRANT OPTION

Una cláusula que indica que el usuario que recibe los privilegios puede, a cambio, concederles los mismos privilegios a otros. No puede conceder WITH GRANT OPTION a un grupo o a PUBLIC.

TO user_name | ROLE role_name | GROUP group_name

El nombre del usuario, rol o grupo de usuarios a los que se aplican los privilegios predeterminados especificados.

REVOKE

El conjunto de privilegios que se revocará de los usuarios o grupos especificados para todas las tablas, funciones o procedimientos almacenados creados por el usuario especificado. Puede configurar los mismos privilegios y opciones con la cláusula REVOKE que con el comando REVOKE.

GRANT OPTION FOR

Una cláusula que revoca solo la opción de conceder un privilegio especificado a otros usuarios y no revoca el privilegio en sí. No puede revocar GRANT OPTION de un grupo o de PUBLIC.

FROM user_name | ROLE role_name | GROUP group_name

El nombre del usuario o grupo de usuarios de los que se revocan los privilegios especificados de manera predeterminada.

RESTRICT

La opción RESTRICT revoca solo aquellos privilegios que el usuario haya concedido directamente. Esta es la opción predeterminada.

Ejemplos

Supongamos que desea permitir que cualquier usuario del grupo de usuarios report_readers vea todas las tablas y vistas creadas por el usuario report_admin. En este caso, ejecute el siguiente comando como superusuario.

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

En el siguiente ejemplo el primer comando concede privilegios SELECT en todas las tablas y vistas nuevas que crea usted crea.

alter default privileges grant select on tables to public;

En el siguiente ejemplo, se concede un privilegio INSERT al grupo de usuarios sales_admin para todas las tablas y vistas nuevas que usted crea en el esquema sales.

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

En el siguiente ejemplo, se revierte el comando ALTER DEFAULT PRIVILEGES del ejemplo anterior.

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

De manera predeterminada, el grupo de usuarios PUBLIC tiene permiso de ejecución para todas las funciones nuevas definidas por el usuario. Para revocar los permisos de ejecución public para las funciones nuevas y, luego, conceder el permiso de ejecución solo al grupo de usuarios dev_test, ejecute los siguientes comandos.

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