Autenticación de IAM

Google Cloud ofrece Identity and Access Management (IAM), que te permite brindar acceso a recursos específicos de Google Cloud y evita el acceso no deseado a otros recursos. En esta página, se describe cómo Cloud SQL está integrado en IAM y cómo puedes usar IAM para la autenticación de bases de datos. Para obtener una descripción detallada de Google Cloud IAM, consulta la documentación de IAM.

Cloud SQL proporciona un conjunto de roles predefinidos diseñados para ayudarte a controlar el acceso a tus recursos de Cloud SQL. También puedes crear tus roles personalizados, si los roles predefinidos no proporcionan los conjuntos de permisos que necesitas. Los roles básicos heredados (Editor, Visualizador y Propietario) también están disponibles, aunque no proporcionan el mismo control detallado que los roles de Cloud SQL. En particular, las funciones básicas brindan acceso a recursos en todo Google Cloud, en lugar de solo a los de Cloud SQL. Para obtener más información sobre los roles básicos de Google Cloud, consulta Roles básicos.

Puedes establecer una política de IAM en cualquier nivel de la jerarquía de recursos: a nivel de organización, de carpeta o de proyecto. Los recursos heredan las políticas de todos sus recursos superiores.

Referencias de IAM para Cloud SQL

Conceptos de autenticación de IAM

Cuando se usa la autenticación de IAM, el permiso para acceder a un recurso (una instancia de Cloud SQL) no se otorga directamente al usuario final. En su lugar, los permisos se agrupan en roles, y los roles se otorgan a las principales autenticadas. Para obtener más información, consulta la descripción general de IAM.

Los administradores que tienen usuarios que acceden a través de la autenticación de la base de datos de IAM pueden usar IAM para administrar de forma centralizada el control de acceso a sus instancias con políticas de IAM. Las políticas de IAM involucran las siguientes entidades:

  • Principales En Cloud SQL, puedes usar dos tipos de principales: una cuenta de usuario y una cuenta de servicio (para aplicaciones). Otros tipos de principales, como los grupos de Google, los dominios de Google Workspace o los dominios de Cloud Identity, no son compatibles con la autenticación de la base de datos de IAM. Si quieres obtener más información, consulta Conceptos relacionados con la identidad.
  • Funciones. Para la autenticación de la base de datos de IAM, un usuario necesita el permiso cloudsql.instances.login para acceder a una instancia. Para obtener este permiso, debes vincular la cuenta de servicio o usuario a la función predefinida Usuario de instancias de Cloud SQL o a una función personalizada que agrupe el permiso. Para obtener más información sobre las funciones de IAM, consulta Funciones.
  • Recurso. Los recursos a los que acceden los principales son instancias de Cloud SQL. De forma predeterminada, las vinculaciones de políticas de IAM se aplican a nivel de proyecto, de modo que los principales reciban permisos de función para todas las instancias de Cloud SQL en el proyecto.

Autenticación de la base de datos de IAM

Cloud SQL está integrado a Identity and Access Management (IAM) para ayudarte a administrar mejor el acceso de los usuarios y las cuentas de servicio a las bases de datos. Esta característica se llama autenticación de base de datos de IAM.

La autenticación es el proceso de verificar la identidad de un usuario que intenta acceder a una instancia. Cloud SQL usa los siguientes tipos de autenticación para los usuarios de bases de datos:

  • La autenticación integrada de la base de datos, que usa un nombre de usuario y una contraseña para autenticar a un usuario de la base de datos
  • La autenticación de la base de datos de IAM usa IAM para autenticar a un usuario mediante un token de acceso.

Compara opciones de autenticación de base de datos

En la siguiente tabla, se comparan diferentes métodos de autenticación de bases de datos de Cloud SQL.

Característica Autenticación de bases de datos integradas Autenticación de la base de datos de IAM
Método de autenticación Contraseña (Password) Token de autenticación temporal
Encriptación del tráfico de red No se requiere SSL SSL requerido
Administración de usuarios Manual Centralizado a través de IAM

Comparación entre la autenticación de bases de datos de IAM automática y manual

Cloud SQL para PostgreSQL tiene dos opciones para la autenticación de la base de datos de IAM: automática y manual.

Autenticación automática de la base de datos de IAM

La autenticación automática de la base de datos de IAM te permite transferir y administrar tokens de acceso para un conector de Cloud SQL intermediario, como el proxy de autenticación de Cloud SQL. Con la autenticación automática de la base de datos de IAM, los usuarios solo deben pasar el nombre de usuario de la base de datos de IAM en una solicitud de conexión del cliente. El conector envía la información del token de acceso para el atributo de contraseña en nombre del cliente.

La autenticación automática de la base de datos de IAM requiere el uso de un conector de Cloud SQL. Es compatible con el proxy de autenticación de Cloud SQL, el conector de Go, el conector de Java y el conector de Python.

