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, consulta Descripción general de la autenticación de la base de datos de IAM de Cloud SQL.

Antes de comenzar

Accede con autenticación de base de datos de IAM automática

Puedes configurar un conector de Cloud SQL para manejar de forma automática la autenticación en la instancia de Cloud SQL en nombre de un usuario o una aplicación. Los conectores incluyen el proxy de autenticación de Cloud SQL, el conector de Java y el conector de Python, que son compatibles con la autenticación automática de la base de datos de IAM. Cuando usas un conector de Cloud SQL con autenticación automática de la base de datos de IAM, la cuenta de IAM que usas para iniciar el conector debe ser la misma que se autentica en la base de datos. Si deseas obtener más información, consulta Opciones para autenticar el proxy de autenticación de Cloud SQL.

Para acceder con la autenticación automática de la base de datos de IAM, sigue estos pasos:

Proxy de Cloud SQL Auth

  1. 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
    

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

  2. Cuando estés listo para que el cliente se conecte 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 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.

    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 autenticación de base de datos manual de IAM

Nota: Si planeas usar el proxy de autenticación de Cloud SQL, el conector de Java o el conector de Python, consulta Accede con el modelo automático.

Un usuario o una aplicación puede autenticarse en la base de datos mediante la solicitud manual de un token de acceso desde Google Cloud y presentarlo en la base de datos. Con el SDK de Cloud, puedes solicitar de forma explícita un token de OAuth 2.0 con el permiso de la API de Cloud SQL que se usa para acceder a la base de datos a través del cliente . Cuando accedes como un usuario de la base de datos con la autenticación manual de la base de datos de IAM, usas tu dirección de correo electrónico como nombre de usuario y el token de acceso como contraseña. Puedes usar este método con una conexión directa a la base de datos o con un conector de Cloud SQL.

En estos pasos, debes autenticarte en Google Cloud, solicitar un token de acceso y, luego, conectarte a la base de datos si pasas el token como la contraseña para el usuario de la base de datos de IAM.

Usa el SDK de Cloud para generar este token y acceder:

gcloud

  1. Autentica en Google Cloud.

    User

    Autentica en IAM mediante gcloud auth login. Para obtener más información, consulta Autoriza el acceso con una cuenta de usuario.

    Cuenta de servicio

    Autentica en IAM mediante gcloud auth activate-service-account. Para obtener más información, consulta Autenticar con una cuenta de servicio.

  2. Solicita el token de acceso y accede con un cliente.

    Reemplaza lo siguiente:

    • HOSTNAME: la dirección IP de la instancia
    • USERNAME: El nombre de usuario es la dirección de correo electrónico que usarás para conectarte 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=USERNAME
    --dbname=DATABASE_NAME

¿Qué sigue?