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, te recomendamos que te conectes a la base de datos con el proxy de autenticación de Cloud SQL cuando uses la autenticación de la base de datos IAM. La autenticación de la base de datos 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 y asegurarse de que el proceso de larga duración o las aplicaciones 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 conectarse a una instancia con la autenticación de la base de datos de IAM.

  1. Cuando usas el proxy de autenticación de Cloud SQL con la autenticación de la base de datos IAM, la cuenta de IAM de GCP que usas para iniciar el proxy de autenticación de Cloud SQL debe ser la misma que se autentica en la base de datos. Si deseas obtener más información sobre cómo autenticar el proxy de autenticación de Cloud SQL, consulta Opciones para autenticar el proxy de autenticación 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 Iniciar el proxy de autenticación de Cloud SQL de Cloud SQL.

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

    Para obtener más información sobre cómo conectarte al proxy de autenticación de Cloud SQL, consulta Cómo conectarse con 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 explícitamente un token de OAuth 2.0 con el alcance 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 un usuario de base de datos con autenticación de base de datos IAM, usas tu dirección de correo electrónico como nombre de usuario y 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 mediante cuentas 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