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 Autenticación de IAM.
Antes de comenzar
- Configura la instancia para usar la autenticación de la base de datos de IAM. Si quieres obtener más información, consulta Configura instancias para la autenticación de la base de datos de IAM.
- Agrega un usuario, una cuenta de servicio o un grupo de IAM a la base de datos. Para obtener más información, consulta Agrega un usuario o una cuenta de servicio de IAM a la base de datos y Agrega un grupo a la base de datos.
- Agrega la función de IAM
roles/cloudsql.instanceUser
a tu usuario, cuenta de servicio o grupo de IAM. Es un rol predefinido que contiene el permisocloudsql.instances.login
de IAM de Cloud SQL necesario. Necesitas este permiso para acceder a una instancia de base de datos con autenticación de la base de datos de IAM. Para obtener más información, consulta Roles y permisos de Eventarc. Cuando se agrega un usuario de IAM a una base de datos, el usuario nuevo de la base de datos no tiene privilegios para ninguna base de datos de forma predeterminada. Debes usar el comando
GRANT
para otorgar al usuario de la base de datos de IAM los permisos necesarios. Para obtener más información, consulta Otorga privilegios de base de datos al usuario de IAM y Otorga privilegios de base de datos a un grupo.Si usas la autenticación del grupo de IAM, el usuario o la cuenta de servicio de IAM debe ser miembro de un grupo al que se le otorgó una función o permisos de IAM para acceder a la instancia de Cloud SQL. Cloud SQL crea una cuenta después de que la cuenta de usuario o servicio accede a la instancia por primera vez.
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 Go, el conector de Java y el conector de Python, los cuales admiten 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.
Para acceder con la autenticación automática de la base de datos de IAM, sigue estos pasos:
Proxy de autenticación de Cloud SQL
Autentica en Google Cloud.
Usuario
Autentica en Google Cloud con las credenciales predeterminadas de la aplicación (ADC).
Usa el comando
gcloud auth application-default login
. Para obtener más información, consulta Configura credenciales predeterminadas de la aplicación.Cuenta de servicio
Para autenticarte en Google Cloud usando ADC con una cuenta de servicio, puedes usar la identidad temporal como cuenta de servicio o usar una clave de cuenta de servicio. Para usar la identidad temporal como cuenta de servicio, reemplaza SERVICE_ACCOUNT_EMAIL_ADDRESS y ejecuta el siguiente comando:
gcloud auth application-default login --impersonate-service-account SERVICE_ACCOUNT_EMAIL_ADDRESS
Para obtener más información, consulta Configura credenciales predeterminadas de la aplicación.
Inicia el proxy de autenticación de Cloud SQL con la marca
--auto-iam-authn
.Reemplaza lo siguiente:
- INSTANCE_CONNECTION_NAME: Es la string de conexión para identificar una instancia de Cloud SQL. Si usas un puerto distinto del puerto predeterminado de PostgreSQL, especifica el número de puerto. Para obtener más información sobre cómo encontrar y crear esta cadena, consulta Opciones para autenticar el proxy de autenticación de Cloud SQL.
./cloud-sql-proxy --auto-iam-authn INSTANCE_CONNECTION_NAME
Para obtener más información sobre cómo iniciar el proxy, consulta Inicia el proxy de autenticación de Cloud SQL.
Cuando estés listo para conectarte a la instancia usando el proxy de autenticación de Cloud SQL, accede con el cliente
psql
.Reemplaza lo siguiente:
- HOSTNAME: Dirección IP que usa el proxy de autenticación de Cloud SQL. De forma predeterminada, el proxy de autenticación de Cloud SQL usa la dirección del host local de
127.0.0.1
, pero puedes asignar una dirección IP diferente cuando inicies el proxy de autenticación de Cloud SQL. - USERNAME: Para una IAM, el nombre de usuario es la dirección de correo electrónico completa del usuario. 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
. - PORT_NUMBER: Opcional Si especificaste un puerto diferente en la cadena de conexión de la instancia, especifica ese número de puerto.
- DATABASE_NAME: El nombre de la base de datos a la que te conectarás.
Ejecuta el siguiente comando:
psql -h HOSTNAME \ -U USERNAME \ --port PORT_NUMBER \ --dbname=DATABASE_NAME
Para obtener más información sobre cómo conectarte al proxy de autenticación de Cloud SQL, consulta Conéctate con el cliente psql.
- HOSTNAME: Dirección IP que usa el proxy de autenticación de Cloud SQL. De forma predeterminada, el proxy de autenticación de Cloud SQL usa la dirección del host local de
Go
JDBC de Java
R2DBC de Java
Python
Accede con autenticación de base de datos manual de IAM
Un usuario o una aplicación puede autenticarse en la base de datos con la IAM solicitando manualmente un token de acceso desde Google Cloud y presentándolo a la base de datos. Con gcloud CLI, puedes solicitar de forma explícita un token de OAuth 2.0 con el permiso de la API de Cloud SQL Admin que se usa para acceder a la base de datos. 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. Sigue estos pasos para conectarte sin el proxy de autenticación de Cloud SQL.
Para estos pasos, debes hacer lo siguiente:
gcloud sql generate-login-token
para generar el token de autenticación.Para acceder con la autenticación manual de la base de datos de IAM:
gcloud
Autentica en Google Cloud.
Usuario
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 Autentica con una cuenta de servicio.Solicita el token de acceso y accede con un cliente.
Reemplaza lo siguiente:
- HOSTNAME: La dirección IP de la instancia, ya sea la dirección IP pública o la privada.
- USERNAME: Para una IAM, el nombre de usuario es la dirección de correo electrónico completa del usuario. 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 sql generate-login-token` \ psql "sslmode=require \ hostaddr=HOSTNAME \ user=USERNAME \ dbname=DATABASE_NAME" \ --no-password
Si
ssl_mode
en tu instancia de Cloud SQL está configurada comoTRUSTED_CLIENT_CERTIFICATE_REQUIRED
, te recomendamos que accedas con la autenticación automática de la base de datos de IAM para aplicar la validación de identidad del cliente.
¿Qué sigue?
- Obtén más información sobre la autenticación de bases de datos de IAM.
- Obtén información para habilitar y ver la información de acceso en los registros de auditoría.
- Obtén información para crear usuarios y cuentas de servicio que usen la autenticación de bases de datos de IAM en Cloud SQL.
- Obtén información sobre cómo administrar usuarios y cuentas de servicio para la autenticación de bases de datos de IAM.