Autenticación IAM

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

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.

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] , no user-a otorgue el rol [email protected] .

Restricciones de autenticación del grupo IAM

  • Al usar la autenticación de grupo de IAM, si tiene una instancia de Cloud SQL con réplicas de lectura, debe iniciar sesión primero en la instancia principal antes de iniciar sesión en la réplica de lectura. Tras el primer inicio de sesión en la instancia principal, la información del usuario del grupo se replica en las réplicas de lectura. Para los siguientes inicios de sesión, puede iniciar sesión directamente en la réplica de lectura.
  • 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 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 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 PostgreSQL tiene dos opciones para la autenticación de 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.

Si agrega usuarios mediante gcloud o la API, debe otorgarles privilegios de inicio de sesión manualmente. Use el comando GRANT de PostgreSQL para otorgarles privilegios de base de datos .

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

  1. 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] .
  2. 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.
  3. 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.

¿Qué sigue?

,

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

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.

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] , no user-a otorgue el rol [email protected] .

Restricciones de autenticación del grupo IAM

  • Al usar la autenticación de grupo de IAM, si tiene una instancia de Cloud SQL con réplicas de lectura, debe iniciar sesión primero en la instancia principal antes de iniciar sesión en la réplica de lectura. Tras el primer inicio de sesión en la instancia principal, la información del usuario del grupo se replica en las réplicas de lectura. Para los siguientes inicios de sesión, puede iniciar sesión directamente en la réplica de lectura.
  • 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 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 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 PostgreSQL tiene dos opciones para la autenticación de 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.

Si agrega usuarios mediante gcloud o la API, debe otorgarles privilegios de inicio de sesión manualmente. Use el comando GRANT de PostgreSQL para otorgarles privilegios de base de datos .

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

  1. 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] .
  2. 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.
  3. Hay una cuota de inicio de sesión por minuto para cada instancia, que incluye inicios de sesión exitosos y no exitosos. Cuando se excede la cuota, los inicios de sesión no están disponibles temporalmente. Recomendamos que evite inicios de sesión frecuentes y restrinja los inicios de sesión utilizando redes autorizadas . La cuota para la autorización de inicios de sesión es de 12,000 por minuto, por instancia.

¿Qué sigue?

,

Google Cloud Ofrece gestión de identidad y acceso (IAM), que le permite dar acceso a Google Cloud recursos y evitar el acceso no deseado a otros recursos. Esta página describe cómo Cloud SQL está integrado con IAM y cómo puede usar IAM para administrar el acceso a los recursos de Cloud SQL y para la autenticación de la base de datos. Para una descripción detallada de Google Cloud Iam, ver documentación de IAM .

Cloud SQL proporciona un conjunto de roles predefinidos diseñados para ayudarlo a controlar el acceso a sus recursos de Cloud SQL. También puede crear sus propios roles personalizados , si los roles predefinidos no proporcionan los conjuntos de permisos que necesita. Además, los roles básicos de Legacy (editor, espectador y propietario) también están disponibles para usted, aunque no proporcionan el mismo control de grano fino que los roles de Cloud SQL. En particular, los roles básicos proporcionan acceso a recursos en todo Google Cloud, en lugar de solo para la nube SQL. Para más información sobre BASIC Google Cloud roles, ver roles básicos .

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

Referencias de IAM para Cloud SQL

Conceptos de autenticación de IAM

Al usar la autenticación IAM, el permiso para acceder a un recurso (una instancia de SQL en la nube) no se otorga directamente al usuario final. En cambio, los permisos se agrupan en roles , y se otorgan roles a los directores . Para obtener más información, consulte la descripción general de IAM .

Los administradores que tienen usuarios inician sesión a través de la autenticación de la base de datos IAM pueden usar la autenticación IAM para administrar centralmente el control de acceso a sus instancias utilizando políticas de IAM.

