Gestionar usuarios de PostgreSQL con la autenticación integrada

En esta página se describe cómo crear, gestionar y eliminar roles, usuarios y grupos de PostgreSQL y AlloyDB para PostgreSQL mediante los métodos de autenticación integrados de PostgreSQL basados en contraseñas.

Crear usuarios de PostgreSQL en AlloyDB

Cuando creas usuarios de PostgreSQL, solo empiezan con el privilegio LOGIN. Para obtener más información sobre estos privilegios, consulta CREATE USER.

Puedes cambiar los privilegios de cualquier usuario con el comando ALTER ROLE. Si creas un usuario con el cliente psql, puedes asociarlo a otro rol o asignarle otros privilegios.

Gestionar usuarios

Puedes crear y gestionar usuarios de AlloyDB con la CLI de Google Cloud o mediante comandos de PostgreSQL. En las siguientes secciones se muestran tareas habituales de gestión de usuarios con ambos métodos.

Antes de empezar

Para usar comandos de PostgreSQL con el fin de gestionar usuarios en un clúster, necesitas lo siguiente:

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

Para usar la Google Cloud consola o Google Cloud CLI para gestionar 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 gestionar usuarios.

Crear un usuario de base de datos

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

Para crear un usuario de base de datos que utilice Gestión de Identidades y Accesos (IAM) para autenticarse, consulta Gestionar la autenticación de IAM.

Consola

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

    Ir a Clústeres

  2. Haz clic en el nombre del clúster al que quieras añadir un usuario.

  3. Haz clic en Usuarios.

  4. Haz clic en Añadir cuenta de usuario.

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

    Si quieres usar IAM para autenticarte e iniciar sesión en tus clústeres de bases de datos, debes completar pasos adicionales para preparar tu proyecto y conceder los permisos adecuados a tu nuevo usuario. Para obtener más información, consulta Gestionar la autenticación de IAM.

  6. Introduce un nombre de usuario y una contraseña para el nuevo usuario.

  7. Para asignar al usuario roles distintos del alloydbsuperuser predeterminado, sigue estos pasos:

    1. Introduce el nombre del rol en Roles.
    2. Para añadir el rol, pulsa Intro o Tabulador.
    3. Selecciona x en los roles que quieras quitar a ese usuario.

      Para obtener más información, consulta el artículo Roles predefinidos.

  8. Haz clic en Añadir.

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.

Una vez que hayas creado un usuario, puedes cambiar sus privilegios con el comando ALTER ROLE en el cliente psql.

gcloud

Usa el siguiente comando gcloud alloydb users create:

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

Sustituye las siguientes variables:

  • USERNAME: nombre de usuario del usuario. USERNAME debe seguir las reglas de los identificadores SQL: no puede contener caracteres especiales o debe estar entre comillas dobles. Por ejemplo, db_user_1.

  • PASSWORD: contraseña del usuario. Para crear el usuario sin contraseña, omite este argumento.

  • CLUSTER_ID: ID del clúster al que se añadirá el usuario.

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

Una vez que hayas creado un usuario, puedes cambiar sus privilegios con el comando gcloud alloydb users set-roles.

Además, puedes conceder roles o privilegios de superusuario a un usuario mientras lo creas. Para ello, incluye los argumentos --db-roles o --superuser, tal como se describe en la siguiente sección.

Asignar roles a un usuario de base de datos

Consola

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

psql

GRANT ROLE to USERNAME;

Sustituye las siguientes variables:

  • USERNAME: nombre de usuario del usuario.
  • ROLE: rol que se va a conceder al usuario. Por ejemplo, para dar privilegios de superusuario al usuario, concédele alloydbsuperuser.

gcloud

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

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

Sustituye las siguientes variables:

  • USERNAME: nombre de usuario del usuario.

  • ROLES: lista separada por comas de todos los roles que quieres que tenga el usuario. Asegúrate de incluir todos los roles, tanto los actuales como los nuevos.

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

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

    Sustituye las siguientes variables:

    • CLUSTER_ID: ID del clúster que contiene al usuario.

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

    Para conceder privilegios de superusuario a un usuario, puedes asignarle manualmente el rol alloydbsuperuser mediante psql o 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

    Sustituye las siguientes variables:

    • CLUSTER_ID: ID del clúster que contiene al usuario.

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

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

Para definir una contraseña nueva para un usuario de base de datos PostgreSQL estándar, sigue los pasos de esta sección.

No puedes cambiar ni definir la contraseña de un usuario basado en IAM porque los usuarios de IAM no usan contraseñas para autenticarse. Para obtener más información, consulta Conectarse con una cuenta de gestión de identidades y accesos.

Consola

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

    Ir a Clústeres

  2. Haga clic en el nombre del clúster que contiene el usuario de la base de datos.

  3. Haz clic en Usuarios.

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

  5. Selecciona Cambiar contraseña.

  6. Especifica una contraseña:

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

    • Para no definir ninguna contraseña para este usuario, selecciona la casilla 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 siguiente comando gcloud alloydb users set-password:

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

Sustituye las siguientes variables:

  • USERNAME: nombre de usuario del usuario.

  • PASSWORD: nueva contraseña que se asignará al usuario.

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

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

Revocar un rol de un usuario de base de datos

Consola

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

psql

Puedes revocar los privilegios concedidos anteriormente a uno o varios roles, o bien revocar la pertenencia de un usuario a un rol, como se muestra a continuación:

REVOKE ROLE FROM USERNAME;

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

gcloud

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

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

Sustituye las siguientes variables:

  • USERNAME: nombre de usuario del usuario.

  • ROLES: lista separada por comas de todos los roles que quieres que tenga el usuario. Asegúrate de incluir todos los roles, tanto los actuales como los nuevos.

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

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

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

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

Ver una lista de usuarios de la base de datos

Consola

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

    Ir a Clústeres

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

  3. Haz clic en Usuarios.

psql

Usa el siguiente comando \du para imprimir una tabla de todos los usuarios de la base de datos, incluidos los grupos a los que pertenecen:

\du

gcloud

Usa el siguiente comando gcloud alloydb users list:

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

Haz los cambios siguientes:

  • CLUSTER_ID: ID del clúster que contiene los usuarios.

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

Eliminar un usuario de base de datos

Consola

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

    Ir a Clústeres

  2. Haz clic en el nombre del clúster que contiene el usuario.

  3. Haz clic en Usuarios.

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

  5. Selecciona Quitar.

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

psql

Antes de eliminar un usuario, debes eliminar o reasignar todos los objetos de su propiedad y revocar los privilegios que se le hayan concedido sobre otros objetos. Utiliza lo siguiente:

DROP ROLE USERNAME;

gcloud

Usa el siguiente comando gcloud alloydb users delete:

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

Haz los cambios siguientes:

  • USERNAME: nombre de usuario del usuario.

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

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

Siguientes pasos