Accede a una base de datos con la autenticación de la base de datos de IAM

En esta página, se describe cómo los usuarios y las cuentas de servicio pueden acceder a las bases de datos de Cloud SQL mediante la autenticación de la base de datos de IAM de Cloud SQL. Para obtener más información sobre la integración de IAM de Cloud SQL, consulta Descripción general de la autenticación de la base de datos de IAM de Cloud SQL.

Antes de comenzar

Usa la autenticación de la base de datos de IAM con el proxy de autenticación de Cloud SQL

Para obtener la experiencia más segura y confiable, se recomienda que te conectes a la base de datos mediante el proxy de autenticación de Cloud SQL cuando uses la autenticación de la base de datos de IAM. La autenticación de la base de datos de IAM usa tokens de acceso de OAuth 2.0, que son de corta duración y solo son válidos durante una hora. El proxy de autenticación de Cloud SQL puede solicitar y actualizar estos tokens, lo que garantiza que el proceso o las aplicaciones de larga duración que se basan en la agrupación de conexiones puedan tener conexiones estables.

En este procedimiento, configuras el proxy de autenticación de Cloud SQL para conectarte a una instancia mediante la autenticación de la base de datos de IAM.

  1. Cuando usas el proxy de Auth de Cloud SQL con la autenticación de la base de datos de IAM, la cuenta de IAM de GCP que usas para iniciar el proxy de Auth de Cloud SQL debe ser la misma cuenta que se autentica en la base de datos. Si deseas obtener más información sobre la autenticación del proxy de Auth de Cloud SQL, consulta Opciones para autenticar el proxy de Auth de Cloud SQL.

  2. Inicia el proxy de autenticación de Cloud SQL con la marca -enable_iam_login.

    Reemplaza lo siguiente:

    ./cloud-sql-proxy -enable_iam_login -instances=INSTANCE_CONNECTION_NAME=tcp:5432
    

    Proxy Para obtener más información sobre cómo iniciar el proxy, consulta Inicia el proxy de autenticación de Cloud SQL.

  3. Cuando estés listo para conectarte al proxy de autenticación de Cloud SQL, usa la dirección de correo electrónico del usuario o cuenta de servicio de IAM como nombre de usuario de la base de datos. En una cuenta de servicio, este es el correo electrónico de la cuenta sin el sufijo de dominio .gserviceaccount.com. Para la contraseña, no uses contraseña ni una contraseña en blanco.

    Para obtener más información sobre cómo conectarte al proxy de autenticación de Cloud SQL, consulta Conéctate mediante el proxy de autenticación de Cloud SQL.

Accede con la autenticación de la base de datos de IAM sin el proxy de autenticación de Cloud SQL

Con el SDK de Cloud, puedes solicitar de manera explícita un token de OAuth 2.0 con el permiso de la API de Administrador de Cloud SQL que se usa para acceder a la base de datos a través del cliente psql. Cuando accedes como usuario de la base de datos con la autenticación de la base de datos de IAM, usas la dirección de correo electrónico como nombre de usuario y el token de acceso como contraseña.

Para usar el SDK de Cloud a fin de generar este token y acceder, usa la siguiente secuencia de comandos:

  1. Autentica y crea el token.

    Usuario

    Autentica en IAM mediante gcloud auth login.

    Para obtener más información, consulta Autoriza con una cuenta de usuario.

    Cuenta de servicio

    Autentica en IAM mediante gcloud auth activate-service-account..

    Para obtener más información, consulta Autoriza el acceso con una cuenta de servicio.

  2. Accede con el cliente mediante el token de acceso guardado.

    Advertencia: Puedes usar el token de OAuth 2.0 para realizar solicitudes autenticadas en tu nombre. Asegúrate de mantenerlo protegido, ten cuidado cuando lo almacenes y controla quién tiene acceso a tu instancia.

    Reemplaza lo siguiente:

    • HOSTNAME: La dirección IP de la instancia, o 127.0.0.1 si usas el proxy de Cloud SQL
    • EMAIL: La dirección de correo electrónico del usuario que se usará para conectarse a la máquina anfitrión En el caso de las cuentas de servicio, este es el correo electrónico de la cuenta de servicio sin el sufijo de dominio .gserviceaccount.com.
    • DATABASE_NAME: El nombre de la base de datos a la que te conectarás
    PGPASSWORD=$(gcloud auth print-access-token) psql --host=HOSTNAME \
                                                    --username=EMAIL \
                                                    --dbname=DATABASE_NAME
    

Próximos pasos