Para obtener la experiencia más segura y confiable, te recomendamos la autenticación automática 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. Los conectores de Cloud SQL pueden solicitar y actualizar estos tokens, lo que garantiza que los procesos o aplicaciones de larga duración que se basan en la agrupación de conexiones puedan tener conexiones estables. Se recomienda la autenticación automática de la base de datos de IAM en lugar de la autenticación manual.

Para obtener más información, consulta Accede con la autenticación de la base de datos de IAM.

Autenticación manual de la base de datos de IAM

La autenticación manual de la base de datos de IAM requiere que el principal de IAM pase de forma explícita el token de acceso para el atributo de contraseña en la solicitud de conexión del cliente. Los principales primero deben acceder a Google Cloud y solicitar de forma explícita el token de acceso desde IAM.

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

El acceso con la autenticación de la base de datos de IAM solo se puede realizar a través de una conexión SSL.

Para obtener más información, consulta Accede con la autenticación de la base de datos de IAM.

Administración de usuarios y cuentas de servicio

Para otorgar acceso a las bases de datos en una instancia mediante la autenticación de la base de datos de IAM a las cuentas de servicio y los usuarios, debes agregarlos a la instancia. Para obtener más información, consulta Agrega un usuario o una cuenta de servicio que use IAM.

Si usas la consola de Google Cloud para agregar usuarios o cuentas de servicio, Cloud SQL te pedirá que agregues el rol “Cloud SQL User” al usuario. Este rol es necesaria para que los usuarios accedan a la instancia.

Si agregas usuarios mediante gcloud o la API, debes otorgar privilegios de acceso de forma manual. Usa el comando GRANT de PostgreSQL para otorgar privilegios de base de datos.

Configuración de las instancias para la autenticación de la base de datos de IAM de Cloud SQL

Puedes habilitar la autenticación de la base de datos de IAM en una instancia mediante la marca cloudsql.iam_authentication. Una vez que habilitas esta marca, la instancia habilita los accesos desde las cuentas configuradas para la autenticación de la base de datos de IAM.

Establecer la marca no evita que los usuarios existentes que no sean de IAM usen sus nombres de usuario y contraseñas para acceder. Sin embargo, si inhabilitas esta marca en la instancia, cualquier usuario que hayas agregado previamente con la autenticación de la base de datos de IAM pierde acceso a la instancia. Si quieres obtener más información, consulta Configura instancias para la autenticación de la base de datos de IAM.

Autenticación de la base de datos de IAM de Cloud SQL para diferentes situaciones de instancias

Réplicas de lectura La autenticación de la base de datos de IAM no está habilitada en una réplica de lectura de forma automática, incluso cuando está habilitada en la instancia principal. Después de crear una réplica de lectura, debes agregar la autenticación de la base de datos de IAM. Si deseas obtener más información, consulta Configura los accesos de réplica de lectura para la autenticación de la base de datos de IAM.
Instancias restauradas Si antes se creó una copia de seguridad de una instancia y, luego, se restableció a la misma instancia o a una diferente en el mismo proyecto, se aplican las autorizaciones vigentes de acceso de usuarios. Si restableces una copia de seguridad en una instancia nueva en otro proyecto, debes configurar las autorizaciones de usuarios para la instancia nueva. Para obtener más información, consulta Agrega un usuario o una cuenta de servicio que use la autenticación de la base de datos de IAM.

Acerca de las condiciones de IAM

Las Condiciones de IAM te permiten otorgar funciones basadas en una variedad de atributos. Por ejemplo, puedes permitir el acceso solo en ciertas fechas y horas, o bien otorgar acceso solo a los recursos de Cloud SQL con ciertos nombres.

Para obtener más información sobre las Condiciones de IAM, consulta Descripción general de las Condiciones de IAM. También puedes obtener más información sobre el Uso de las condiciones de IAM con Cloud SQL, incluidos los ejemplos.

Trabaja con registros de auditoría de Cloud

Para mantener registros de acceso a los datos, incluidos los accesos, puedes usar registros de auditoría. Los registros de auditoría de Cloud están desactivados de forma predeterminada. Debes activar los registros de auditoría de acceso a los datos para el seguimiento del acceso. Usar los registros de auditoría para este propósito genera costos por el registro de datos. Para obtener más información, consulta Registros de auditoría, Configura registros de auditoría de acceso a los datos y Precios del registro de datos.

Restricciones

  1. Por seguridad, los accesos que usan la autenticación de la base de datos de IAM solo están disponibles en una conexión SSL. Se rechazan las conexiones no encriptadas.
  2. Hay una cuota de acceso por minuto para cada instancia, que incluye accesos exitosos y no exitosos. Cuando se supera la cuota, los accesos no están disponibles por el momento. Recomendamos que evites accesos frecuentes y que restrinjas los accesos a través de las redes autorizadas. La cuota de autorización de accesos es de 12,000 por minuto y por instancia.

¿Qué sigue?