Administra la autenticación de IAM

Puedes configurar la autenticación de la base de datos de Identity and Access Management (IAM) en clústeres de AlloyDB para PostgreSQL nuevos o existentes para administrar los accesos y los permisos de la base de datos con cuentas de IAM individuales o grupos de 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 todos los clústeres de AlloyDB admiten.

Puedes autenticarte con cuentas o grupos individuales:

  • Cuentas individuales: Agrega cada usuario o cuenta de servicio de IAM al clúster y administra los permisos por cuenta.

  • Grupos: Agregas un grupo de IAM al clúster para que todos los miembros (usuarios y cuentas de servicio) hereden permisos para autenticarse en instancias principales, instancias de grupos de lectura y AlloyDB Studio sin agregar a cada miembro de forma individual.

La autenticación de IAM está inhabilitada en las instancias de AlloyDB de forma predeterminada.

Para usar la autenticación de IAM, completa los siguientes pasos generales:

  1. Habilita la autenticación individual o de grupos de IAM en tu instancia.
  2. Otorga los roles necesarios a la cuenta o al grupo.
  3. Agrega la cuenta o el grupo a tu clúster.
  4. Otorga privilegios de base de datos a la cuenta o al grupo.

Habilita e inhabilita la autenticación de IAM

Para habilitar la autenticación de IAM en una instancia de un clúster nuevo o existente, establece las marcas de base de datos requeridas:

Para inhabilitar la autenticación de IAM, establece las marcas en off.

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

Otorga acceso a una cuenta individual

Para habilitar el acceso de IAM a un usuario de base de datos nuevo, sigue estos 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 o la cuenta de servicio de IAM.

Para otorgar acceso a una cuenta de IAM a otros clústeres de tu proyecto, repite el último paso.

Actualizar una cuenta de IAM con el rol adecuado

Puedes otorgar a los usuarios o las cuentas de servicio de IAM la capacidad de autenticarse con instancias de AlloyDB asignándoles 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 hacerlo, sigue las instrucciones que se indican en Otorga acceso a otros usuarios. En el paso en el que seleccionas un rol para otorgar a la 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.

    Para una cuenta de usuario de IAM, proporciona la dirección de correo electrónico completa de la cuenta de usuario. Por ejemplo, dana@example.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, usa el valor my-service@my-project.iam.

  7. Para asignar roles distintos del predeterminado alloydbsuperuser 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 en cualquier rol que quieras quitar para 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 o una cuenta de servicio de IAM, 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 usuario nuevo de la base de datos.

    Para una cuenta de usuario de IAM, proporciona la dirección de correo electrónico completa de la cuenta de usuario. Por ejemplo, dana@example.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, usa el valor my-service@my-project.iam.

  • 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 agregas un usuario de IAM a un clúster de AlloyDB, el usuario no tiene privilegios en ninguna base de datos de forma predeterminada, excepto en los objetos de base de datos a los que puede acceder PUBLIC.

Si los usuarios necesitan acceso adicional, otorga más privilegios con la sentencia GRANT de PostgreSQL:

GRANT SELECT ON TABLE_NAME TO "USERNAME";

Reemplaza las siguientes variables:

  • USERNAME: Es la 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 un usuario o una cuenta de servicio 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 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 ¿Quieres quitar la 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.

    Para una cuenta de usuario de IAM, proporciona la dirección de correo electrónico completa de la cuenta de usuario. Por ejemplo, dana@example.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, usa el valor my-service@my-project.iam.

  • CLUSTER: Es el 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

Otorga acceso a un grupo de IAM

Para usar la autenticación de grupo, agrega un grupo de IAM al clúster de AlloyDB.

Agrega un grupo de IAM a un clúster

Antes de agregar un grupo de IAM a un clúster, ten en cuenta los siguientes requisitos:

  • Puede haber un máximo de 200 grupos de IAM en un clúster en cualquier momento. Los grupos inactivos se consideran para este límite.

  • Los nombres de los grupos de IAM no pueden superar los 63 caracteres. Si tienes un grupo de IAM con un nombre que supera los 63 caracteres, puedes anidarlo en un grupo superior con un nombre válido. Debes agregar el grupo superior al clúster para poder usar el grupo anidado.

Para agregar un grupo de IAM a un clúster, sigue estos pasos:

  1. Asigna los roles roles/alloydb.databaseUser y roles/serviceusage.serviceUsageConsumer a la cuenta del grupo. Para obtener más información sobre cómo otorgar estos roles, consulta Actualiza una cuenta de IAM con el rol adecuado.

  2. Para crear un usuario de base de datos para el grupo, ejecuta el comando gcloud alloydb users create con la marca --type=IAM_GROUP:

    gcloud alloydb users create GROUP_EMAIL \
    --cluster=CLUSTER \
    --region=REGION \
    --type=IAM_GROUP

    Reemplaza lo siguiente:

    • GROUP_EMAIL: Es la dirección de correo electrónico completa del grupo de IAM, por ejemplo, my-group@example.com.

    • CLUSTER: Es el ID del clúster al que se agregará el grupo.

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

Agrega miembros de un grupo de forma automática

