Administra los roles de usuario de AlloyDB

En esta página, se describe cómo funciona AlloyDB para PostgreSQL con los roles de usuario de PostgreSQL.

Acerca de los roles de los usuarios en AlloyDB

Una base de datos de AlloyDB usa el concepto estándar de PostgreSQL de roles. Un rol puede actuar como usuario de una base de datos, un grupo de usuarios o ambos.

Un rol de usuario tiene el privilegio LOGIN que permite a los usuarios acceder al sistema. Un rol de grupo tiene roles de miembro con varios privilegios, que puedes otorgar o revocar a todos los miembros a la vez.

Roles de PostgreSQL predefinidos de AlloyDB

PostgreSQL tiene un conjunto de roles predefinidos con varios privilegios. AlloyDB agrega varios roles de usuario y de grupo a este conjunto de roles predefinidos de PostgreSQL.

En la siguiente tabla, se enumeran los roles de PostgreSQL que predefine AlloyDB:

Nombre del rol Privilegios
alloydbsuperuser CREATEROLE, CREATEDB y LOGIN.
postgres CREATEROLE, CREATEDB y LOGIN.
alloydbimportexport CREATEROLE y CREATEDB.
alloydbagent CREATEROLE y CREATEDB.
alloydbreplica REPLICATION
alloydbiamuser De forma predeterminada, este rol no tiene ningún privilegio.

En las siguientes secciones, se proporciona información sobre algunos de los roles específicos de AlloyDB más utilizados.

El rol de grupo alloydbsuperuser

El rol alloydbsuperuser es un rol predefinido para configurar inicialmente el sistema de bases de datos y realizar otras tareas de superusuario. Este rol tiene los siguientes privilegios:

  • Crear extensiones que requieran privilegios de superusuario
  • Cómo crear activadores de eventos
  • Crea usuarios de replicación
  • Crea suscripciones y publicaciones de replicación

Como servicio administrado, AlloyDB no te permite otorgar a los usuarios el rol superuser de PostgreSQL. En su lugar, puedes otorgarle a cualquier rol de usuario de la base de datos privilegios de superusuario de AlloyDB otorgándole el rol alloydbsuperuser.

El rol de usuario postgres

El usuario postgres es parte del rol alloydbsuperuser. Cuando creas un clúster de AlloyDB, asignas una contraseña al rol de usuario postgres. Luego, accede a tu sistema con el rol de usuario postgres para crear bases de datos, roles adicionales, etcétera.

El rol de usuario alloydbimportexport

Cuando creas un clúster de AlloyDB, se crea el usuario predeterminado, alloydbimportexport, con el conjunto mínimo de privilegios necesarios para las operaciones de importación y exportación.

Puedes crear tus propios usuarios para realizar estas operaciones. Si no creas un usuario alloydbimportexport personalizado, el sistema usará el usuario alloydbimportexport predeterminado para las operaciones de importación y exportación.

El usuario alloydbimportexport es un usuario del sistema. No puedes usar directamente el usuario alloydbimportexport para acceder o realizar otras operaciones en la base de datos de PostgreSQL.

El rol de grupo alloydbiamuser

Los usuarios de la base de datos dentro del rol de grupo alloydbiamuser se autentican con una instancia de AlloyDB a través de Identity and Access Management, en lugar de usar la autenticación estándar de PostgreSQL basada en contraseñas.

AlloyDB no te permite otorgar este rol a los usuarios con el comando GRANT de PostgreSQL ni métodos similares. En su lugar, puedes usar las herramientas administrativas de AlloyDB para crear y administrar usuarios de bases de datos basados en Identity and Access Management. Para obtener más información, consulta Administra la autenticación de IAM.

Crea otros usuarios de PostgreSQL en AlloyDB

Puedes crear otros usuarios o roles de PostgreSQL. Estos usuarios tienen el mismo conjunto de privilegios que el usuario postgres: CREATE ROLE, CREATEDB y LOGIN. Para obtener más información sobre estos privilegios, consulta CREATE ROLE.

Puedes cambiar los privilegios de cualquier usuario con el comando ALTER ROLE. Si creas un usuario nuevo con el cliente psql, puedes asociarlo con una función diferente o asignarle privilegios diferentes.

Administración de usuarios

Puedes crear y administrar roles de usuario de AlloyDB con Google Cloud CLI o con comandos de PostgreSQL. En las siguientes secciones, se muestran tareas comunes de administración de usuarios con cualquiera de los métodos.

Antes de comenzar

Para usar los comandos de PostgreSQL y administrar usuarios en un clúster, necesitas lo siguiente:

  • Acceso a el cliente psql
  • Acceso al usuario de la base de datos postgres o a otro rol de usuario con los privilegios administrativos adecuados

