Conéctate con una cuenta de IAM

Para autenticarte en una instancia de AlloyDB para PostgreSQL con credenciales de Identity and Access Management (IAM) en lugar de contraseñas de base de datos integradas, puedes acceder con un token de acceso de OAuth 2.0 o configurar la autenticación automática de IAM. También puedes acceder con IAM con el cliente de línea de comandos de psql.

Para obtener una descripción general de cómo conectarte a las instancias de AlloyDB, consulta Descripción general de la conexión.

Antes de comenzar

Tu proyecto, clúster, instancias y cuentas de usuario de IAM requieren preparación antes de que puedas acceder a una instancia de AlloyDB con credenciales de IAM.

Para obtener más información, consulta Administra la autenticación de IAM.

Autentica con un token de OAuth 2.0

Un usuario o una aplicación puede autenticarse con una base de datos de AlloyDB siguiendo estos pasos:

  1. Si aún no lo hiciste, autentícate en Google Cloud CLI con la misma cuenta de usuario o de servicio con la que deseas acceder a tu instancia de AlloyDB.

  2. Solicita un token de OAuth 2.0 de Google Cloud con el comando gcloud auth print-access-token:

    gcloud auth print-access-token

    Google Cloud imprime un token de OAuth 2.0 como el resultado de este comando.

    Para obtener seguridad adicional, puedes restringir el token para usarlo solo con la autenticación de AlloyDB siguiendo estos pasos alternativos:

    1. Agrega el permiso alloydb.login a las credenciales de acceso de tu entorno actual con el comando gcloud auth application-default login, si aún no lo hiciste:

      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
    2. Imprime un token de OAuth 2.0 restringido con el comando gcloud auth application-default print-access-token, y limita 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, realizar 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 evita almacenarlo. El ejemplo de uso de psql que se muestra más adelante en esta página ilustra una forma de solicitar, usar y descartar un token de OAuth 2.0 en una sola acción.

  3. Accede a una instancia de AlloyDB con técnicas estándar de PostgreSQL con estas credenciales:

    • Presenta el token de acceso que adquiriste en el paso anterior como tu 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 electrónico 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 electrónico de la cuenta sin el sufijo .gserviceaccount.com.

El siguiente comando de psql muestra una forma de acceder a un usuario de IAM en la línea de comandos. Asigna el resultado de gcloud auth print-access-token a la variable de entorno PGPASSWORD, que psql usa posteriormente como contraseña de acceso a la base de datos.

PGPASSWORD=$(gcloud auth print-access-token) psql \
  -h INSTANCE_ADDRESS \
  -U USERNAME \
  -d DATABASE

Reemplaza lo siguiente:

  • INSTANCE_ADDRESS: Es la dirección IP de la instancia de AlloyDB a la que se conectará.

  • USERNAME: Es un identificador para que el usuario de IAM se autentique con la instancia.

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

  • DATABASE: El nombre de la base de datos a la que te conectarás.

Ten en cuenta que psql trunca las contraseñas ingresadas en la línea de comandos que tienen más de 100 caracteres. Para usar psql con un token de OAuth 2.0 como contraseña de acceso, debes configurar la variable de entorno PGPASSWORD como se muestra en este ejemplo, en lugar de pegarla de forma manual 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: el proxy de autenticación de AlloyDB y los conectores de lenguaje de AlloyDB.

La cuenta de IAM que usas para ejecutar el cliente proxy o los conectores de lenguaje debe ser la misma cuenta que agregaste como usuario de la base de datos. Por ejemplo, si ejecutas tu carga de trabajo con la cuenta de usuario de IAM kai@example.com, puedes usar el cliente proxy o los conectores de lenguaje para autenticar automáticamente al usuario de la base de datos kai@example.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 kai@example.com.

Proxy de autenticación

Para usar el proxy de autenticación, se debe ejecutar el cliente del proxy de autenticación con la marca --auto-iam-authn habilitada.

Para obtener más información sobre cómo ejecutar el proxy de autenticación, consulta Conéctate con el proxy de autenticación de AlloyDB.

Conectores de lenguaje

Para usar los conectores de lenguaje, se debe habilitar la autenticación de IAM de manera programática. Para el conector de Python de AlloyDB, la autenticación automática de IAM (enable_iam_auth=True) es compatible con los controladores pg8000 y asyncpg. Hay una opción correspondiente para cada lenguaje en Configura los conectores de lenguajes para AlloyDB.

¿Qué sigue?