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
Ve a la página Clústeres.
Haz clic en el nombre del clúster al que deseas agregar un usuario.
Haz clic en Usuarios.
Haz clic en Agregar cuenta de usuario.
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.
Ingresa un nombre de usuario y una contraseña para el usuario nuevo.
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
Ve a la página Clústeres.
Haz clic en el nombre del clúster que contiene el usuario de la base de datos cuya contraseña deseas cambiar.
Haz clic en Usuarios.
En la fila que representa al usuario cuya contraseña deseas cambiar, haz clic en
Abrir acciones para este usuario.Selecciona Cambiar contraseña.
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.
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 usuarioCLUSTER_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
Ve a la página Clústeres.
Haz clic en el nombre del clúster cuyos usuarios deseas ver.
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
Ve a la página Clústeres.
Haz clic en el nombre del clúster del que quieres quitar al usuario.
Haz clic en Usuarios.
En la fila que representa al usuario que quieres quitar, haz clic en
Abrir acciones para este usuario.Selecciona Quitar.
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
.