En esta página se explica cómo preparar tu instancia de AlloyDB para PostgreSQL para permitir la autenticación de bases de datos a través de Identity and Access Management (IAM).
La autenticación de gestión de identidades y accesos complementa la autenticación de bases de datos mediante usuarios estándar de PostgreSQL, que admite todos los clústeres de AlloyDB. Si habilitas la autenticación de IAM en tu clúster, podrás usar los 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, sigue estos pasos:
Habilita manualmente la autenticación de IAM en cada instancia a la que necesiten conectarse los usuarios o las cuentas de servicio de IAM.
Para cada usuario de IAM o cuenta de servicio que necesite iniciar sesión como usuario de la base de datos, sigue estos pasos:
Con las herramientas de administrador de IAM, concede a ese usuario o cuenta de servicio los roles
alloydb.databaseUser
yserviceusage.serviceUsageConsumer
.Con la CLI de Google Cloud, crea un usuario de base de datos correspondiente a ese usuario o cuenta de servicio en tu clúster de AlloyDB.
Con una cuenta de administrador de la base de datos, como
postgres
, concede privilegios de acceso al nuevo usuario de la base de datos en las tablas de la base de datos correspondientes.
Puedes repetir estos pasos siempre que necesites añadir más usuarios de gestión de identidades y accesos a tu clúster de AlloyDB.
Habilitar o inhabilitar la autenticación de IAM
Para habilitar la autenticación de gestión de identidades y accesos en una instancia, define la marca alloydb.iam_authentication
de esa instancia como on
.
Para inhabilitar la autenticación de IAM en una instancia, vuelve a asignar a alloydb.iam_authentication
su valor predeterminado, off
.
Para obtener más información sobre cómo definir marcas en instancias de AlloyDB, consulta el artículo Configurar marcas de bases de datos de una instancia.
Conceder acceso a una instancia a un usuario o una cuenta de servicio de IAM
Para habilitar el acceso de gestión de identidades y accesos a un nuevo usuario de base de datos, debes seguir estos dos pasos:
Actualiza la configuración de gestión de identidades y accesos de tu proyecto para conceder acceso a la base de datos de AlloyDB a la cuenta de servicio o al usuario de gestión de identidades y accesos adecuados.
Crea un usuario de base de datos en tu clúster y asigna como nombre de usuario la dirección de correo del usuario de gestión de identidades y accesos o de la cuenta de servicio.
Puedes repetir el paso dos para dar acceso a una cuenta de IAM a otros clústeres de tu proyecto.
Actualizar una cuenta de gestión de identidades y accesos con el rol adecuado
Puedes dar a los usuarios o cuentas de servicio de gestión de identidades y accesos la capacidad de autenticarse con instancias de AlloyDB concediéndoles los siguientes roles de gestión de identidades y accesos:
alloydb.databaseUser
: permite que el usuario se conecte a tu instancia de AlloyDB.serviceusage.serviceUsageConsumer
: proporciona al usuario acceso a una API que comprueba los permisos.
Para hacerlo, sigue las instrucciones de la sección Conceder acceso a otros usuarios. En el paso en el que seleccionas un rol para concederlo a la entidad de gestión de identidades y accesos, elige alloydb.databaseUser
.
Añadir un usuario o una cuenta de servicio de IAM a un clúster
Consola
Ve a la página Clústeres.
Haz clic en el nombre del clúster al que quieras añadir un usuario.
Haz clic en Usuarios.
Haz clic en Añadir cuenta de usuario.
Selecciona Cloud IAM.
En el campo Principal (Principal), introduce el principal de IAM.
En el caso de una cuenta de usuario de IAM, proporciona la dirección de correo completa de la cuenta de usuario. Por ejemplo,
kai@altostrat.com
.En el caso de una cuenta de servicio de gestión de identidades y accesos, 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
, usarías el valormy-service@my-project.iam
.Para asignar al usuario roles distintos del
alloydbsuperuser
predeterminado, sigue estos pasos:- Introduce el nombre del rol en Roles.
- Para añadir el rol, pulsa Intro o Tabulador.
Selecciona x en los roles que quieras quitar a ese usuario.
Para obtener más información, consulta el artículo Roles predefinidos.
Haz clic en Añadir.
gcloud
Para crear un usuario de base de datos de PostgreSQL basado en un usuario de gestión de identidades y accesos o en una cuenta de servicio, usa el comando gcloud alloydb users create
.
gcloud alloydb users create USERNAME \
--cluster=CLUSTER \
--region=REGION \
--type=IAM_BASED
Sustituye las siguientes variables:
USERNAME
: identificador del usuario de gestión de identidades y accesos que quieres añadir como nuevo usuario de la base de datos.En el caso de una cuenta de usuario de IAM, proporciona la dirección de correo completa de la cuenta de usuario. Por ejemplo,
kai@altostrat.com
.En el caso de una cuenta de servicio de gestión de identidades y accesos, 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
, usarías el valormy-service@my-project.iam
.CLUSTER
: ID del clúster en el que se creará esta cuenta de usuario de la base de datos.REGION
: ID de la región en la que se encuentra el clúster. Por ejemplo,us-central1
.
Conceder los permisos de base de datos adecuados a los usuarios de gestión de identidades y accesos
Cuando se añade un usuario de gestión de identidades y accesos a una instancia de base de datos, ese usuario no tiene ningún privilegio en ninguna base de datos de forma predeterminada.
Cuando un usuario o una cuenta de servicio se conecta a una base de datos, puede ejecutar consultas en cualquier objeto de la base de datos cuyo acceso se haya concedido a PUBLIC.
Si necesitan más acceso, se pueden conceder más privilegios mediante la instrucción GRANT
de PostgreSQL.
GRANT SELECT ON TABLE_NAME TO "USERNAME";
Sustituye las siguientes variables:
USERNAME
: dirección de correo del usuario. Debes incluir comillas dobles en la dirección.TABLE_NAME
: nombre de la tabla a la que quieres dar acceso al usuario.
Quitar un usuario o una cuenta de servicio de IAM de un clúster
Consola
Ve a la página Clústeres.
Haz clic en el nombre del clúster del que quieras quitar al usuario.
Haz clic en Usuarios.
En la fila que representa al usuario que quieres quitar, haz clic en
Abrir acciones de este usuario.Selecciona Quitar.
En el cuadro de diálogo ¿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
Haz los cambios siguientes:
USERNAME
: identificador del usuario de gestión de identidades y accesos que quieres quitar del clúster.En el caso de una cuenta de usuario de IAM, proporciona la dirección de correo completa de la cuenta de usuario. Por ejemplo,
kai@altostrat.com
.En el caso de una cuenta de servicio de gestión de identidades y accesos, 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
, usarías el valormy-service@my-project.iam
.CLUSTER
: ID del clúster del que se va a quitar este usuario.REGION
: ID de la región en la que se encuentra el clúster. Por ejemplo,us-central1
.