Las políticas de IAM involucran las siguientes entidades:

  • Directores . En la nube SQL, puede usar varios tipos de principios: 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 papel es una colección de permisos. Puede otorgar roles a los directores para proporcionarles los privilegios requeridos para realizar tareas específicas. Por ejemplo, con la autenticación de la base de datos de IAM, un principal requiere que el permiso de cloudsql.instances.login se inicie sesión en una instancia, que se incluye en el rol de usuario de la instancia de Cloud SQL . Para obtener el permiso, vincula el usuario, la cuenta de servicio o el grupo al rol de SQL de la nube predefinido o un rol personalizado que incluye el permiso. Para obtener más información sobre los roles IAM, consulte los roles .
  • Recurso . Los recursos a los que acceden a los directores son instancias de SQL en la nube. Por defecto, los enlaces de política de IAM se aplican en el nivel del proyecto, de modo que los directores reciban permisos de roles para todas las instancias de Cloud SQL en el proyecto.

Autenticación de base de datos 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, puede usar los siguientes tipos de autenticación de bases de datos para 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 un usuario de la base de datos.
  • La autenticación de la base de datos IAM usa IAM para autenticar a un usuario mediante el uso de un token de acceso.

Comparar opciones de autenticación de la base de datos

La siguiente tabla compara diferentes métodos de autenticación de la base de datos para la nube SQL.

Característica Autenticación de base de datos incorporada Autenticación de la base de datos IAM (individual) Autenticación del grupo IAM
Método de autenticación Contraseña Token de autenticación temporal Token de autenticación temporal
Cifrado de tráfico de red SSL no requerido SSL requerido SSL requerido
Gestión de usuarios Manual Centralizado a través de IAM Centralizado a través de grupos de identidad de IAM y nubes

Autenticación del grupo IAM

La autenticación del grupo IAM le permite administrar a los usuarios de SQL en la nube a nivel de grupo. Un ejemplo de un grupo incluye un grupo de identidad en la nube . Esta característica simplifica la gestión de usuarios de la base de datos. Puede administrar el rol o los permisos de Cloud SQL IAM para múltiples cuentas a la vez en lugar de tener que actualizar cada usuario o cuenta de servicio individualmente. También puede otorgar y revocar los privilegios de la base de datos para un grupo de identidad en la nube. Cualquier cuenta nueva que agregue al grupo de identidad en la nube herede los privilegios de ese grupo.

Con la autenticación del grupo IAM, puede hacer lo siguiente:

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

A pesar de que los roles y permisos de IAM se asignan a nivel de grupo, los usuarios y las cuentas de servicio utilizan sus cuentas y credenciales de IAM individuales y no una cuenta de grupo compartido para iniciar sesión. Cloud SQL crea una cuenta de base de datos en la instancia para esa cuenta de usuario o servicio después de su primer inicio de sesión.

La actividad de inicio de sesión y base de datos individual para cada usuario o cuenta de servicio aparece en los registros de auditoría. Para fines de auditoría, obtiene el beneficio de ver qué cuenta realizó qué acción en su base de datos.

Para obtener más información sobre el trabajo con grupos de identidad en la nube, consulte la descripción general de la identidad de la nube .

Cuando agrega una cuenta de usuario o servicio a un grupo, se producen los siguientes cambios en la nube SQL:

  • Si ya ha otorgado permisos de inicio de sesión de IAM al grupo, entonces el usuario o cuenta de servicio gana la capacidad de iniciar sesión en la instancia de SQL en la nube porque el usuario o cuenta de servicio pertenece al grupo.
  • El usuario hereda automáticamente cualquier privilegio de base de datos que se haya otorgado al grupo.

Cuando elimina una cuenta de usuario o servicio del grupo, se producen los siguientes cambios en la nube SQL:

  • El usuario pierde los privilegios de la base de datos que se heredaron previamente por ser miembro del grupo.
  • El usuario aún puede 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 del grupo. Sin embargo, el usuario no tendrá privilegios de base de datos de su antiguo grupo de membresía al iniciar sesión.