Para usar la consola de Google Cloud o Google Cloud CLI para administrar usuarios en un clúster, este debe tener una instancia principal. Si tu clúster no tiene una instancia principal, debes crear una antes de poder administrar usuarios.

Crea un usuario de base de datos

Para crear un usuario de base de datos que se autentique con la base de datos directamente con un nombre de usuario y una contraseña, también conocida como autenticación integrada, sigue los pasos que se indican en esta sección.

Para crear un usuario de base de datos que use Identity and Access Management para autenticarse, consulta Administra la autenticación de IAM.

Console

  1. Ve a la página Clústeres.

    Ir a los clústeres

  2. Haz clic en el nombre del clúster al que deseas agregar un usuario.

  3. Haz clic en Usuarios.

  4. Haz clic en Agregar cuenta de usuario.

  5. Deja seleccionada la opción Autenticación integrada.

En su lugar, puedes seleccionar IAM de Cloud para crear un usuario de base de datos que use IAM para autenticarse. Esta selección requiere pasos adicionales para preparar tu proyecto y otorgar los permisos adecuados al nuevo usuario de la base de datos. Para obtener más información, consulta Administra la autenticación de IAM.

  1. Ingresa un nombre de usuario y una contraseña para el usuario nuevo.

  2. Haz clic en Agregar.

psql

CREATE USER USERNAME WITH PASSWORD 'PASSWORD';

Para obtener más información sobre cómo crear y definir usuarios de bases de datos, consulta CREATE USER.

Después de crear un rol de usuario, puedes cambiar sus privilegios con el comando ALTER ROLE en el cliente psql.

gcloud

Usa el comando gcloud alloydb users create:

gcloud alloydb users create USERNAME \
--password=PASSWORD \
--cluster=CLUSTER_ID \
--region=REGION_ID

Reemplaza lo siguiente:

  • USERNAME: El nombre de usuario del nuevo rol de usuario.

  • PASSWORD: La contraseña del nuevo rol de usuario Para crear el usuario sin una contraseña, omite este argumento.

  • CLUSTER_ID: Es el ID del clúster al que se agregará el nuevo rol de usuario.

  • REGION_ID: Es el ID de la región en la que se encuentra el clúster, por ejemplo, us-central1.

Después de crear un rol de usuario, puedes cambiar sus privilegios con el comando gcloud alloydb users set-roles.

También puedes otorgar roles o privilegios de superusuario a un usuario mientras lo creas. Para ello, incluye los argumentos --db-roles o --superuser, como se describe en la siguiente sección.

Otorga roles a un usuario de la base de datos

Console

Para otorgar roles a un usuario de base de datos, usa psql o gcloud CLI, en lugar de la consola de Google Cloud.

psql

GRANT ROLE to USERNAME;

Para otorgarle privilegios de superusuario a un usuario, otórgale el rol alloydbsuperuser.

gcloud

Usa el comando gcloud alloydb users set-roles para especificar todos los roles que deseas que tenga el usuario:

gcloud alloydb users set-roles USERNAME \
--db-roles=ROLES \
--cluster=CLUSTER_ID \
--region=REGION_ID

Reemplaza lo siguiente:

  • USERNAME: Es el rol de usuario al que se le otorgarán roles.

  • ROLES: Es una lista separada por comas de todos los roles que deseas que tenga el usuario especificado. Asegúrate de enumerar todos los roles, incluidos los existentes y los nuevos, que deseas asignar al usuario.

    Para encontrar la lista de roles existentes asignados al usuario, ejecuta el siguiente comando:

    gcloud alloydb list users --cluster=CLUSTER_ID --region=REGION_ID
  • CLUSTER_ID: Es el ID del clúster que contiene al usuario.

  • REGION_ID: Es el ID de la región en la que se encuentra el clúster, por ejemplo, us-central1.

Para otorgarle privilegios de superusuario a un usuario, puedes otorgarle manualmente el rol alloydbsuperuser con el comando descrito anteriormente, o bien puedes ejecutar el comando gcloud alloydb users set-superuser con el argumento --superuser=true:

gcloud alloydb users set-superuser USERNAME \
--superuser=true \
--cluster=CLUSTER_ID \
--region=REGION_ID

Cambia la contraseña de un usuario de la base de datos

Para establecer una contraseña nueva para un usuario estándar de la base de datos de PostgreSQL, sigue los pasos que se indican en esta sección.

No puedes cambiar ni establecer la contraseña de un usuario basado en IAM, ya que estos usuarios no usan contraseñas para autenticarse. Para obtener más información, consulta Cómo conectarse con una cuenta de IAM.

