En esta página se explica el proceso para iniciar sesión en una instancia de AlloyDB para PostgreSQL con una cuenta preparada con Gestión de Identidades y Accesos (IAM). En ella se ilustra el proceso
mostrando cómo iniciar sesión con IAM mediante el psql
cliente de línea de comandos.
Para obtener una descripción general de la conexión a instancias de AlloyDB, consulta Descripción general de la conexión.
Antes de empezar
Tu proyecto, clúster, instancias y cuentas de usuario de gestión de identidades y accesos deben prepararse antes de que puedas iniciar sesión en una instancia de AlloyDB con credenciales de gestión de identidades y accesos.
Para obtener más información, consulta Gestionar la autenticación de IAM.
Autenticarse con un token de OAuth 2.0
Un usuario o una aplicación pueden autenticarse en una base de datos de AlloyDB siguiendo estos pasos:
Si aún no lo has hecho, autoriza la CLI de Google Cloud con la misma cuenta de usuario o de servicio con la que quieras iniciar sesión en tu instancia de AlloyDB.
Solicita un token de OAuth 2.0 a Google Cloud con el comando
gcloud auth print-access-token
:gcloud auth print-access-token
El Google Cloud imprime un token de OAuth 2.0 como resultado de este comando.
Para aumentar la seguridad, puedes restringir el token para que solo se use con la autenticación de AlloyDB siguiendo estos pasos alternativos:
Añade el ámbito
alloydb.login
a las credenciales de acceso de tu entorno actual con el comandogcloud auth application-default login
si aún no lo has hecho:gcloud auth application-default login --scopes=https://www.googleapis.com/auth/alloydb.login,https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/userinfo.email,openid
Imprime un token de OAuth 2.0 restringido con el comando
gcloud auth application-default print-access-token
, limitando el token solo a la autenticación de AlloyDB:gcloud auth application-default print-access-token –-scopes=https://www.googleapis.com/auth/alloydb.login
El token de OAuth 2.0 te permite a ti (o a cualquier persona) hacer solicitudes autenticadas a Google Cloud en tu nombre. Trata el token con el mismo nivel de seguridad que una contraseña. Almacena el token de forma segura o no lo almacenes. El ejemplo de uso de
psql
que se muestra más adelante en esta página muestra una forma de solicitar, usar y descartar un token de OAuth 2.0 en una sola acción.Inicia sesión en una instancia de AlloyDB con técnicas estándar de PostgreSQL usando estas credenciales:
Presenta el token de acceso que has obtenido en el paso anterior como contraseña.
En el caso de una cuenta de usuario de IAM, el nombre de usuario de la base de datos es la dirección de correo completa de la cuenta.
En el caso de una cuenta de servicio de IAM, el nombre de usuario de la base de datos es la dirección de correo de la cuenta sin el sufijo
.gserviceaccount.com
.
El siguiente comando psql
muestra una forma de iniciar sesión en un usuario de IAM en la línea de comandos. Asigna la salida de gcloud
auth print-access-token
a la variable de entorno PGPASSWORD
, que psql
posteriormente usa como contraseña de inicio de sesión de la base de datos.
PGPASSWORD=$(gcloud auth print-access-token) psql \
-h INSTANCE_ADDRESS \
-U USERNAME \
-d DATABASE
Haz los cambios siguientes:
INSTANCE_ADDRESS
: la dirección IP de la instancia de AlloyDB a la que conectarse.USERNAME
: identificador del usuario de gestión de identidades y accesos para autenticar la instancia.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
.DATABASE
: nombre de la base de datos a la que se va a conectar.
Ten en cuenta que psql
trunca las contraseñas introducidas en la línea de comandos que tengan más de 100 caracteres. Para usar psql
con un token de OAuth 2.0 como contraseña de inicio de sesión, debes definir la variable de entorno PGPASSWORD
como se muestra en este ejemplo, en lugar de pegarla manualmente cuando se te solicite.
Autenticar automáticamente
Para autenticar automáticamente a un usuario de AlloyDB basado en IAM sin necesidad de un token de OAuth 2.0, tienes dos opciones: AlloyDB Auth Proxy y conectores de lenguaje de AlloyDB.
La cuenta de gestión de identidades y accesos que uses para ejecutar el cliente proxy o los conectores de idiomas debe ser la misma que hayas añadido como usuario de la base de datos. Por ejemplo, si ejecutas tu carga de trabajo con la cuenta de usuario de IAM kai@altostrat.com
, puedes usar el cliente proxy o los conectores de lenguaje para autenticar automáticamente al usuario de la base de datos kai@altostrat.com
sin especificar un token de OAuth 2.0. En este ejemplo, la autenticación automática no funciona con ningún otro usuario de la base de datos, excepto con kai@altostrat.com
.
Proxy de autenticación
Para usar el proxy de autenticación, debes ejecutar el cliente del proxy de autenticación de AlloyDB con la marca --auto-iam-authn
habilitada.
Para obtener más información sobre cómo ejecutar el proxy de autenticación, consulta Conectarse mediante el proxy de autenticación de AlloyDB.
Conectores de idiomas
Para usar Language Connectors, debes habilitar la autenticación de IAM mediante programación. Hay una opción correspondiente para cada idioma en Configurar los conectores de lenguaje de AlloyDB.
Solucionar problemas de autenticación de gestión de identidades y accesos
Para determinar la causa de un intento de autenticación basado en IAM fallido, sigue estos pasos:
En la Google Cloud consola, ve a la página Explorador de registros:
En Tipo de recurso, haz clic en Instancia de AlloyDB.
En Gravedad, haz clic en Alerta.
Si no aparece la opción Alerta, significa que no se ha registrado ningún fallo de autenticación en el periodo seleccionado. Es posible que tengas que ajustar la ventana con los controles del Explorador de registros.
En Resultados de la consulta, consulta las entradas de registro de uno de los siguientes mensajes:
Request had invalid authentication credentials.
- El token de acceso no es válido.
Caller does not have required permission to use project.
- La entidad principal de gestión de identidades y accesos no tiene los roles de gestión de identidades y accesos o los permisos necesarios. En el mensaje de error completo se especifican los roles o permisos que faltan.
IAM principal does not match database user.
El principal de IAM autenticado especificado por el token de acceso no coincide con el usuario de la base de datos con el que quieres conectarte.
Para ver la entidad de seguridad especificada por el token, ejecuta el siguiente comando:
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=ACCESS_TOKEN" https://www.googleapis.com/oauth2/v1/tokeninfo
Sustituye
ACCESS_TOKEN
por el token de acceso OAuth 2.0.Request had insufficient scopes.
- El token de acceso no contiene el ámbito
alloydb.login
ni el ámbitocloud-platform
. Se requiere al menos uno de estos ámbitos.