Administra usuarios de PostgreSQL con autenticación estándar

En esta página, se describe cómo crear, administrar y quitar roles, usuarios y grupos de PostgreSQL y AlloyDB para PostgreSQL con los métodos de autenticación estándar de PostgreSQL basados en contraseñas.

Crea usuarios de PostgreSQL en AlloyDB

Cuando creas usuarios de PostgreSQL, solo comienzan 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 nuevo con el cliente psql, puedes asociarlo con un rol diferente o asignarle privilegios diferentes.

Administración de usuarios

Puedes crear y administrar usuarios 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 para poder administrar a los 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.

En su lugar, si deseas crear un usuario de base de datos que use la administración de identidades y accesos (IAM) 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.

    Si deseas usar IAM para autenticar y acceder a tus clúster de bases de datos, debes completar pasos adicionales para preparar tu proyecto y otorgar los permisos adecuados a tu usuario nuevo. Para obtener más información, consulta Cómo administrar la autenticación de IAM.

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

  7. 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 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 las siguientes variables:

  • USERNAME: Es el nombre de usuario del usuario. USERNAME debe seguir las reglas de los identificadores de SQL: sin caracteres especiales o entre comillas dobles. Por ejemplo, db_user_1.

  • PASSWORD: La contraseña del 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 usuario.

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

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

Además, 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 la CLI de gcloud, en lugar de la consola de Google Cloud.

psql

GRANT ROLE to USERNAME;

Reemplaza las siguientes variables:

  • USERNAME: Es el nombre de usuario del usuario.
  • ROLE: Es el rol que se le otorgará al usuario. Por ejemplo, para otorgarle al usuario privilegios de superusuario, bríndale 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 las siguientes variables:

  • USERNAME: Es el nombre de usuario del usuario.

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

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

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

    Reemplaza las siguientes variables:

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

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

    Para otorgarle privilegios de superusuario a un usuario, puedes otorgarle manualmente el rol alloydbsuperuser con 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

    Reemplaza las siguientes variables:

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

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

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 de esta sección.

No puedes cambiar ni establecer 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 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.

  3. Haz clic en Usuarios.

  4. En la fila que representa al usuario, 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, escríbela 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 las siguientes variables:

  • USERNAME: Es el nombre de usuario del usuario.

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

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

  • REGION_ID: Es el ID de la región en la que reside 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, usa psql o la CLI de gcloud, en lugar de la consola de Google Cloud.

psql

Puedes revocar los privilegios otorgados anteriormente de 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 omite los roles que deseas revocar.

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

Reemplaza las siguientes variables:

  • USERNAME: Es el nombre de usuario del usuario.

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

    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 reside el clúster. Por ejemplo, us-central1

Para revocar los privilegios de superusuario, puedes quitar manualmente el rol alloydbsuperuser de un usuario con psql 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 pertenencias a grupos.

\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 que contiene a los usuarios.

  • REGION_ID: Es el ID de la región en la que reside 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 que contiene al usuario.

  3. Haz clic en Usuarios.

  4. En la fila que representa al usuario, 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 al usuario 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 nombre de usuario del usuario.

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

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

¿Qué sigue?