Google Cloud ofrece gestión de identidad y acceso (IAM), que le permite otorgar acceso a datos específicos Google Cloud recursos y evitar el acceso no deseado a otros recursos. Esta página describe cómo Cloud SQL se integra con IAM y cómo puede 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, consulte 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 propios roles personalizados si los predefinidos no te proporcionan los permisos que necesitas. Además, los roles básicos heredados (Editor, Visor y Propietario) siguen estando disponibles, aunque no ofrecen el mismo control detallado que los roles de Cloud SQL. En particular, los roles básicos proporcionan acceso a los recursos en Google Cloud, en lugar de solo para Cloud SQL. Para obtener más información sobre los aspectos básicos Google Cloud Roles, ver Roles básicos .
Puede establecer una política de IAM en cualquier nivel de la jerarquía de recursos : organización, carpeta o proyecto. Los recursos heredan las políticas de todos sus recursos principales.
Referencias de IAM para Cloud SQL
- Permisos necesarios para tareas comunes en el Google Cloud consola
- Permisos necesarios para los comandos
gcloud sql
- Permisos necesarios para los métodos de la API de administración de Cloud SQL
- Roles de IAM de Cloud SQL predefinidos
- Permisos y sus roles
- Roles personalizados
Conceptos de autenticación de IAM
Al usar la autenticación 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 los principales . Para obtener más información, consulte la descripción general de IAM .
Los administradores que tienen usuarios que inician sesión a través de la autenticación de base de datos IAM pueden usar la autenticación IAM para administrar de manera central el control de acceso a sus instancias mediante políticas IAM.
Las políticas de IAM involucran a las siguientes entidades:
- Principales . En Cloud SQL, puede usar varios tipos de principales: una cuenta de usuario , una cuenta de servicio (para aplicaciones) o un grupo . Para obtener más información, consulte Conceptos relacionados con la identidad .
- Roles . Un rol es un conjunto de permisos. Puede otorgar roles a los principales para proporcionarles los privilegios necesarios para realizar tareas específicas. Por ejemplo, con la autenticación de base de datos de IAM, un principal requiere el permiso
cloudsql.instances.login
para iniciar sesión en una instancia, que se incluye en el rol de usuario de instancia de Cloud SQL . Para obtener el permiso, debe vincular el usuario, la cuenta de servicio o el grupo al rol predefinido de Cloud SQL o a un rol personalizado que lo incluya. Para obtener más información sobre los roles de IAM, consulte Roles . - 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 reciben permisos de rol para todas las instancias de Cloud SQL del proyecto.
Autenticación de base de datos IAM
La autenticación de bases de datos es el proceso de verificar la identidad de un usuario que intenta acceder a las bases de datos. En Cloud SQL, puede usar los siguientes tipos de autenticación para los usuarios de bases de datos:
- La autenticación incorporada de la base de datos utiliza un nombre de usuario y una contraseña para autenticar a un usuario de la base de datos.
- La autenticación de base de datos IAM utiliza IAM para autenticar a un usuario mediante un token de acceso. Tiene dos opciones para administrar usuarios o cuentas de servicio.
- Individualmente : De forma predeterminada, al usar la autenticación de base de datos de IAM, se otorgan roles de IAM y se asignan privilegios de base de datos a usuarios y cuentas de servicio individuales. Se agregan cuentas individuales a las instancias y se administran los privilegios de cada cuenta por separado.
- Por grupo : La autenticación de grupo de IAM permite controlar el acceso a las instancias de Cloud SQL a nivel de grupo. Por ejemplo, se pueden asignar roles de Administración de Identidad y Acceso y privilegios de base de datos a un grupo de Cloud Identity. Todos los usuarios y cuentas de servicio del grupo de Cloud Identity heredan los roles de IAM y los privilegios de base de datos asignados al grupo.
Comparar las opciones de autenticación de bases de datos
La siguiente tabla compara diferentes métodos de autenticación de bases de datos para Cloud SQL.
Característica | Autenticación de base de datos incorporada | Autenticación de base de datos IAM (individual) | Autenticación de grupo IAM |
---|---|---|---|
Método de autenticación | Contraseña | Token de autenticación temporal | Token de autenticación temporal |
Cifrado del tráfico de red | No se requiere SSL | Se requiere SSL | Se requiere SSL |
Gestión de usuarios | Manual | Centralizado a través de IAM | Centralizado a través de grupos de IAM y Cloud Identity |
Autenticación de grupo IAM
La autenticación de grupo de IAM permite administrar usuarios de Cloud SQL a nivel de grupo. Un ejemplo de grupo es un grupo de Cloud Identity . Esta función simplifica la administración de usuarios de bases de datos. Puede administrar el rol o los permisos de IAM de Cloud SQL para varias cuentas a la vez, en lugar de tener que actualizar cada usuario o cuenta de servicio individualmente. También puede otorgar y revocar privilegios de base de datos para un grupo de Cloud Identity. Las cuentas nuevas que agregue al grupo de Cloud Identity heredan los privilegios de ese grupo.
Con la autenticación de grupo IAM, puede hacer lo siguiente:
- Agregue un usuario a un grupo y haga que el usuario herede sus roles de IAM y privilegios de base de datos automáticamente.
- Eliminar un usuario de un grupo para eliminar su acceso de inicio de sesión y sus privilegios de base de datos de las bases de datos de Cloud SQL.
- Otorgue privilegios de inicio de sesión 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.
- Eliminar los permisos de inicio de sesión o el acceso a un objeto de base de datos para un grupo de una sola vez.
Si bien los roles y permisos 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 iniciar sesión. Cloud SQL crea una cuenta de base de datos en la instancia para ese usuario o cuenta de servicio después de su primer inicio de sesión.
La actividad individual de inicio de sesión y de la base de datos de cada usuario o cuenta de servicio aparece en los registros de auditoría. Para fines de auditoría, se puede ver qué cuenta realizó qué acción en la base de datos.
Para obtener más información sobre cómo trabajar con grupos de Cloud Identity, consulte Descripción general de Cloud Identity .
Cuando agrega un usuario o una cuenta de servicio a un grupo, se producen los siguientes cambios en Cloud SQL:
- Si ya ha otorgado permisos de inicio de sesión de IAM al grupo, entonces el usuario o la cuenta de servicio obtienen la capacidad de iniciar sesión en la instancia de Cloud SQL porque el usuario o la cuenta de servicio pertenecen al grupo.
- El usuario hereda automáticamente cualquier privilegio de base de datos que se haya otorgado al grupo.
Cuando elimina un usuario o una cuenta de servicio del grupo, se producen los siguientes cambios en Cloud SQL:
- El usuario pierde todos los privilegios de base de datos que había heredado previamente por ser miembro del grupo.
- Es posible que el usuario aún pueda iniciar sesión si recibe permisos de inicio de sesión de IAM para la instancia de Cloud SQL a través de otras membresías de grupo. Sin embargo, al iniciar sesión, no tendrá los privilegios de base de datos de su antigua membresía de grupo.
Prácticas recomendadas para la autenticación de grupos IAM
- Cuando revoca el permiso de inicio de sesión (
cloudsql.instances.login
) para un grupo de IAM en Cloud Identity, asegúrese de eliminar también el grupo de la instancia de Cloud SQL. - Cuando elimine un grupo de una Cloud Identity, asegúrese de eliminar también ese grupo de la instancia de Cloud SQL.
- Utilice grupos para configurar el control de acceso basado en roles en su base de datos. Asigne siempre los privilegios mínimos necesarios al grupo.
- No otorgue roles de autenticación de grupo IAM a usuarios integrados. Por ejemplo, si tiene un usuario integrado,
user-a
, y crea un usuario de autenticación de grupo IAM,[email protected]
, nouser-a
otorgue el rol[email protected]
.
Restricciones de autenticación del grupo IAM
- Puede agregar un máximo de 200 grupos IAM a una instancia.
- No se pueden agregar cuentas de usuario o servicio de IAM individuales que pertenezcan a un grupo en la misma instancia. Es decir, no se puede agregar una cuenta con el tipo
CLOUD_IAM_USER
oCLOUD_IAM_SERVICE_ACCOUNT
si ya existe una cuenta idéntica con el tipoCLOUD_IAM_GROUP_USER
oCLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Si ya existe una cuenta individual en una instancia con el tipo
CLOUD_IAM_USER
oCLOUD_IAM_SERVICE_ACCOUNT
, no se podrá usar para la autenticación de grupo de IAM. Estos tipos de usuario no heredan los roles de IAM ni los privilegios de base de datos de un grupo.Para solucionar este problema y utilizar la cuenta con autenticación de grupo IAM, elimine la cuenta de servicio o usuario IAM individual.
Para obtener más información, consulte Una cuenta de servicio o usuario de IAM existente no hereda los privilegios de base de datos otorgados a su grupo . - Los cambios en la membresía del grupo de Cloud Identity, como la adición de una cuenta, tardan unos 15 minutos en propagarse. Esto se suma al tiempo necesario para los cambios de IAM .
Autenticación de base de datos IAM automática versus manual
Cloud SQL para MySQL tiene dos opciones para la autenticación de la base de datos IAM: automática y manual.
Autenticación automática de bases de datos IAM
La autenticación automática de bases de datos IAM permite delegar la solicitud y la gestión de tokens de acceso a un conector intermediario de Cloud SQL , 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 bases de datos IAM, los usuarios solo necesitan proporcionar el nombre de usuario de la base de datos 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 IAM requiere el uso de un conector Cloud SQL y es compatible con Cloud SQL Auth Proxy , el conector Go , el conector Java y el conector Python .
Para una experiencia más segura y confiable, le recomendamos usar la autenticación automática de la base de datos IAM. Esta autenticación utiliza tokens de acceso OAuth 2.0, que son de corta duración y solo tienen una validez de 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 dependen de la agrupación de conexiones puedan tener conexiones estables. Se recomienda encarecidamente la autenticación automática de la base de datos IAM en lugar de la autenticación manual.
Para obtener más información, consulte Iniciar sesión con la autenticación automática de la base de datos IAM .
Autenticación manual de la base de datos IAM
La autenticación manual de la base de datos de IAM requiere que el principal de IAM pase explícitamente el token de acceso para el atributo de contraseña en la solicitud de conexión del cliente. Los principales deben iniciar sesión primero en Google Cloud y solicitar explícitamente el token de acceso de IAM.
Con la CLI de gcloud , puede solicitar explícitamente un token de OAuth 2.0 con el alcance de la API de administración de Cloud SQL para iniciar sesión en la base de datos. Al iniciar sesión como usuario de la base de datos con autenticación de base de datos IAM, utiliza su dirección de correo electrónico como nombre de usuario y el token de acceso como contraseña. Puede usar este método con una conexión directa a la base de datos o con un conector de Cloud SQL.
El inicio de sesión con la autenticación de la base de datos IAM solo se puede realizar a través de una conexión SSL.
Para obtener más información, consulte Iniciar sesión con autenticación manual de base de datos IAM .
Acceso consciente del contexto y autenticación de bases de datos IAM
Si usa acceso contextual en su configuración de IAM, no podrá usar un conector de Cloud SQL, como el proxy de autenticación de Cloud SQL, ni ninguno de los conectores de lenguaje de Cloud SQL con autenticación de base de datos de IAM. Los intentos de iniciar sesión, ya sea manual o automáticamente, con autenticación de IAM fallarán. Conéctese directamente a la instancia.
Administración de cuentas de usuario y de servicio
Para que los usuarios y las cuentas de servicio accedan a las bases de datos de una instancia mediante la autenticación de base de datos de IAM, debe agregarlos a la instancia o a un grupo con acceso a ella. Para obtener más información, consulte Agregar un usuario o una cuenta de servicio que use IAM .
Si utiliza el Google Cloud En la consola, para agregar usuarios o cuentas de servicio, Cloud SQL le solicita que agregue el rol "Usuario de Cloud SQL" al usuario. Este rol es necesario para que los usuarios inicien sesión en la instancia.
Después de agregar el usuario de IAM a la base de datos, debe otorgarle privilegios manualmente. Use el comando GRANT de MySQL para otorgar otros privilegios .Configuración de instancia para la autenticación de la base de datos IAM de Cloud SQL
Puede habilitar la autenticación de base de datos IAM en una instancia mediante el indicador cloudsql_iam_authentication
. Al habilitar este indicador, la instancia permite el inicio de sesión desde cuentas configuradas para la autenticación de base de datos IAM.
Esta bandera es necesaria para la autenticación del grupo IAM y la autenticación de la base de datos IAM.
Configurar esta marca no impide que los usuarios existentes que no sean de IAM usen sus nombres de usuario y contraseñas para iniciar sesión. Sin embargo, si la desactiva en la instancia, cualquier usuario que haya agregado previamente mediante la autenticación de base de datos de IAM perderá el acceso a la instancia. Para obtener más información, consulte Configurar instancias para la autenticación de base de datos de IAM .
Autenticación de base de datos IAM de Cloud SQL para diferentes escenarios de instancia
Leer réplicas | La autenticación de la base de datos de IAM no se habilita automáticamente en una réplica de lectura, incluso si está habilitada en la instancia principal. Después de crear una réplica de lectura, debe agregar la autenticación de la base de datos de IAM. Para obtener más información, consulte Configurar inicios de sesión de réplica de lectura para la autenticación de la base de datos de IAM . |
Instancias restauradas | Si se realizó una copia de seguridad de una instancia y posteriormente se restauró en la misma instancia o en una diferente del mismo proyecto, se aplican las autorizaciones de inicio de sesión del usuario actual. Si restaura una copia de seguridad en una nueva instancia de otro proyecto, debe configurar las autorizaciones de usuario para la nueva instancia. Para obtener más información, consulte Agregar una cuenta de usuario o servicio que use la autenticación de base de datos de IAM . |
Acerca de las condiciones de IAM
Las Condiciones de IAM permiten otorgar roles según diversos atributos. Por ejemplo, se puede permitir el acceso solo en fechas y horas específicas, o solo a recursos de Cloud SQL con nombres específicos.
Para obtener más información sobre las condiciones de IAM, consulte la página "Descripción general de las condiciones de IAM" . También puede obtener más información sobre el uso de las condiciones de IAM con Cloud SQL, incluyendo ejemplos.
Trabajar con registros de auditoría en la nube
Para mantener registros de acceso a los datos, incluidos los inicios de sesión, puede usar registros de auditoría. Los registros de auditoría en la nube están desactivados de forma predeterminada. Debe activar los registros de auditoría de acceso a datos para el seguimiento de los inicios de sesión. El uso de registros de auditoría para este fin genera costos de registro de datos. Para obtener más información, consulte Registros de auditoría , Configuración de registros de auditoría de acceso a datos y Precios del registro de datos .
Restricciones
- El inicio de sesión para una cuenta de usuario de autenticación de base de datos IAM debe escribirse en minúsculas. Por ejemplo,
[email protected]
. No se permite[email protected]
. - Por seguridad, los inicios de sesión con autenticación de base de datos IAM solo están disponibles con una conexión SSL. Se rechazan las conexiones sin cifrar.
- Hay una cuota de inicio de sesión por minuto para cada instancia, que incluye tanto los inicios de sesión exitosos como los fallidos. Cuando se supera la cuota, los inicios de sesión no están disponibles temporalmente. Recomendamos evitar los inicios de sesión frecuentes y restringir los inicios de sesión mediante redes autorizadas . La cuota de autorización de inicios de sesión es de 12 000 por minuto, por instancia.
- La autenticación de la base de datos IAM no es compatible con las instancias que utilizan MySQL 5.6.
¿Qué sigue?
- Aprenda a configurar instancias para la autenticación de base de datos IAM .
- Aprenda cómo agregar una cuenta de usuario o servicio que utilice la autenticación de base de datos IAM a su base de datos .
- Aprenda a iniciar sesión en una base de datos de Cloud SQL con autenticación de base de datos IAM .
- Aprenda a ver la información de inicio de sesión en los registros de auditoría .