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 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. 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 el usuario, la cuenta de servicio o el grupo al rol de usuario de instancia de Cloud SQL predefinida o a un rol personalizado 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. Tienes dos opciones para administrar usuarios o cuentas de servicio.
    • De forma individual: según la configuración predeterminada, cuando usas la autenticación de la base de datos de IAM, debes asignar roles de IAM y asignar privilegios de base de datos a usuarios y cuentas de servicio individuales. Debes agregar cuentas individuales a las instancias y administrar los privilegios de cada cuenta por separado.
    • Por grupo: la autenticación de grupos de IAM te permite controlar el acceso a las instancias de Cloud SQL a nivel de grupo. Por ejemplo, puedes asignar roles de Identity and Access Management y privilegios de base de datos a un grupo de Cloud Identity. Todos los usuarios y las cuentas de servicio del grupo de Cloud Identity heredan los roles de IAM y los privilegios de la base de datos que se asignaron al grupo. La autenticación de grupos de IAM se encuentra en Vista previa.

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 bases de datos de IAM (individual) Autenticación de grupos de IAM
Método de autenticación Contraseña (Password) 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.

Restricciones de autenticación de grupos de IAM

  • La autenticación de grupos de IAM solo se puede administrar a través de gcloud CLI durante la vista previa.
  • Puedes agregar un máximo de 200 grupos de Cloud Identity 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_GROUP_USER o CLOUD_IAM_GROUP_SERVICE_ACCOUNT, no se puede usar la cuenta para la autenticación de grupos de IAM. Estos tipos de usuario no heredarán 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.

    Después de que los cambios se propaguen, el usuario o la cuenta de servicio deberá salir y volver a acceder para que se aplique el cambio.

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

Cloud SQL para MySQL 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 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.

Después de agregar el usuario de IAM a la base de datos, debes otorgar privilegios de base de datos de forma manual. Usa el comando GRANT de MySQL para otorgar otros 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. 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.
  3. La autenticación de la base de datos de IAM no es compatible con las instancias que usan MySQL 5.6.

¿Qué sigue?