Administra la autenticación de IAM

En esta página, se explica cómo preparar tu instancia de AlloyDB para PostgreSQL para permitir la autenticación de la base de datos a través de Identity and Access Management (IAM).

La autenticación de IAM complementa la autenticación de la base de datos a través de usuarios estándar de PostgreSQL, que admite cada clúster de AlloyDB. Si habilitas la autenticación de IAM en tu clúster, puedes usar roles de usuario de IAM o de PostgreSQL para autenticarte en ese clúster.

De forma predeterminada, una instancia de AlloyDB no tiene habilitada la autenticación de IAM. Para habilitar la autenticación de IAM, completa los siguientes pasos:

Puedes repetir estos pasos cuando necesites agregar más usuarios de IAM a tu clúster de AlloyDB.

Habilita o inhabilita la autenticación de IAM

Para habilitar la autenticación de IAM en una instancia, establece la marca alloydb.iam_authentication en esa instancia como on.

Para inhabilitar la autenticación de IAM en una instancia, restablece alloydb.iam_authentication a su valor predeterminado, off.

Para obtener más información sobre cómo configurar marcas en instancias de AlloyDB, consulta Configura las marcas de base de datos de una instancia.

Otorga acceso a una instancia a un usuario o una cuenta de servicio de IAM

Habilitar el acceso de IAM a un usuario nuevo de la base de datos es un proceso de dos pasos:

  1. Actualiza la configuración de IAM de tu proyecto para otorgar acceso a la base de datos de AlloyDB al usuario o la cuenta de servicio de IAM adecuados.

  2. Crea un usuario de base de datos nuevo en tu clúster y configura el nombre de usuario como la dirección de correo electrónico del usuario de IAM o la cuenta de servicio.

Puedes repetir el paso dos para otorgar acceso a una cuenta de IAM a otros clústeres dentro de tu proyecto.

Actualiza una cuenta de IAM con el rol adecuado

Puedes otorgar a los usuarios o las cuentas de servicio de IAM la capacidad de autenticarse en instancias de AlloyDB si les otorgas los siguientes roles de IAM:

  • alloydb.databaseUser: Permite que el usuario se conecte a tu instancia de AlloyDB.
  • serviceusage.serviceUsageConsumer: Proporciona al usuario acceso a una API que verifica los permisos.

Para ello, sigue las instrucciones en Otorga acceso a otros usuarios. En el paso en el que seleccionas un rol para otorgarle al principal de IAM, elige alloydb.databaseUser.

Agrega un usuario o una cuenta de servicio de IAM a un clúster

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. Selecciona Cloud IAM.

  6. En el campo Principal, ingresa la principal de IAM.

    En el caso de una cuenta de usuario de IAM, proporciona la dirección de correo electrónico completa de la cuenta de usuario. Por ejemplo, kai@altostrat.com.

    En el caso de una cuenta de servicio de IAM, proporciona la dirección de la cuenta de servicio sin el sufijo .gserviceaccount.com. Por ejemplo, para especificar la cuenta de servicio my-service@my-project.iam.gserviceaccount.com, usarías el valor my-service@my-project.iam aquí.

  7. Para asignar roles que no sean el alloydbsuperuser predeterminado al usuario, sigue estos pasos:

    1. Ingresa el nombre del rol en Roles.
    2. Para agregar el rol, presiona Intro o Tab.
    3. Selecciona x para cualquier rol que quieras quitarle a ese usuario.

      Para obtener más información, consulta Roles predefinidos.

  8. Haz clic en Agregar.

gcloud

Para crear un usuario de la base de datos de PostgreSQL basado en un usuario de IAM o una cuenta de servicio, usa el comando gcloud alloydb users create.

gcloud alloydb users create USERNAME \
--cluster=CLUSTER \
--region=REGION \
--type=IAM_BASED

Reemplaza las siguientes variables:

  • USERNAME: Es el identificador del usuario de IAM que deseas agregar como un nuevo usuario de la base de datos.

    En el caso de una cuenta de usuario de IAM, proporciona la dirección de correo electrónico completa de la cuenta de usuario. Por ejemplo, kai@altostrat.com.

    En el caso de una cuenta de servicio de IAM, proporciona la dirección de la cuenta de servicio sin el sufijo .gserviceaccount.com. Por ejemplo, para especificar la cuenta de servicio my-service@my-project.iam.gserviceaccount.com, usarías el valor my-service@my-project.iam aquí.

  • CLUSTER: Es el ID del clúster en el que se creará esta cuenta de usuario de la base de datos.

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

Otorga los permisos de base de datos adecuados a los usuarios de IAM

Cuando se agrega un usuario de IAM a una instancia de base de datos, a ese usuario nuevo no se le otorgan privilegios en ninguna base de datos de forma predeterminada.

Cuando un usuario o una cuenta de servicio se conectan a una base de datos, pueden ejecutar consultas en cualquier objeto de la base de datos cuyo acceso se le haya otorgado como PÚBLICO.

Si necesitan acceso adicional, se pueden otorgar más privilegios con la instrucción GRANT de PostgreSQL.

GRANT SELECT ON TABLE_NAME TO "USERNAME";

Reemplaza las siguientes variables:

  • USERNAME: Dirección de correo electrónico del usuario. Debes incluir comillas dobles alrededor de la dirección.

  • TABLE_NAME: Es el nombre de la tabla a la que deseas que se otorgue acceso al usuario.

Quita una cuenta de servicio o un usuario de IAM de un clúster

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 deseas 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.

gcloud

Usa el comando gcloud alloydb users delete.

gcloud alloydb users delete USERNAME \
--cluster=CLUSTER \
--region=REGION

Reemplaza lo siguiente:

  • USERNAME: Es el identificador del usuario de IAM que deseas quitar del clúster.

    En el caso de una cuenta de usuario de IAM, proporciona la dirección de correo electrónico completa de la cuenta de usuario. Por ejemplo, kai@altostrat.com.

    En el caso de una cuenta de servicio de IAM, proporciona la dirección de la cuenta de servicio sin el sufijo .gserviceaccount.com. Por ejemplo, para especificar la cuenta de servicio my-service@my-project.iam.gserviceaccount.com, usarías el valor my-service@my-project.iam aquí.

  • CLUSTER: ID del clúster del que se quitará este usuario.

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

¿Qué sigue?