Mejores prácticas de autenticación del grupo IAM

  • Cuando revoca el permiso de inicio de sesión ( cloudsql.instances.login ) para un grupo IAM en identidad en la nube, asegúrese de eliminar el grupo de la instancia de SQL en la nube.
  • Cuando elimine un grupo de una identidad en la nube, asegúrese de eliminar también ese grupo de la instancia de Cloud SQL.
  • Use grupos para configurar el control de acceso basado en roles en su base de datos. Siempre proporcione los privilegios menos requeridos al grupo.
  • No otorgue roles de autenticación del grupo IAM a los usuarios incorporados. Por ejemplo, si tiene un usuario incorporado, user-a y crea un usuario de autenticación de grupo IAM, [email protected] , no otorgue el rol de [email protected] a user-a .

Restricciones de autenticación del grupo IAM

  • Al usar la autenticación del grupo IAM, si tiene una instancia de SQL en la nube con Read Replicas, primero debe iniciar sesión en la instancia primaria antes de iniciar sesión en la instancia de réplica de lectura. Después de su primer inicio de sesión en la instancia primaria, la información del usuario del grupo se replica a las réplicas de lectura. Para inicios de sesión posteriores, puede iniciar sesión directamente a la réplica de lectura.
  • Puede agregar un máximo de 200 grupos IAM a una instancia.
  • No puede agregar cuentas individuales de usuario o servicio que pertenecen a un grupo en la misma instancia. En otras palabras, no puede agregar una cuenta con el tipo CLOUD_IAM_USER o CLOUD_IAM_SERVICE_ACCOUNT si una cuenta idéntica con Tipo CLOUD_IAM_GROUP_USER o CLOUD_IAM_GROUP_SERVICE_ACCOUNT ya existe.
  • Si ya existe una cuenta individual en una instancia con el tipo CLOUD_IAM_USER o CLOUD_IAM_SERVICE_ACCOUNT , entonces la cuenta no se puede usar para la autenticación del grupo IAM. Estos tipos de usuarios no heredan los roles de IAM y los privilegios de la base de datos de un grupo.

    Para solucionar este problema y usar la cuenta con la autenticación del grupo IAM, elimine la cuenta de servicio o usuario de IAM individual.

    Para obtener más información, consulte que una cuenta de usuario o servicio de IAM existente no esté heredando los privilegios de la base de datos otorgados a su grupo .
  • Los cambios en la membresía del grupo de identidad en la nube, como la adición de una cuenta, tardan aproximadamente 15 minutos en propagarse. Esto se suma al tiempo requerido para los cambios IAM .

Autenticación de base de datos automática versus manual de IAM

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

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

La autenticación automática de la base de datos IAM le permite entregar y administrar los tokens de acceso a un conector SQL de nube intermediario, como el proxy de autenticación SQL Cloud o uno de los conectores de idioma Cloud SQL. Con la autenticación automática de la base de datos IAM, los usuarios deben aprobar solo 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 SQL en la nube y es compatible con el proxy de autores SQL Cloud , el conector GO , el conector Java y el conector Python .

Para la experiencia más segura y confiable, le recomendamos que utilice la autenticación automática de la base de datos IAM. La autenticación de la base de datos IAM utiliza tokens de acceso OAuth 2.0, que son de corta duración y válidos por solo una hora. Los conectores SQL en la nube pueden solicitar y actualizar estos tokens, asegurando que los procesos o aplicaciones de larga vida que dependen de la agrupación de conexión pueden tener conexiones estables. Se recomienda encarecidamente la autenticación automática de la base de datos IAM sobre la autenticación manual.

Para obtener más información, consulte Iniciar sesión con autenticación automática de la base de datos IAM .

Autenticación de base de datos Manual IAM