Console

  1. Ve a la página Clústeres.

    Ir a los clústeres

  2. Haz clic en el nombre del clúster que contiene el usuario de la base de datos cuya contraseña deseas cambiar.

  3. Haz clic en Usuarios.

  4. En la fila que representa al usuario cuya contraseña deseas cambiar, haz clic en Abrir acciones para este usuario.

  5. Selecciona Cambiar contraseña.

  6. Especifica una contraseña:

    • Para establecer una contraseña nueva para este usuario, escribe la contraseña en el campo Contraseña.

    • Para no establecer una contraseña para este usuario, selecciona la casilla de verificación Sin contraseña.

  7. Haz clic en Aceptar.

psql

ALTER USER USERNAME WITH PASSWORD 'PASSWORD';

Para obtener más información sobre cómo cambiar la contraseña de un usuario, consulta ALTER ROLE.

gcloud

Usa el comando gcloud alloydb users set-password:

gcloud alloydb users set-password USERNAME \
--password=PASSWORD \
--cluster=CLUSTER_ID \
--region=REGION_ID

Reemplaza lo siguiente:

  • USERNAME: Es el nombre de usuario del rol del usuario.

  • PASSWORD: La contraseña nueva que se asignará al rol de usuario

  • CLUSTER_ID: Es el ID del clúster al que pertenece el rol del usuario.

  • REGION_ID: Es el ID de la región en la que se encuentra el clúster, por ejemplo, us-central1.

Cómo revocar un rol de un usuario de la base de datos

Console

Para revocar los roles de un usuario de base de datos, usa psql o gcloud CLI, en lugar de la consola de Google Cloud.

psql

Puedes revocar los privilegios otorgados anteriormente a uno o más roles, o bien revocar la membresía de un usuario en un rol.

REVOKE ROLE FROM USERNAME;

Para quitar los privilegios de superusuario de un usuario, revoca el rol alloydbsuperuser de ese usuario.

gcloud

Para revocar un rol con Google Cloud CLI, usa el comando gcloud alloydb users set-roles para especificar todos los roles que deseas que tenga el usuario y omitir los roles que deseas revocarle.

gcloud alloydb users set-roles USERNAME \
--db-roles=ROLES \
--cluster=CLUSTER_ID \
--region=REGION_ID

Reemplaza lo siguiente:

  • USERNAME: Es el rol del usuario desde el que se revocarán los roles.

  • ROLES: Es una lista separada por comas de todos los roles que deseas que tenga el usuario especificado, sin incluir los roles que se revocarán.

    Para encontrar la lista de todos los roles asignados al usuario, ejecuta el siguiente comando:

    gcloud alloydb list users --cluster=CLUSTER_ID --region=REGION_ID
  • CLUSTER_ID: Es el ID del clúster que contiene al usuario.

  • REGION_ID: Es el ID de la región en la que se encuentra el clúster, por ejemplo, us-central1.

Para revocar los privilegios de superusuario, puedes quitar manualmente el rol alloydbsuperuser de un usuario con el comando descrito anteriormente o ejecutar el comando gcloud alloydb users set-superuser con el argumento --superuser=false.

Cómo ver una lista de usuarios de la base de datos

Console

  1. Ve a la página Clústeres.

    Ir a los clústeres

  2. Haz clic en el nombre del clúster cuyos usuarios deseas ver.

  3. Haz clic en Usuarios.

psql

El comando \du imprime una tabla de todos los usuarios de la base de datos, incluidas sus membresías de grupo.

\du

gcloud

Usa el comando gcloud alloydb users list:

gcloud alloydb users list \
--cluster=CLUSTER_ID \
--region=REGION_ID

Reemplaza lo siguiente:

  • CLUSTER_ID: Es el ID del clúster cuyos usuarios se enumerarán.

  • REGION_ID: Es el ID de la región en la que se encuentra el clúster, por ejemplo, us-central1.

Borrar un usuario de la base de datos

Console

  1. Ve a la página Clústeres.

    Ir a los clústeres

  2. Haz clic en el nombre del clúster del que quieres quitar al usuario.

  3. Haz clic en Usuarios.

  4. En la fila que representa al usuario que quieres quitar, haz clic en Abrir acciones para este usuario.

  5. Selecciona Quitar.

  6. En el cuadro de diálogo ¿Quitar cuenta de usuario?, haz clic en Quitar.

psql

Antes de borrarlo, debes quitarle todos los objetos que posee o reasignar su propiedad, y revocar todos los privilegios que se le hayan otorgado a la función en otros objetos.

DROP ROLE USERNAME;

gcloud

Usa el comando gcloud alloydb users delete:

gcloud alloydb users delete USERNAME \
--cluster=CLUSTER_ID \
--region=REGION_ID

Reemplaza lo siguiente:

  • USERNAME: Es el rol del usuario que se borrará.

  • CLUSTER_ID: Es el ID del clúster del que se quitará el rol de usuario.

  • REGION_ID: Es el ID de la región en la que se encuentra el clúster, por ejemplo, us-central1.

¿Qué sigue?