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 administrar el acceso a los recursos de Cloud SQL y 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 la autenticación de 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 varios tipos de principales: una cuenta de usuario, una cuenta de servicio (para aplicaciones) o un grupo. Para obtener más información, consulta Conceptos relacionados con la identidad.
  • Funciones. Un rol es un conjunto de permisos. Puedes otorgar roles a las principales para proporcionarles los privilegios necesarios para realizar tareas específicas. Por ejemplo, con la autenticación de la base de datos de IAM, un principal necesita el permiso cloudsql.instances.login para acceder a una instancia, que se incluye en el rol de usuario de instancia de Cloud SQL. Para obtener el permiso, debes vincular el usuario, la cuenta de servicio o el grupo al rol predefinido de Cloud SQL o a un rol personalizado que incluya 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

La autenticación de la base de datos es el proceso de verificar la identidad de un usuario que intenta acceder a las bases de datos. En Cloud SQL, puedes usar los siguientes tipos de autenticación de bases de datos 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.

Función Autenticación de bases de datos integradas Autenticación de bases de datos de IAM (individual) Autenticación de grupos de IAM
Método de autenticación Contraseña Token de autenticación temporal Token de autenticación temporal
Encriptación del tráfico de red No se requiere SSL SSL requerido SSL requerido
Administración de usuarios Manual Centralizado a través de IAM Centralizado a través de grupos de IAM y Cloud Identity

Autenticación de grupos de IAM

La autenticación de grupos de IAM te permite administrar usuarios de Cloud SQL a nivel de grupo. Un ejemplo de un grupo incluye un grupo de Cloud Identity. Esta función simplifica la administración de usuarios de la base de datos. Puedes administrar los permisos o el rol de IAM de Cloud SQL para varias cuentas a la vez en lugar de tener que actualizar cada usuario o cuenta de servicio de forma individual. También puedes otorgar y revocar los privilegios de la base de datos para un grupo de Cloud Identity. Cualquier cuenta nueva que agregues al grupo de Cloud Identity hereda los privilegios de ese grupo.

Con la autenticación de grupos de IAM, puedes hacer lo siguiente:

  • Agregar un usuario a un grupo y hacer que herede sus privilegios de base de datos y roles de IAM automáticamente.
  • Quitar un usuario de un grupo para quitar su información de acceso y los privilegios de la base de datos de las bases de datos de Cloud SQL.
  • Otorgar privilegios de acceso o de base de datos a un grupo una sola vez en lugar de tener que otorgar los mismos privilegios varias veces a diferentes usuarios.
  • Quitar los permisos de acceso o el acceso a un objeto de base de datos para un grupo a la vez.

Aunque los permisos y los roles de IAM se asignan a nivel de grupo, los usuarios y las cuentas de servicio usan sus cuentas y credenciales de IAM individuales y no una cuenta de grupo compartida para acceder. Cloud SQL crea una cuenta de base de datos en la instancia para ese usuario o cuenta de servicio después del primer acceso.

La actividad de acceso individual y de la base de datos de cada usuario o cuenta de servicio aparece en los registros de auditoría. Para las auditorías, obtienes el beneficio de ver qué cuenta realizó cada acción en tu base de datos.

Para obtener más información sobre cómo trabajar con los grupos de Cloud Identity, consulta Descripción general de Cloud Identity.

Cuando agregas un usuario o una cuenta de servicio a un grupo, se producen los siguientes cambios en Cloud SQL:

  • Si ya otorgaste permisos de acceso de IAM al grupo, la cuenta de usuario o servicio obtiene la capacidad de acceder a la instancia de Cloud SQL porque el usuario o la cuenta de servicio pertenecen al grupo.
  • El usuario hereda automáticamente los privilegios de base de datos que se otorgaron al grupo.

Cuando quitas un usuario o una cuenta de servicio del grupo, se producen los siguientes cambios en Cloud SQL:

  • El usuario pierde todos los privilegios de la base de datos que heredó anteriormente como miembro del grupo.
  • Es posible que el usuario aún pueda acceder si recibe permisos de acceso de IAM para la instancia de Cloud SQL a través de otras pertenencias a un grupo. Sin embargo, el usuario no tendrá privilegios de base de datos de su pertenencia a un grupo anterior cuando acceda.

Prácticas recomendadas de autenticación de grupos de IAM

  • Cuando revoques el permiso de acceso (cloudsql.instances.login) para un grupo de IAM en Cloud Identity, asegúrate de borrar también el grupo de la instancia de Cloud SQL.
  • Cuando borres un grupo de Cloud Identity, asegúrate de borrar también ese grupo de la instancia de Cloud SQL.
  • Usa grupos para configurar el control de acceso basado en roles en tu base de datos. Siempre proporciona al grupo los privilegios mínimos necesarios.
  • No otorgues roles de autenticación de grupos de IAM a usuarios integrados. Por ejemplo, si tienes un usuario integrado, user-a, y creas un usuario de autenticación de grupos de IAM, user-b@example.com, no otorgues el rol user-b@example.com a user-a.

Restricciones de autenticación de grupos de IAM

  • Cuando usas la autenticación de grupos de IAM, si tienes una instancia de Cloud SQL con réplicas de lectura, primero debes acceder a la instancia principal antes de acceder a la instancia de réplica de lectura. Después de tu primer acceso a la instancia principal, la información del usuario del grupo se replica en las réplicas de lectura. Para los accesos posteriores, puedes acceder directamente a la réplica de lectura.
  • Puedes agregar un máximo de 200 grupos de IAM a una instancia.
  • No puedes agregar usuarios de IAM individuales o cuentas de servicio que pertenezcan a un grupo en la misma instancia. En otras palabras, no puedes agregar una cuenta con el tipo CLOUD_IAM_USER o CLOUD_IAM_SERVICE_ACCOUNT si ya existe una cuenta idéntica con el tipo CLOUD_IAM_GROUP_USER o CLOUD_IAM_GROUP_SERVICE_ACCOUNT.
  • Si ya existe una cuenta individual en una instancia con el tipo CLOUD_IAM_USER o CLOUD_IAM_SERVICE_ACCOUNT, no se puede usar la cuenta para la autenticación de grupos de IAM. Estos tipos de usuario no heredan los roles de IAM ni los privilegios de la base de datos de un grupo.

    Para solucionar este problema y usar la cuenta con autenticación de grupos de IAM, quita la cuenta de servicio o el usuario individual de IAM.

    Para obtener más información, consulta Un usuario o cuenta de servicio de IAM existente no hereda los privilegios de la base de datos otorgados a su grupo.
  • Los cambios en la membresía de un grupo de Cloud Identity, como la adición de una cuenta, tardan unos 15 minutos en propagarse. Esto se suma al tiempo requerido para los cambios 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 o uno de los conectores de lenguaje 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 y 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 válidos solo 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 cuentas de servicio y los usuarios a las bases de datos en una instancia con la autenticación de bases de datos de IAM, debes agregarlos a la instancia o a un grupo que tenga acceso 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.

Esta marca es obligatoria para la autenticación de grupos de IAM y de bases 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. La información de acceso de una cuenta de usuario de autenticación de la base de datos de IAM debe estar en minúsculas. Por ejemplo, example-user@example.com. Example-User@example.com no es una propiedad válida.
  2. 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.
  3. 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?