La autenticación manual de la base de datos IAM requiere que el principal IAM pase explícitamente el token de acceso para el atributo de contraseña en la solicitud de conexión del cliente. Los directores primero deben iniciar sesión en Google Cloud y solicite explícitamente el token de acceso desde IAM.

Usando la CLI GCLOUD , puede solicitar explícitamente un token OAuth 2.0 con el alcance de la API de administración de SQL Cloud que se utiliza para iniciar sesión en la base de datos. Cuando inicia sesión como usuario de la base de datos con autenticación de la 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 SQL en la nube.

Iniciar 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 la autenticación de la base de datos Manual IAM .

Acceso consciente de contexto y autenticación de la base de datos IAM

Si está utilizando el acceso al consumo de contexto en su configuración de IAM, entonces no puede usar un conector SQL en la nube, como el proxy Cloud SQL Auth o uno de los conectores de lenguaje Cloud SQL con la autenticación de la base de datos IAM. Los intentos de iniciar sesión manual o automáticamente con la autenticación IAM fallarán. Conéctese directamente a la instancia en su lugar.

Administración de la cuenta de usuario y de servicio

Para proporcionar a los usuarios y cuentas de servicio acceso a bases de datos en una instancia utilizando la autenticación de la base de datos IAM, debe agregarlos a la instancia o agregarlos a un grupo que tenga acceso a la instancia. Para obtener más información, consulte Agregar un usuario o cuenta de servicio que use IAM .

Si utiliza el Google Cloud Consola Para agregar usuarios o cuentas de servicio, Cloud SQL le pide que agregue el rol de "Usuario de SQL en la nube" al usuario. Se requiere este rol para que los usuarios inicien sesión en la instancia.

Si agrega usuarios con gcloud o la API, debe otorgar privilegios de inicio de sesión manualmente. Use el comando de subvención PostgreSQL para otorgar privilegios de base de datos .

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

Puede habilitar la autenticación de la base de datos IAM en una instancia utilizando el indicador cloudsql.iam_authentication . Una vez que habilita este indicador, la instancia habilita los inicios de sesión de las cuentas que están configuradas para la autenticación de la base de datos IAM.

Este indicador es necesario para la autenticación del grupo IAM y la autenticación de la base de datos IAM.

Configurar el indicador no impide que los usuarios existentes no IAM usen sus nombres de usuario y contraseñas para iniciar sesión. Sin embargo, si deshabilita este indicador en la instancia, cualquier usuario que agregó previamente utilizando la autenticación de la base de datos IAM pierde acceso a la instancia. Para obtener más información, consulte Configuración de instancias para la autenticación de la base de datos IAM .

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

Leer réplicas La autenticación de la base de datos IAM no está habilitada en una réplica de lectura automáticamente, incluso cuando 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 IAM. Para obtener más información, consulte Configurar los inicios de sesión de réplicas de lectura para la autenticación de la base de datos IAM .
Instancias restauradas Si una instancia se respaldaba previamente y luego se restauró a la misma instancia o diferente en el mismo proyecto, se aplican las autorizaciones de inicio de sesión del usuario actuales. Si restaura una copia de seguridad a una nueva instancia en otro proyecto, debe configurar las autorizaciones del usuario para la nueva instancia. Para obtener más información, consulte Agregar una cuenta de usuario o servicio que utilice la autenticación de la base de datos IAM .

Acerca de las condiciones de IAM

Las condiciones de IAM le permiten otorgar roles basados ​​en una variedad de atributos. Por ejemplo, puede permitir el acceso solo a ciertas fechas y horarios o otorgar acceso solo a los recursos de Cloud SQL con ciertos nombres.

Para obtener más información sobre las condiciones de IAM, consulte la descripción general de la página de condiciones IAM . También puede obtener más información sobre el uso de condiciones IAM con Cloud SQL, incluidos ejemplos.

Trabajar con registros de auditoría en la nube

