En esta página, se describe cómo preparar tu instancia de AlloyDB para PostgreSQL para facilitar la autenticación de bases de datos con Identity and Access Management (IAM).
La autenticación de IAM complementa la autenticación de bases de datos a través de usuarios estándar de PostgreSQL, que admite cada clúster de AlloyDB.
Puedes autenticarte con cuentas individuales o grupos:
- Cuentas individuales: Agrega cada usuario o cuenta de servicio de IAM al clúster. Puedes usar IAM o roles de usuario de PostgreSQL para autenticarte en ese clúster.
- Grupos: Agrega un grupo de IAM al clúster. Todos los miembros (usuarios y cuentas de servicio) de ese grupo heredan los permisos para autenticarse. Esto te permite administrar el acceso a través de la administración de la pertenencia a un grupo sin agregar a cada miembro al clúster 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:
- Habilita la autenticación individual o de grupo de IAM en tu instancia.
- Otorga los roles necesarios a la cuenta o el grupo.
- Agrega la cuenta o el grupo a tu clúster.
- Otorga privilegios de base de datos a la cuenta o al grupo.
Cómo habilitar y cómo inhabilitar la autenticación de IAM
Para habilitar la autenticación de IAM en una instancia, configura las marcas de la base de datos.
- Para la autenticación individual, establece
alloydb.iam_authenticationenon. - Para la autenticación de grupos, establece
alloydb.iam_authenticationyalloydb.iam_group_authenticationenon.
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:
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.
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.
Para otorgar acceso a una cuenta de IAM a otros clústeres de tu proyecto, repite el último paso.
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 que se indican en Otorga acceso a otros usuarios. En el paso en el que seleccionas un rol para otorgarle a la principal de IAM, elige alloydb.databaseUser.
Agrega un usuario o una cuenta de servicio de IAM a un clúster
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.
Selecciona Cloud IAM.
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,
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 serviciomy-service@my-project.iam.gserviceaccount.com, usa el valormy-service@my-project.iam.Para asignar roles que no sean el rol
alloydbsuperuserpredeterminado al usuario, sigue estos pasos:- Ingresa el nombre del rol en Roles.
- Para agregar el rol, presiona Intro o Tab.
Selecciona x para cualquier rol que quieras quitarle a ese usuario.
Para obtener más información, consulta Roles predefinidos.
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_BASEDReemplaza 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,
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 serviciomy-service@my-project.iam.gserviceaccount.com, usa el valormy-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 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
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.
gcloud
Usa el comando gcloud alloydb users delete.
gcloud alloydb users delete USERNAME \
--cluster=CLUSTER \
--region=REGIONReemplaza 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,
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 serviciomy-service@my-project.iam.gserviceaccount.com, usa el valormy-service@my-project.iam.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
Otorga acceso a un grupo de IAM
Para usar la autenticación de grupos (vista previa), agrega un grupo de IAM al clúster de AlloyDB.
Agrega un grupo de IAM a un clúster
Asigna los roles
alloydb.databaseUseryserviceusage.serviceUsageConsumera la cuenta del grupo. Para obtener más información, consulta Actualiza una cuenta de IAM con el rol adecuado.En un clúster, puede haber un máximo de 200 grupos de IAM en cualquier momento. Los grupos inactivos se consideran para este límite.
Los nombres de grupos de IAM solo pueden tener 63 caracteres.
Si tienes un grupo de IAM con un nombre que supera la limitación de longitud, puedes anidarlo en un grupo principal con un nombre válido. Debes agregar el grupo principal al clúster antes de poder usar el grupo anidado.
Para crear un usuario de base de datos para el grupo, usa el comando
gcloud alloydb users createcon la marca--type=IAM_GROUP.gcloud beta alloydb users create GROUP_EMAIL \ --cluster=CLUSTER \ --region=REGION \ --type=IAM_GROUP
Agregar miembros de un grupo automáticamente
Cuando agregas un grupo de IAM a un clúster, todos los miembros (usuarios y cuentas de servicio) de ese grupo heredan los permisos para autenticarse. No es necesario agregar a los miembros de forma individual. Después de que un miembro accede por primera vez, AlloyDB crea una cuenta para él automáticamente.
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 instrucción GRANT desde la línea de comandos de psql:
GRANT SELECT ON TABLE_NAME TO "GROUP_NAME";
GROUP_NAME: Es la dirección de correo electrónico del grupo. Debes usar comillas porque la cadena contiene caracteres especiales.TABLE_NAME: el nombre de la tabla.
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.
Revoca permisos de IAM:
En la consola de Google Cloud , dirígete a la página IAM.
Busca el grupo de IAM del que deseas quitar el acceso.
Quita el rol
roles/alloydb.databaseUsery cualquier otro rol relacionado con AlloyDB que otorgue acceso al clúster. Esta acción impide que los miembros del grupo se autentiquen.
Borra el usuario del grupo del clúster de AlloyDB:
Usa Google Cloud CLI para borrar el usuario que representa el 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_IDReemplaza lo siguiente:
GROUP_EMAIL_ADDRESS: 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.
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.
Asegúrate de tener 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 precompilados.
Ejecuta el siguiente comando de gcloud CLI de Cloud Identity:
gcloud identity groups delete GROUP_EMAIL_ADDRESSCuando revoques el permiso de acceso
alloydb.databaseUserpara 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 existentes de IAM no usan la autenticación de grupos. Para migrarlos, sigue estos pasos:
- Agrega los usuarios a un grupo de IAM.
- Agrega el grupo a tu clúster.
- Asigna al grupo los roles necesarios.
- Asigna privilegios de base de datos al grupo.
- Borra el usuario individual existente de tu clúster. Asegúrate de transferir la propiedad si es tu intención.
Cuando el usuario vuelve a acceder, AlloyDB recrea la cuenta como usuario de grupo.
Soluciona problemas de autenticación de grupo
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:
Enumera los usuarios.
gcloud alpha alloydb users list --cluster=CLUSTER --region=REGIONSi el tipo es
ALLOYDB_IAM_USERoALLOYDB_IAM_SERVICE_ACCOUNT, quita la cuenta. No hereda los privilegios del grupo.Para volver a crear la cuenta con el tipo de grupo correcto, vuelve a acceder a la instancia con la cuenta de usuario o la cuenta de servicio. Acceder nuevamente a la instancia vuelve a crear la cuenta con el tipo de cuenta correcto de
ALLOYDB_IAM_GROUP_USERoALLOYDB_IAM_GROUP_SERVICE_ACCOUNT.