Cuando agregas un grupo de IAM a un clúster, todos los usuarios y las cuentas de servicio de ese grupo heredan los permisos para autenticarse. No es necesario que agregues a los miembros de forma individual. Los miembros del grupo pueden acceder directamente a las instancias principales, las instancias de grupos de lectura y AlloyDB Studio en la consola de Google Cloud , incluidos los accesos por primera vez a las instancias de grupos de lectura sin conectarse primero a la instancia principal. Cuando un miembro accede por primera vez, AlloyDB crea una cuenta de base de datos para ese principal automáticamente.

Cuando restableces o migras un clúster de AlloyDB desde una copia de seguridad de Cloud SQL para PostgreSQL, AlloyDB asigna y conserva los parámetros de configuración de los usuarios individuales y de los grupos de IAM. Para obtener más información sobre cómo migrar desde una copia de seguridad de Cloud SQL para PostgreSQL, consulta Migra de Cloud SQL para PostgreSQL a AlloyDB.

Otorga privilegios de base de datos a un grupo de IAM

Otorgas privilegios de base de datos a grupos en lugar de a usuarios individuales.

Ejecuta la sentencia GRANT desde la línea de comandos de psql:

GRANT SELECT ON TABLE_NAME TO "GROUP_NAME";

Reemplaza lo siguiente:

  • TABLE_NAME: el nombre de la tabla a la que deseas otorgar acceso al grupo.

  • GROUP_NAME: Es la dirección de correo electrónico del grupo. Incluye comillas dobles alrededor de la dirección porque contiene caracteres especiales.

Borra un grupo de IAM de un clúster

Para borrar un grupo de IAM de un clúster de AlloyDB, revoca los permisos del grupo en la consola de Google Cloud y borra el usuario del grupo correspondiente del clúster de AlloyDB.

  1. Revoca los permisos de IAM:

    1. En la consola de Google Cloud , dirígete a la página IAM.

      Ir a IAM

    2. Busca el grupo de IAM al que quieres quitarle el acceso.

    3. Quita el rol roles/alloydb.databaseUser y cualquier otro rol relacionado con AlloyDB que otorgue acceso al clúster. Esta acción impide que los miembros del grupo se autentiquen.

  2. Borra el usuario del grupo del clúster de AlloyDB:

    Usa Google Cloud CLI para borrar el usuario que representa al grupo de IAM del clúster de AlloyDB. Por lo general, el nombre de usuario es la dirección de correo electrónico del grupo de IAM:

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

    Reemplaza lo siguiente:

    • GROUP_EMAIL_ADDRESS: Es la dirección de correo electrónico completa del grupo de IAM, por ejemplo, my-group@example.com.

    • CLUSTER_ID: Es el ID de tu clúster de AlloyDB.

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

  3. Opcional: Borra el grupo de Cloud Identity:

    Necesitas privilegios de administrador adecuados (como administrador de grupos) en tu cuenta de Cloud Identity para borrar grupos. Por lo general, los propietarios de grupos solo pueden borrar los grupos que les pertenecen.

    Los cambios en los permisos de IAM y las membresías de grupos pueden tardar en propagarse, posiblemente 15 minutos o más.

    1. Asegúrate de tener los privilegios de administrador adecuados, como administrador de grupos, en tu cuenta de Cloud Identity. Los propietarios de grupos solo pueden borrar los grupos que les pertenecen. Para obtener más información, consulta Roles de administrador predefinidos.

    2. Ejecuta el siguiente comando de gcloud CLI de Cloud Identity:

      gcloud identity groups delete GROUP_EMAIL_ADDRESS
    3. Cuando revoques el permiso de acceso alloydb.databaseUser para un grupo de IAM en Cloud Identity, también debes borrar el grupo del clúster de AlloyDB para asegurarte de que se quite el acceso por completo.

Migra usuarios existentes a la autenticación de grupos de IAM

Los usuarios individuales de IAM existentes no usan la autenticación de grupos. Para migrarlos, sigue estos pasos:

  1. Agrega los usuarios a un grupo de IAM.
  2. Agrega el grupo a tu clúster.
  3. Asigna al grupo los roles necesarios.
  4. Asigna privilegios de base de datos al grupo.
  5. Borra el usuario individual existente de tu clúster. Asegúrate de transferir la propiedad si es lo que quieres.

Cuando el usuario vuelve a acceder, AlloyDB vuelve a crear la cuenta como un usuario de grupo.

Soluciona problemas de autenticación de grupos

Usa la siguiente información para solucionar problemas de autenticación de grupos.

Una cuenta existente no hereda privilegios

Si una cuenta no hereda privilegios de un grupo, sigue estos pasos:

  1. Enumera los usuarios del clúster:

    gcloud alloydb users list \
        --cluster=CLUSTER \
        --region=REGION

    Reemplaza lo siguiente:

    • CLUSTER: Es el ID de tu clúster de AlloyDB.

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

  2. Si la cuenta tiene el tipo ALLOYDB_IAM_USER, quítala del clúster. Las cuentas con el tipo ALLOYDB_IAM_USER no heredan los privilegios del grupo.

  3. Para volver a crear la cuenta con el tipo de usuario de grupo, vuelve a acceder a la instancia con la cuenta de usuario o de servicio. Acceder nuevamente a la instancia vuelve a crear la cuenta con el tipo de cuenta ALLOYDB_IAM_GROUP_USER o ALLOYDB_IAM_GROUP_SERVICE_ACCOUNT.

¿Qué sigue?