Para mantener registros de acceso a datos, incluidos los inicios de sesión, puede usar registros de auditoría. Los registros de auditoría en la nube están desactivados, por defecto. Debe activar los registros de auditoría de acceso a datos para el seguimiento de inicio de sesión. El uso de registro de auditoría para este propósito incurre en costos para el registro de datos. Para obtener más información, consulte los registros de auditoría , la configuración de registros de auditoría de acceso a datos y los precios de los datos de registro .

Restricciones

  1. El inicio de sesión para una cuenta de usuario de autenticación de base de datos IAM debe ser todo minúscula. Por ejemplo, [email protected] . [email protected] no está permitido.
  2. Para la seguridad, los inicios de sesión utilizando la autenticación de la base de datos IAM solo están disponibles en una conexión SSL. Las conexiones sin cifrar son rechazadas.
  3. Hay una cuota de inicio de sesión por minuto para cada instancia, que incluye inicios de sesión exitosos y no exitosos. Cuando se excede la cuota, los inicios de sesión no están disponibles temporalmente. Recomendamos que evite inicios de sesión frecuentes y restrinja los inicios de sesión utilizando redes autorizadas . La cuota para la autorización de inicios de sesión es de 12,000 por minuto, por instancia.

¿Qué sigue?

,

Google Cloud Ofrece gestión de identidad y acceso (IAM), que le permite dar acceso a Google Cloud recursos y evitar el acceso no deseado a otros recursos. Esta página describe cómo Cloud SQL está integrado con IAM y cómo puede usar IAM para administrar el acceso a los recursos de Cloud SQL y para la autenticación de la base de datos. Para una descripción detallada de Google Cloud Iam, ver documentación de IAM .

Cloud SQL proporciona un conjunto de roles predefinidos diseñados para ayudarlo a controlar el acceso a sus recursos de Cloud SQL. También puede crear sus propios roles personalizados , si los roles predefinidos no proporcionan los conjuntos de permisos que necesita. Además, los roles básicos de Legacy (editor, espectador y propietario) también están disponibles para usted, aunque no proporcionan el mismo control de grano fino que los roles de Cloud SQL. En particular, los roles básicos proporcionan acceso a recursos en todo Google Cloud, en lugar de solo para la nube SQL. Para más información sobre BASIC Google Cloud roles, ver roles básicos .

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

Referencias de IAM para Cloud SQL

Conceptos de autenticación de IAM

Al usar la autenticación IAM, el permiso para acceder a un recurso (una instancia de SQL en la nube) no se otorga directamente al usuario final. En cambio, los permisos se agrupan en roles , y se otorgan roles a los directores . Para obtener más información, consulte la descripción general de IAM .

Los administradores que tienen usuarios inician sesión a través de la autenticación de la base de datos IAM pueden usar la autenticación IAM para administrar centralmente el control de acceso a sus instancias utilizando políticas de IAM.

Las políticas de IAM involucran las siguientes entidades:

  • Directores . En la nube SQL, puede usar varios tipos de principios: 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 papel es una colección de permisos. Puede otorgar roles a los directores para proporcionarles los privilegios requeridos para realizar tareas específicas. Por ejemplo, con la autenticación de la base de datos de IAM, un principal requiere que el permiso de cloudsql.instances.login se inicie sesión en una instancia, que se incluye en el rol de usuario de la instancia de Cloud SQL . Para obtener el permiso, vincula el usuario, la cuenta de servicio o el grupo al rol de SQL de la nube predefinido o un rol personalizado que incluye el permiso. Para obtener más información sobre los roles IAM, consulte los roles .
  • Recurso . Los recursos a los que acceden a los directores son instancias de SQL en la nube. Por defecto, los enlaces de política de IAM se aplican en el nivel del proyecto, de modo que los directores reciban permisos de roles para todas las instancias de Cloud SQL en el proyecto.

