Todos los productos
Search
Centro de documentos

AnalyticDB:Gestión de permisos de cuenta

Última actualización: Sep 09, 2026

Las cuentas estándar en AnalyticDB for PostgreSQL no tienen permisos de forma predeterminada. Las cuentas con privilegios (incluida la cuenta inicial) otorgan acceso a las cuentas estándar mediante dos métodos:

  • Otorgamiento directo: asigne permisos específicos sobre objetos individuales de la base de datos a una cuenta.

  • Otorgamiento basado en roles: cree un rol, otórguele permisos y asígnelo a varias cuentas. Este método simplifica la gestión de permisos cuando se trabaja con muchas cuentas.

Requisitos previos

Antes de empezar, compruebe que cuenta con lo siguiente:

  • Una cuenta con privilegios o el permiso RDS_SUPERUSER

  • Las cuentas y los objetos de la base de datos que desea gestionar

Otorgar permisos sobre objetos de la base de datos

Cuando se crea un objeto en la base de datos —como una base de datos, un esquema, una tabla, una vista, una secuencia o una función—, todos los permisos sobre ese objeto pertenecen a su propietario. De forma predeterminada, solo el propietario y las cuentas con el permiso RDS_SUPERUSER pueden operar sobre el objeto. El resto de las cuentas requiere un otorgamiento explícito.

A continuación se muestran los permisos disponibles para cada tipo de objeto.

Objeto

Permisos

Tablas, vistas y secuencias

SELECT, INSERT, UPDATE, DELETE, RULE, ALL

Columnas de tabla

SELECT, INSERT, UPDATE

Tablas externas

SELECT, RULE, ALL

Bases de datos

CONNECT, CREATE, TEMPORARY

TEMP, ALL

Funciones

EXECUTE

Lenguajes procedimentales

USAGE

Esquemas

CREATE, USAGE, ALL

Importante

Los permisos se limitan al alcance de cada tipo de objeto. La instrucción GRANT ALL sobre una base de datos otorga únicamente CONNECT, CREATE y TEMP; no concede acceso a las tablas contenidas en ella. Otorgue los permisos de tabla por separado.

A continuación se muestran ejemplos comunes de operaciones para otorgar y revocar permisos.

Otorgue el permiso INSERT sobre la tabla mytable a jsmith:

GRANT INSERT ON mytable TO jsmith;

Otorgue SELECT y TRUNCATE sobre todas las tablas existentes en el esquema myschema a jsmith:

GRANT SELECT,TRUNCATE ON ALL TABLES IN SCHEMA myschema TO jsmith;

Otorgue SELECT sobre la columna col1 de mytable a jsmith:

GRANT SELECT (col1) on TABLE mytable TO jsmith;

Revoque todos los permisos sobre mytable de jsmith:

REVOKE ALL PRIVILEGES ON mytable FROM jsmith;

Otorgar permisos basados en roles

El otorgamiento basado en roles resulta útil cuando varias cuentas necesitan el mismo conjunto de permisos. Otorgue los permisos a un rol una sola vez y asígnelo a cualquier cantidad de cuentas. Todas las cuentas asignadas heredan automáticamente los permisos del rol.

El siguiente ejemplo muestra el flujo de trabajo completo.

  1. Cree un rol llamado admin con los atributos CREATEROLE y CREATEDB:

    CREATE ROLE admin CREATEROLE CREATEDB;
  2. Asigne el rol admin a john, sally y bob:

    GRANT admin TO john, sally, bob;
  3. Para quitar el rol de una cuenta específica, revoque la asignación:

    REVOKE admin FROM bob;
  4. Otorgue permisos sobre los objetos de la base de datos al rol admin. Todas las cuentas que tengan este rol heredarán dichos permisos:

    GRANT ALL ON TABLE mytable TO admin;
    GRANT ALL ON SCHEMA myschema TO admin;
    GRANT ALL ON DATABASE mydb TO admin;

Preguntas frecuentes

¿Cómo otorgo el permiso DROP TABLE?

La instrucción GRANT no permite otorgar DROP TABLE directamente. Solo el propietario de una tabla o de un esquema puede eliminarlo.

Para permitir que una sola cuenta elimine una tabla, cambie el propietario de la tabla a dicha cuenta:

-- new_owner can now drop mytable
ALTER Table mytable OWNER TO new_owner;

-- new_owner can now drop mytable and all other tables in myschema
ALTER SCHEMA myschema OWNER TO new_owner;

Si necesita que varias cuentas eliminen la misma tabla, transfiera la propiedad a un rol y asigne ese rol a cada cuenta:

-- Create a role to hold ownership
CREATE ROLE new_role;

-- Transfer ownership to the role
ALTER Table mytable OWNER TO new_role;
ALTER SCHEMA myschema OWNER TO new_role;

-- Grant the role to any account that needs drop access
GRANT new_role TO myuser;

Temas relacionados