Concesión de permisos en Azure SQL Database for PostgreSQL

Completado

Para permitir que los usuarios accedan a las bases de datos hospedadas en el servidor de Azure Database for PostgreSQL, debe crear roles (usuarios) y conceder o denegar privilegios a objetos de base de datos.

Creación de usuarios de base de datos en Azure Database for PostgreSQL

  1. En Azure Data Studio (o su herramienta de cliente preferida), conéctese al servidor de Azure Database for PostgreSQL con las credenciales de inicio de sesión de administrador.

  2. Con la base de datos pertinente como base de datos actual, use CREATE ROLE con las opciones pertinentes para crear un nuevo rol (usuario).

  3. Como ejemplo, la consulta siguiente:

    1. Crea una base de datos llamada testdb.
    2. Crea un usuario con una contraseña segura.
    3. Concede privilegios de conexión a la base de datos testdb.
    CREATE DATABASE testdb;
    CREATE ROLE <db_user> WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION PASSWORD '<StrongPassword!>';
    GRANT CONNECT ON DATABASE testdb TO <db_user>;
    

    Para probar la consulta, puede reemplazar los marcadores de posición por la información del usuario.

  4. A continuación, puede conceder más privilegios a los objetos de la base de datos. Por ejemplo:

    GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <db_user>;
    

La sintaxis de CREATE ROLE es:

CREATE ROLE name [ [ WITH ] option [ ... ] ]

DONDE option puede ser:

SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]

Los parámetros opcionales son:

  • SUPERUSER | NOSUPERUSER: no se pueden asignar privilegios SUPERUSER dentro de Azure Database for PostgreSQL. Si no se especifica, NOSUPERUSER es el valor predeterminado.
  • CREATEDB | NOCREATEDB: si el rol puede crear bases de datos. El valor predeterminado es NOCREATEDB.
  • CREATEROLE | NOCREATEROLE: si el rol puede crear nuevos roles, es decir, ejecutar CREATE ROLE. Si se concede el privilegio CREATEROLE, el rol también puede modificar y quitar otros roles. NOCREATEROLE es el valor predeterminado.
  • INHERIT | NOINHERIT: si el rol hereda privilegios de roles de los que es miembro directo o indirecto. INHERIT es el valor predeterminado.
  • LOGIN | NOLOGIN: si un rol puede iniciar sesión. Un rol con el atributo LOGIN es un usuario de base de datos. Los roles sin el atributo LOGIN se pueden usar para administrar privilegios de base de datos. NOLOGIN es el valor predeterminado.
  • REPLICATION | NOREPLICATION: si un rol es un rol de replicación. Un rol debe tener este atributo para conectarse al servidor en modo de replicación y para crear o quitar ranuras de replicación. El atributo REPLICATION es un rol con privilegios que solo se debe usar para la replicación. NOREPLICATION es el valor predeterminado. Debe ser miembro de azure_pg_admin para crear este rol.
  • BYPASSRLS | NOBYPASSRLS: si un rol omite todas las directivas de seguridad de nivel de fila (RLS).
  • CONNECTION LIMIT connlimit: especifica cuántas conexiones simultáneas puede establecer un rol que puede iniciar sesión. 1 es el valor predeterminado. Este parámetro no coloca un límite en las conexiones simultáneas.
  • [ ENCRYPTED ] PASSWORD 'password'| PASSWORD NULL: establece la contraseña del rol. Solo los roles con el atributo LOGIN usan una contraseña. Si no se especifica ninguna contraseña, la contraseña es NULL y se producirá un error en la autenticación de contraseña. Como alternativa, indique explícitamente PASSWORD NULL.
  • VALID UNTIL "timestamp": la fecha y hora después de la cual la contraseña del rol ya no es válida. Si se omite, no hay ningún límite de tiempo en la contraseña.
  • IN ROLE role_name: uno o varios roles a los que se agrega el nuevo rol como nuevo miembro. No hay ninguna opción para agregar un nuevo rol como administrador; use el comando GRANT.
  • IN GROUP role_name: una alternativa obsoleta a IN ROLE.
  • ROLE role_name: se agregan uno o varios roles como miembros del nuevo rol. (Esto convierte al nuevo rol en un grupo).
  • ADMIN role_name: la cláusula ADMIN es como ROLE, pero los roles con nombre se agregan al nuevo rol WITH ADMIN OPTION, lo que les da el derecho a conceder la pertenencia a este rol a otros usuarios.

Nota

Puede cambiar los atributos de un rol con ALTER ROLE y quitar un rol con DROP ROLE.