Autenticación de base de datos 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, puede usar los siguientes tipos de autenticación de bases de datos para 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 un usuario de la base de datos.
  • La autenticación de la base de datos IAM usa IAM para autenticar a un usuario mediante el uso de un token de acceso.

Comparar opciones de autenticación de la base de datos

La siguiente tabla compara diferentes métodos de autenticación de la base de datos para la nube SQL.

Característica Autenticación de base de datos incorporada Autenticación de la base de datos IAM (individual) Autenticación del grupo IAM
Método de autenticación Contraseña Token de autenticación temporal Token de autenticación temporal
Cifrado de tráfico de red SSL no requerido SSL requerido SSL requerido
Gestión de usuarios Manual Centralizado a través de IAM Centralizado a través de grupos de identidad de IAM y nubes

Autenticación del grupo IAM

La autenticación del grupo IAM le permite administrar a los usuarios de SQL en la nube a nivel de grupo. Un ejemplo de un grupo incluye un grupo de identidad en la nube . Esta característica simplifica la gestión de usuarios de la base de datos. Puede administrar el rol o los permisos de Cloud SQL IAM para múltiples cuentas a la vez en lugar de tener que actualizar cada usuario o cuenta de servicio individualmente. También puede otorgar y revocar los privilegios de la base de datos para un grupo de identidad en la nube. Cualquier cuenta nueva que agregue al grupo de identidad en la nube herede los privilegios de ese grupo.

Con la autenticación del grupo IAM, puede hacer lo siguiente:

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

A pesar de que los roles y permisos de IAM se asignan a nivel de grupo, los usuarios y las cuentas de servicio utilizan sus cuentas y credenciales de IAM individuales y no una cuenta de grupo compartido para iniciar sesión. Cloud SQL crea una cuenta de base de datos en la instancia para esa cuenta de usuario o servicio después de su primer inicio de sesión.

La actividad de inicio de sesión y base de datos individual para cada usuario o cuenta de servicio aparece en los registros de auditoría. Para fines de auditoría, obtiene el beneficio de ver qué cuenta realizó qué acción en su base de datos.

Para obtener más información sobre el trabajo con grupos de identidad en la nube, consulte la descripción general de la identidad de la nube .

Cuando agrega una cuenta de usuario o servicio a un grupo, se producen los siguientes cambios en la nube SQL:

  • Si ya ha otorgado permisos de inicio de sesión de IAM al grupo, entonces el usuario o cuenta de servicio gana la capacidad de iniciar sesión en la instancia de SQL en la nube porque el usuario o cuenta de servicio pertenece al grupo.
  • El usuario hereda automáticamente cualquier privilegio de base de datos que se haya otorgado al grupo.

Cuando elimina una cuenta de usuario o servicio del grupo, se producen los siguientes cambios en la nube SQL:

  • El usuario pierde los privilegios de la base de datos que se heredaron previamente por ser miembro del grupo.
  • El usuario aún puede 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 del grupo. Sin embargo, el usuario no tendrá privilegios de base de datos de su antiguo grupo de membresía al iniciar sesión.

Mejores prácticas de autenticación del grupo IAM

  • Cuando revoca el permiso de inicio de sesión ( cloudsql.instances.login ) para un grupo IAM en identidad en la nube, asegúrese de eliminar el grupo de la instancia de SQL en la nube.
  • Cuando elimine un grupo de una identidad en la nube, asegúrese de eliminar también ese grupo de la instancia de Cloud SQL.
  • Use grupos para configurar el control de acceso basado en roles en su base de datos. Siempre proporcione los privilegios menos requeridos al grupo.
  • No otorgue roles de autenticación del grupo IAM a los usuarios incorporados. Por ejemplo, si tiene un usuario incorporado, user-a y crea un usuario de autenticación de grupo IAM, [email protected] , no otorgue el rol de [email protected] a user-a .

Restricciones de autenticación del grupo IAM

  • Al usar la autenticación del grupo IAM, si tiene una instancia de SQL en la nube con Read Replicas, primero debe iniciar sesión en la instancia primaria antes de iniciar sesión en la instancia de réplica de lectura. Después de su primer inicio de sesión en la instancia primaria, la información del usuario del grupo se replica a las réplicas de lectura. Para inicios de sesión posteriores, puede iniciar sesión directamente a la réplica de lectura.
  • Puede agregar un máximo de 200 grupos IAM a una instancia.
  • No puede agregar cuentas individuales de usuario o servicio que pertenecen a un grupo en la misma instancia. En otras palabras, no puede agregar una cuenta con el tipo CLOUD_IAM_USER o CLOUD_IAM_SERVICE_ACCOUNT si una cuenta idéntica con Tipo CLOUD_IAM_GROUP_USER o CLOUD_IAM_GROUP_SERVICE_ACCOUNT ya existe.
  • Si ya existe una cuenta individual en una instancia con el tipo CLOUD_IAM_USER o CLOUD_IAM_SERVICE_ACCOUNT , entonces la cuenta no se puede usar para la autenticación del grupo IAM. Estos tipos de usuarios no heredan los roles de IAM y los privilegios de la base de datos de un grupo.

    Para solucionar este problema y usar la cuenta con la autenticación del grupo IAM, elimine la cuenta de servicio o usuario de IAM individual.

    Para obtener más información, consulte que una cuenta de usuario o servicio de IAM existente no esté heredando los privilegios de la base de datos otorgados a su grupo .
  • Los cambios en la membresía del grupo de identidad en la nube, como la adición de una cuenta, tardan aproximadamente 15 minutos en propagarse. Esto se suma al tiempo requerido para los cambios IAM .

Autenticación de base de datos automática versus manual de IAM

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

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

La autenticación automática de la base de datos IAM le permite entregar y administrar los tokens de acceso a un conector SQL de nube intermediario, como el proxy de autenticación SQL Cloud o uno de los conectores de idioma Cloud SQL. Con la autenticación automática de la base de datos IAM, los usuarios deben aprobar solo 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 SQL en la nube y es compatible con el proxy de autores SQL Cloud , el conector GO , el conector Java y el conector Python .

Para la experiencia más segura y confiable, le recomendamos que utilice la autenticación automática de la base de datos IAM. La autenticación de la base de datos IAM utiliza tokens de acceso OAuth 2.0, que son de corta duración y válidos por solo una hora. Los conectores SQL en la nube pueden solicitar y actualizar estos tokens, asegurando que los procesos o aplicaciones de larga vida que dependen de la agrupación de conexión pueden tener conexiones estables. Se recomienda encarecidamente la autenticación automática de la base de datos IAM sobre la autenticación manual.

Para obtener más información, consulte Iniciar sesión con autenticación automática de la base de datos IAM .

Autenticación de base de datos Manual IAM

La autenticación manual de la base de datos IAM requiere que el principal IAM pase explícitamente el token de acceso para el atributo de contraseña en la solicitud de conexión del cliente. Los directores primero deben iniciar sesión en Google Cloud y solicite explícitamente el token de acceso desde IAM.

Usando la CLI GCLOUD , puede solicitar explícitamente un token OAuth 2.0 con el alcance de la API de administración de SQL Cloud que se utiliza para iniciar sesión en la base de datos. Cuando inicia sesión como usuario de la base de datos con autenticación de la 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 SQL en la nube.

Iniciar 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 la autenticación de la base de datos Manual IAM .

Acceso consciente de contexto y autenticación de la base de datos IAM

Si está utilizando el acceso al consumo de contexto en su configuración de IAM, entonces no puede usar un conector SQL en la nube, como el proxy Cloud SQL Auth o uno de los conectores de lenguaje Cloud SQL con la autenticación de la base de datos IAM. Los intentos de iniciar sesión manual o automáticamente con la autenticación IAM fallarán. Conéctese directamente a la instancia en su lugar.

Administración de la cuenta de usuario y de servicio

Para proporcionar a los usuarios y cuentas de servicio acceso a bases de datos en una instancia utilizando la autenticación de la base de datos IAM, debe agregarlos a la instancia o agregarlos a un grupo que tenga acceso a la instancia. Para obtener más información, consulte Agregar un usuario o cuenta de servicio que use IAM .

Si utiliza el Google Cloud Consola Para agregar usuarios o cuentas de servicio, Cloud SQL le pide que agregue el rol de "Usuario de SQL en la nube" al usuario. Se requiere este rol para que los usuarios inicien sesión en la instancia.

Si agrega usuarios con gcloud o la API, debe otorgar privilegios de inicio de sesión manualmente. Use el comando de subvención PostgreSQL para otorgar privilegios de base de datos .

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

Puede habilitar la autenticación de la base de datos IAM en una instancia utilizando el indicador cloudsql.iam_authentication . Una vez que habilita este indicador, la instancia habilita los inicios de sesión de las cuentas que están configuradas para la autenticación de la base de datos IAM.

Este indicador es necesario para la autenticación del grupo IAM y la autenticación de la base de datos IAM.

Configurar el indicador no impide que los usuarios existentes no IAM usen sus nombres de usuario y contraseñas para iniciar sesión. Sin embargo, si deshabilita este indicador en la instancia, cualquier usuario que agregó previamente utilizando la autenticación de la base de datos IAM pierde acceso a la instancia. Para obtener más información, consulte Configuración de instancias para la autenticación de la base de datos IAM .

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

Leer réplicas La autenticación de la base de datos IAM no está habilitada en una réplica de lectura automáticamente, incluso cuando 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 IAM. Para obtener más información, consulte Configurar los inicios de sesión de réplicas de lectura para la autenticación de la base de datos IAM .
Instancias restauradas Si una instancia se respaldaba previamente y luego se restauró a la misma instancia o diferente en el mismo proyecto, se aplican las autorizaciones de inicio de sesión del usuario actuales. Si restaura una copia de seguridad a una nueva instancia en otro proyecto, debe configurar las autorizaciones del usuario para la nueva instancia. Para obtener más información, consulte Agregar una cuenta de usuario o servicio que utilice la autenticación de la base de datos IAM .

Acerca de las condiciones de IAM

Las condiciones de IAM le permiten otorgar roles basados ​​en una variedad de atributos. Por ejemplo, puede permitir el acceso solo a ciertas fechas y horarios o otorgar acceso solo a los recursos de Cloud SQL con ciertos nombres.

Para obtener más información sobre las condiciones de IAM, consulte la descripción general de la página de condiciones IAM . También puede obtener más información sobre el uso de condiciones IAM con Cloud SQL, incluidos ejemplos.

Trabajar con registros de auditoría en la nube

Para mantener registros de acceso a datos, incluidos los inicios de sesión, puede usar registros de auditoría. Los registros de auditoría en la nube están desactivados, por defecto. Debe activar los registros de auditoría de acceso a datos para el seguimiento de inicio de sesión. El uso de registro de auditoría para este propósito incurre en costos para el registro de datos. Para obtener más información, consulte los registros de auditoría , la configuración de registros de auditoría de acceso a datos y los precios de los datos de registro .

Restricciones

  1. The login for an IAM database authentication user account must be all lowercase. For example, [email protected] . [email protected] is not allowed.
  2. For security, logins using IAM database authentication are only available on an SSL connection. Unencrypted connections are rejected.
  3. There is a per-minute login quota for each instance, which includes both successful and unsuccessful logins. When the quota is exceeded, logins are temporarily unavailable. We recommend that you avoid frequent logins and restrict logins using authorized networks . The quota for authorization of logins is 12,000 per minute, per instance.

¿Qué sigue?