En esta página se describe cómo añadir y gestionar usuarios, cuentas de servicio y grupos en una instancia de Cloud SQL que usa la autenticación de bases de datos de gestión de identidades y accesos.
Para obtener más información sobre la integración de IAM, consulta Autenticación de IAM.
Antes de empezar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the gcloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the gcloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
- Asegúrate de que tu cuenta de usuario tenga el rol Administrador de Cloud SQL.
- Habilita la autenticación de bases de datos de gestión de identidades y accesos en tu instancia de Cloud SQL.
- Asigna el rol de
cloudsql.instanceUser
gestión de identidades y accesos necesario a las entidades de gestión de identidades y accesos, como usuarios de gestión de identidades y accesos, cuentas de servicio o grupos, para iniciar sesión en la instancia de Cloud SQL. - Si vas a añadir un usuario o una cuenta de servicio concretos a la instancia de Cloud SQL, debes asignar el rol de IAM individualmente a cada usuario y cuenta de servicio.
- Si añades un grupo, debes asignar el rol de gestión de identidades y accesos al grupo, ya que los miembros del grupo heredarán automáticamente los permisos de gestión de identidades y accesos asociados al rol. Para obtener más información sobre cómo crear grupos en Cloud Identity, consulta el artículo Crear y gestionar grupos de Google en la consola Google Cloud .
- Puede asignar el rol en un proyecto que contenga instancias de Cloud SQL mediante la página Gestión de identidades y accesos de la Google Cloud consola, la CLI de gcloud, Terraform o la API Cloud SQL Admin. Para obtener más información, consulta el artículo Añadir un enlace de política de IAM a un usuario, una cuenta de servicio o un grupo.
- Si usas una cuenta de servicio, asegúrate de haber añadido una cuenta de servicio para cada servicio que requiera acceso a las bases de datos del proyecto.
-
En la consola, ve a la página Gestión de identidades y accesos. Google Cloud
- Haz clic en Añadir.
- En Miembros nuevos, introduce una dirección de correo electrónico. Puedes añadir usuarios concretos, cuentas de servicio o grupos como miembros, pero cada proyecto debe tener al menos una entidad principal como miembro.
- En Rol, ve a Cloud SQL y selecciona Usuario de instancia de Cloud SQL.
- Opcional: Si quieres conectarte mediante el proxy de autenticación de Cloud SQL o los conectores de lenguaje de Cloud SQL, selecciona también Cliente de Cloud SQL.
- Haz clic en Guardar.
- PROJECT_ID: el ID del proyecto para el que quieres autorizar al usuario.
- USERNAME: la dirección de correo del usuario.
- PROJECT_ID: el ID del proyecto para el que quieres autorizar al usuario.
- SERVICE_ACCT: la dirección de correo de la cuenta de servicio.
- PROJECT_ID: ID del proyecto al que quieres autorizar a los miembros del grupo para que lo usen.
- GROUP_EMAIL_ADDRESS: la dirección de correo del grupo. Por ejemplo,
example-group@example.com
. - Abre Cloud Shell.
-
Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.
Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.
-
En Cloud Shell, crea un directorio y un archivo nuevo en ese directorio. El nombre del archivo debe tener la extensión
.tf
. Por ejemplo,main.tf
. En este tutorial, nos referiremos al archivo comomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.
Copia el código de ejemplo en el archivo
main.tf
que acabas de crear.También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.
- Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
terraform init
Si quieres usar la versión más reciente del proveedor de Google, incluye la opción
-upgrade
:terraform init -upgrade
-
Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
terraform plan
Haga las correcciones necesarias en la configuración.
-
Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo
yes
en la petición:terraform apply
Espera hasta que Terraform muestre el mensaje "Apply complete!".
- Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.
- Para inhabilitar la protección contra la eliminación, en el archivo de configuración de Terraform, asigna el valor
false
al argumentodeletion_protection
.deletion_protection = "false"
- Aplica la configuración de Terraform actualizada ejecutando el siguiente comando e introduciendo
yes
en la petición:terraform apply
-
Para quitar los recursos que se hayan aplicado anteriormente con tu configuración de Terraform, ejecuta el siguiente comando e introduce
yes
en la petición:terraform destroy
- Abre Cloud Shell.
-
Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.
Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.
-
En Cloud Shell, crea un directorio y un archivo nuevo en ese directorio. El nombre del archivo debe tener la extensión
.tf
. Por ejemplo,main.tf
. En este tutorial, nos referiremos al archivo comomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.
Copia el código de ejemplo en el archivo
main.tf
que acabas de crear.También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.
- Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
terraform init
Si quieres usar la versión más reciente del proveedor de Google, incluye la opción
-upgrade
:terraform init -upgrade
-
Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
terraform plan
Haga las correcciones necesarias en la configuración.
-
Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo
yes
en la petición:terraform apply
Espera hasta que Terraform muestre el mensaje "Apply complete!".
- Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.
- Para inhabilitar la protección contra la eliminación, en el archivo de configuración de Terraform, asigna el valor
false
al argumentodeletion_protection
.deletion_protection = "false"
- Aplica la configuración de Terraform actualizada ejecutando el siguiente comando e introduciendo
yes
en la petición:terraform apply
-
Para quitar los recursos que se hayan aplicado anteriormente con tu configuración de Terraform, ejecuta el siguiente comando e introduce
yes
en la petición:terraform destroy
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
- En el menú de navegación de SQL, selecciona Usuarios.
- Haz clic en Añadir cuenta de usuario. Se abre la pestaña Añadir una cuenta de usuario a la instancia instance_name.
- Haz clic en el botón de selección Cloud IAM.
- Añade la dirección de correo del usuario o de la cuenta de servicio que quieras añadir en el campo Principal.
- Haz clic en Añadir. El usuario o la cuenta de servicio ahora se encuentran en la lista de cuentas de usuario.
Si el usuario no tiene asignado el rol de gestión de identidades y accesos
cloudsql.instanceUser
después de crear la cuenta de usuario, aparecerá el iconojunto al nombre de usuario.
Para conceder permisos de inicio de sesión al usuario, haga clic en el icono y, a continuación, seleccione Añadir rol de IAM. Si el icono ya no aparece, significa que a la cuenta de usuario se le ha asignado el rol de gestión de identidades y accesos que le da permiso para iniciar sesión.
- USERNAME: la dirección de correo del usuario.
- INSTANCE_NAME: el nombre de la instancia a la que quieres autorizar el acceso del usuario.
- SERVICE_ACCT: la dirección de correo de la cuenta de servicio.
- INSTANCE_NAME: el nombre de la instancia a la que quieres autorizar el acceso de la cuenta de servicio.
- Abre Cloud Shell.
-
Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.
Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.
-
En Cloud Shell, crea un directorio y un archivo nuevo en ese directorio. El nombre del archivo debe tener la extensión
.tf
. Por ejemplo,main.tf
. En este tutorial, nos referiremos al archivo comomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.
Copia el código de ejemplo en el archivo
main.tf
que acabas de crear.También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.
- Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
terraform init
Si quieres usar la versión más reciente del proveedor de Google, incluye la opción
-upgrade
:terraform init -upgrade
-
Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
terraform plan
Haga las correcciones necesarias en la configuración.
-
Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo
yes
en la petición:terraform apply
Espera hasta que Terraform muestre el mensaje "Apply complete!".
- Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.
- Para inhabilitar la protección contra la eliminación, en el archivo de configuración de Terraform, asigna el valor
false
al argumentodeletion_protection
.deletion_protection = "false"
- Aplica la configuración de Terraform actualizada ejecutando el siguiente comando e introduciendo
yes
en la petición:terraform apply
-
Para quitar los recursos que se hayan aplicado anteriormente con tu configuración de Terraform, ejecuta el siguiente comando e introduce
yes
en la petición:terraform destroy
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de instancia de la instancia a la que vas a añadir el usuario
- USERNAME: la dirección de correo del usuario
- SERVICE_ACCT: el correo de la cuenta de servicio
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de instancia de la instancia a la que vas a añadir la cuenta de servicio
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de instancia de la instancia a la que vas a añadir el usuario
- USERNAME: la dirección de correo del usuario
- SERVICE_ACCT: el correo de la cuenta de servicio
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de instancia de la instancia a la que vas a añadir la cuenta de servicio
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
- En el menú de navegación de SQL, selecciona Usuarios.
- Haz clic en Añadir cuenta de usuario. Se abre la pestaña Añadir una cuenta de usuario a la instancia instance_name.
- Haz clic en el botón de selección Cloud IAM.
- Añade la dirección de correo del grupo que quieras añadir en el campo Principal.
- Haz clic en Añadir. El grupo ahora aparece en la lista de usuarios.
Si el grupo no tiene asignado el rol de gestión de identidades y accesos
cloudsql.instanceUser
después de crear la cuenta de usuario, aparecerá el iconojunto al grupo.
Para dar permisos de inicio de sesión a los miembros del grupo, haz clic en el icono y, a continuación, selecciona Añadir rol de gestión de identidades y accesos. Si el icono ya no aparece, significa que a todos los miembros del grupo se les ha asignado el rol que otorga el permiso de inicio de sesión.
- GROUP_EMAIL_ADDRESS: la dirección de correo del grupo de Cloud Identity que quieres añadir a la instancia. Por ejemplo, example-group@example.com.
- INSTANCE_NAME: el nombre de la instancia en la que quieres añadir el grupo.
- Abre Cloud Shell.
-
Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.
Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.
-
En Cloud Shell, crea un directorio y un archivo nuevo en ese directorio. El nombre del archivo debe tener la extensión
.tf
. Por ejemplo,main.tf
. En este tutorial, nos referiremos al archivo comomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.
Copia el código de ejemplo en el archivo
main.tf
que acabas de crear.También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.
- Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
terraform init
Si quieres usar la versión más reciente del proveedor de Google, incluye la opción
-upgrade
:terraform init -upgrade
-
Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
terraform plan
Haga las correcciones necesarias en la configuración.
-
Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo
yes
en la petición:terraform apply
Espera hasta que Terraform muestre el mensaje "Apply complete!".
- Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.
- Para inhabilitar la protección contra la eliminación, en el archivo de configuración de Terraform, asigna el valor
false
al argumentodeletion_protection
.deletion_protection = "false"
- Aplica la configuración de Terraform actualizada ejecutando el siguiente comando e introduciendo
yes
en la petición:terraform apply
-
Para quitar los recursos que se hayan aplicado anteriormente con tu configuración de Terraform, ejecuta el siguiente comando e introduce
yes
en la petición:terraform destroy
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de la instancia a la que vas a añadir el grupo de Cloud Identity
- GROUP_EMAIL: la dirección de correo del grupo de Cloud Identity
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de la instancia a la que vas a añadir el grupo de Cloud Identity
- GROUP_EMAIL: la dirección de correo del grupo de Cloud Identity
Añade estos usuarios a un grupo.
Añade el grupo a tu instancia.
Asigna al grupo los permisos de gestión de identidades y accesos suficientes para que los miembros del grupo puedan conectarse a tus instancias. Estos cambios pueden tardar en propagarse. Para obtener más información sobre los tiempos de propagación, consulta Propagación de cambios de acceso.
Asigna los privilegios de la base de datos a los usuarios de IAM que vas a migrar al grupo.
Una vez que se hayan aplicado los cambios en la pertenencia al grupo y los permisos de IAM, elimina el usuario de IAM de tu instancia. La próxima vez que el usuario de gestión de identidades y accesos inicie sesión correctamente, se volverá a crear como usuario de grupo de gestión de identidades y accesos, que podrá usar la autenticación de grupo de gestión de identidades y accesos.
- USERNAME: la dirección de correo del usuario. Debes usar comillas alrededor del correo porque contiene caracteres especiales (
@
y.
). - TABLE_NAME: el nombre de la tabla a la que quieres que tenga acceso el usuario.
- GROUP_NAME: la dirección de correo del grupo de Cloud Identity, incluido el
@
y el nombre de dominio. Por ejemplo, si la dirección de correo del grupo de IAM esexample-group@example.com
, el nombre del grupo esexample-group@example.com
. Debes usar comillas alrededor del nombre del grupo porque la cadena contiene caracteres especiales (@
y.
). - TABLE_NAME: el nombre de la tabla a la que quieres que tenga acceso el usuario.
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
- En el menú de navegación de SQL, selecciona Usuarios. En la página se muestra una lista de usuarios de IAM, cuentas de servicio y grupos de Cloud Identity que se han añadido a tu instancia.
- Opcional: Para ver una lista de usuarios de gestión de identidades y accesos o cuentas de servicio que ya han iniciado sesión en la instancia, haz clic en Miembros del grupo de gestión de identidades y accesos autenticados.
- Las cuentas de usuario que son miembros de un grupo tienen el tipo
CLOUD_IAM_GROUP_USER
. - Las cuentas de servicio que son miembros de un grupo tienen el tipo
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Las cuentas de usuario que son cuentas de usuario de autenticación de bases de datos de gestión de identidades y accesos individuales tienen el tipo
CLOUD_IAM_USER
. - Las cuentas de servicio que son cuentas de servicio de autenticación de bases de datos de gestión de identidades y accesos individuales tienen el tipo
CLOUD_IAM_SERVICE_ACCOUNT
. - PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de instancia
- Las cuentas de usuario que son miembros de un grupo tienen el tipo
CLOUD_IAM_GROUP_USER
. - Las cuentas de servicio que son miembros de un grupo tienen el tipo
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Las cuentas de usuario que son cuentas de usuario de autenticación de bases de datos de gestión de identidades y accesos individuales tienen el tipo
CLOUD_IAM_USER
. - Las cuentas de servicio que son cuentas de servicio de autenticación de bases de datos de gestión de identidades y accesos individuales tienen el tipo
CLOUD_IAM_SERVICE_ACCOUNT
. - project-id: tu ID de proyecto
- instance-id: el ID de instancia que quieras
- Las cuentas de usuario que son miembros de un grupo tienen el tipo
CLOUD_IAM_GROUP_USER
. - Las cuentas de servicio que son miembros de un grupo tienen el tipo
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Las cuentas de usuario que son cuentas de usuario de autenticación de bases de datos de gestión de identidades y accesos individuales tienen el tipo
CLOUD_IAM_USER
. - Las cuentas de servicio que son cuentas de servicio de autenticación de bases de datos de gestión de identidades y accesos individuales tienen el tipo
CLOUD_IAM_SERVICE_ACCOUNT
. -
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
- En el menú de navegación de SQL, selecciona Usuarios.
- Haga clic en junto al usuario que quiera quitar.
- Selecciona Quitar. De esta forma, solo se revoca el acceso a esta instancia.
- USERNAME: la dirección de correo electrónico.
- INSTANCE_NAME: el nombre de la instancia de la que quieres quitar al usuario.
- SERVICE_ACCT: la dirección de correo de la cuenta de servicio.
- INSTANCE_NAME: el nombre de la instancia de la que quieres quitar al usuario.
- PROJECT_ID: tu ID de proyecto
- INSTANCE_ID: el ID de instancia que quieras
- USERNAME: la dirección de correo del usuario o de la cuenta de servicio
- PROJECT_ID: tu ID de proyecto
- INSTANCE_ID: el ID de instancia que quieras
- USERNAME: la dirección de correo del usuario o de la cuenta de servicio
- Retirada automática
- Retirada manual
Sigue el procedimiento para quitar automáticamente miembros de grupos de gestión de identidades y accesos para eliminar de la instancia a los usuarios que utilicen el nombre de dominio antiguo.
Vuelve a crear la cuenta iniciando sesión en la instancia de Cloud SQL como cada miembro del grupo de gestión de identidades y accesos y usando la cuenta con el nuevo nombre de dominio. Para obtener más información, consulta Añadir automáticamente miembros de un grupo a una instancia de Cloud SQL.
Sigue el procedimiento para eliminar grupos de gestión de identidades y accesos para quitar de la instancia los grupos que usen el nombre de dominio antiguo.
Sigue el procedimiento para crear grupos de gestión de identidades y accesos para añadir el grupo con el nuevo dominio a la instancia.
Vuelve a conceder privilegios de base de datos al grupo de gestión de identidades y accesos.
- Los usuarios y las cuentas de servicio que pertenecen al grupo de IAM podrán seguir iniciando sesión hasta que se elimine el permiso de IAM
cloudsql.instances.login
del grupo. - Si la eliminación de un grupo provoca que los usuarios o las cuentas de servicio del grupo de IAM no pertenezcan a ningún otro grupo de la instancia, Cloud SQL los eliminará de la instancia.
- Sin embargo, si un usuario de un grupo de gestión de identidades y accesos es el propietario de un objeto de base de datos de la instancia, debes reasignar la propiedad del objeto antes de poder eliminar el usuario manualmente.
- Todos los usuarios y las cuentas de servicio del grupo de gestión de identidades y accesos no pueden iniciar sesión en la instancia.
- Cloud SQL también elimina automáticamente de la instancia a todos los usuarios de grupos de IAM y a las cuentas de servicio.
- Sin embargo, si un usuario de un grupo de gestión de identidades y accesos es el propietario de un objeto de base de datos de la instancia, debes reasignar la propiedad del objeto antes de poder eliminar el usuario manualmente.
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
- En el menú de navegación de SQL, selecciona Usuarios.
- Haz clic en en el grupo que quieras eliminar.
- Selecciona Quitar. De esta forma, solo se revoca el acceso a esta instancia.
- GROUP_NAME: la primera parte de la dirección de correo del grupo de Cloud Identity. Por ejemplo, si usas la dirección de correo
example-group@example.com
, el nombre del grupo de Cloud Identity seráexample-group
. - INSTANCE_NAME: el nombre de la instancia de Cloud SQL con el grupo de Cloud Identity que quieres eliminar.
En la consola, ve a la página Gestión de identidades y accesos. Google Cloud
Verifica que la cuenta sea miembro del grupo añadido a la instancia de Cloud SQL.
Lista los usuarios y las cuentas de servicio de la instancia.
gcloud sql users list --instance=INSTANCE_NAME
En el resultado, comprueba si la cuenta de usuario o de servicio aparece como
CLOUD_IAM_USER
oCLOUD_IAM_SERVICE_ACCOUNT
.Si la cuenta de usuario o de servicio aparece como
CLOUD_IAM_USER
oCLOUD_IAM_SERVICE_ACCOUNT
, quítala de la instancia. La cuenta que vas a quitar es una cuenta de gestión de identidades y accesos individual que no hereda los privilegios de la base de datos del grupo.Vuelve a iniciar sesión en la instancia con la cuenta de usuario o de servicio.
Si vuelves a iniciar sesión en la instancia, se volverá a crear la cuenta con el tipo de cuenta correcto:
CLOUD_IAM_GROUP_USER
oCLOUD_IAM_GROUP_SERVICE_ACCOUNT
.- Más información sobre la autenticación de bases de datos de gestión de identidades y accesos
- Consulta cómo iniciar sesión en una base de datos de Cloud SQL.
- Consulte cómo configurar instancias para la autenticación de bases de datos de gestión de identidades y accesos.
Para obtener más información sobre cómo crear cuentas de servicio, consulta el artículo Crear cuentas de servicio.
Añadir un enlace de política de IAM a un usuario, una cuenta de servicio o un grupo
Este procedimiento añade un enlace de política a la política de gestión de identidades y accesos de un proyecto específico, dado un ID de proyecto y el enlace. El comando de vinculación consta de un miembro, un rol y una condición opcional.
El nombre de usuario de la base de datos debe ser la dirección de correo del usuario de IAM. Por ejemplo, example-user@example.com
. Debe estar en minúsculas y entre comillas, ya que contiene caracteres especiales (@
y .
).
Consola
gcloud
Ejecuta
gcloud projects add-iam-policy-binding
con la marca --role=roles/cloudsql.instanceUser
.
Añadir un enlace de política a una cuenta de usuario
Haz los cambios siguientes:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=user:USERNAME \ --role=roles/cloudsql.instanceUser
Si quieres conectarte mediante el proxy de autenticación de Cloud SQL o los conectores de lenguaje de Cloud SQL, vuelve a ejecutar gcloud projects add-iam-policy-binding
con la marca --role=roles/cloudsql.client
Añadir un enlace de política a una cuenta de servicio
Haz los cambios siguientes:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCT \ --role=roles/cloudsql.instanceUser
Si quieres conectarte mediante el proxy de autenticación de Cloud SQL o los conectores de lenguaje de Cloud SQL, vuelve a ejecutar gcloud projects add-iam-policy-binding
con la marca --role=roles/cloudsql.client
Añadir un enlace de política a un grupo de Cloud Identity
Haz los cambios siguientes:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=group:GROUP_EMAIL_ADDRESS \ --role=roles/cloudsql.instanceUser
Todos los miembros del grupo especificado tienen el rol Usuario de instancia de Cloud SQL y pueden iniciar sesión en las instancias de este proyecto.
Si quieres conectarte mediante el proxy de autenticación de Cloud SQL o los conectores de lenguaje de Cloud SQL, vuelve a ejecutar gcloud projects add-iam-policy-binding
con la marca --role=roles/cloudsql.client
Terraform
Para añadir la vinculación de políticas necesaria a las cuentas de usuario y de servicio de gestión de identidades y accesos, usa un recurso de Terraform.
Aplica los cambios
Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud
Preparar Cloud Shell
Preparar el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
Aplica los cambios
Eliminar los cambios
Para eliminar los cambios, sigue estos pasos:
Terraform
Para añadir la vinculación de políticas necesaria a las cuentas de usuario y de servicio de gestión de identidades y accesos, usa un recurso de Terraform.
Aplica los cambios
Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud
Preparar Cloud Shell
Preparar el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
Aplica los cambios
Eliminar los cambios
Para eliminar los cambios, sigue estos pasos:
REST
Asigna los roles cloudsql.instanceUser
y cloudsql.client
a ambos tipos de cuentas editando la política de vinculación JSON o YAML
que devuelve el comando get-iam-policy
. Ten en cuenta que este cambio en la política no entrará en vigor hasta que establezcas la política actualizada.
{ "role": "roles/cloudsql.instanceUser", "members": [ "user:example-user@example.com" "serviceAccount:service1@sql.iam.gserviceaccount.com" "group:example-group@example.com" ] } { "role": "roles/cloudsql.client", "members": [ "user:example-user@example.com" "serviceAccount:service1@sql.iam.gserviceaccount.com" ] }
Añadir un usuario o una cuenta de servicio de IAM a una instancia de Cloud SQL
Debes crear una cuenta de usuario para cada usuario de gestión de identidades y accesos o cuenta de servicio que añadas a la instancia de Cloud SQL para acceder a las bases de datos. Si añades un grupo de gestión de identidades y accesos, no tienes que crear una cuenta de usuario para cada miembro de ese grupo.
El nombre de usuario de la base de datos debe ser la dirección de correo del usuario de IAM y estar en minúsculas.
Por ejemplo, example-user@example.com
.
Cuando se usan comandos REST, el nombre de usuario debe ir entre comillas porque contiene caracteres especiales (@
y .
). Las cuentas de servicio usan el formato service-account-name@project-id.iam.gserviceaccount.com
.
Para añadir un usuario o una cuenta de servicio de gestión de identidades y accesos, añade una cuenta de usuario y selecciona Gestión de identidades y accesos como método de autenticación:
Consola
.gcloud
Crear una cuenta de usuario
Usa el correo, como example-user@example.com
, para identificar al usuario.
Haz los cambios siguientes:
gcloud sql users create USERNAME \ --instance=INSTANCE_NAME \ --type=cloud_iam_user
Crear una cuenta de servicio
Haz los cambios siguientes:
gcloud sql users create SERVICE_ACCT \ --instance=INSTANCE_NAME \ --type=cloud_iam_service_account
Terraform
Para añadir usuarios y cuentas de servicio de gestión de identidades y accesos en una instancia con la autenticación de bases de datos de gestión de identidades y accesos habilitada, usa un recurso de Terraform.
Aplica los cambios
Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud
Preparar Cloud Shell
Preparar el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
Aplica los cambios
Eliminar los cambios
Para eliminar los cambios, sigue estos pasos:
REST v1
Crear una cuenta de usuario
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
Cuerpo JSON de la solicitud:
{ "name": "USERNAME", "type": "CLOUD_IAM_USER" }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:44:16.656Z", "startTime": "2020-02-07T22:44:16.686Z", "endTime": "2020-02-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Crear una cuenta de servicio
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
Cuerpo JSON de la solicitud:
{ "name": "SERVICE_ACCT", "type": "CLOUD_IAM_SERVICE_ACCOUNT" }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-11-20T04:08:00.211Z", "startTime": "2020-11-20T04:08:00.240Z", "endTime": "2020-11-20T04:08:02.003Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
Crear una cuenta de usuario
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
Cuerpo JSON de la solicitud:
{ "name": "USERNAME", "type": "CLOUD_IAM_USER" }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:44:16.656Z", "startTime": "2020-02-07T22:44:16.686Z", "endTime": "2020-02-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Crear una cuenta de servicio
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
Cuerpo JSON de la solicitud:
{ "name": "SERVICE_ACCT", "type": "CLOUD_IAM_SERVICE_ACCOUNT" }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-11-20T04:08:00.211Z", "startTime": "2020-11-20T04:08:00.240Z", "endTime": "2020-11-20T04:08:02.003Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Añadir un grupo de IAM a una instancia de Cloud SQL
Para usar la autenticación de grupos de IAM y añadir un grupo de IAM a una instancia de Cloud SQL, sigue uno de los procedimientos de esta sección. Después de añadir el grupo de gestión de identidades y accesos, no es necesario que añadas a los miembros del grupo a la instancia. Para obtener más información, consulta Añadir automáticamente miembros de un grupo a una instancia de Cloud SQL.
Los nombres de grupos de IAM tienen las mismas limitaciones de longitud que los identificadores de PostgreSQL y solo pueden tener 63 caracteres.
Si tienes un grupo de IAM con un nombre que supera la limitación de longitud del nombre de usuario de un motor de base de datos, puedes seguir usándolo para la autenticación de grupos de IAM anidándolo en un grupo de IAM principal cuyo nombre cumpla la limitación de longitud. El grupo de IAM principal debe añadirse a la instancia para que se pueda usar el grupo anidado.
Consola
gcloud
Haz los cambios siguientes:
Ejecuta el siguiente comando:
gcloud sql users create GROUP_EMAIL_ADDRESS \ --instance=INSTANCE_NAME \ --type=cloud_iam_group
Terraform
Para añadir usuarios y cuentas de servicio de gestión de identidades y accesos en una instancia con la autenticación de bases de datos de gestión de identidades y accesos habilitada, usa un recurso de Terraform.
Aplica los cambios
Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud
Preparar Cloud Shell
Preparar el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
Aplica los cambios
Eliminar los cambios
Para eliminar los cambios, sigue estos pasos:
REST v1
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
Cuerpo JSON de la solicitud:
{ "name": "GROUP_EMAIL", "type": "CLOUD_IAM_GROUP" }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "example-group@example.com", "insertTime": "2023-12-07T22:44:16.656Z", "startTime": "2023-12-07T22:44:16.686Z", "endTime": "2023-12-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
Cuerpo JSON de la solicitud:
{ "name": "GROUP_EMAIL", "type": "CLOUD_IAM_GROUP" }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "example-group@example.com", "insertTime": "2023-12-07T22:44:16.656Z", "startTime": "2023-12-07T22:44:16.686Z", "endTime": "2023-12-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Añadir automáticamente miembros de un grupo a una instancia de Cloud SQL
Cuando añades un grupo de IAM a una instancia de Cloud SQL, todos los miembros (usuarios y cuentas de servicio) de ese grupo heredan los permisos de IAM para autenticarse en la instancia. No es necesario que añadas a los miembros del grupo de forma individual a la instancia de Cloud SQL. Cuando un miembro de un grupo inicia sesión y se autentica correctamente en la instancia principal por primera vez, Cloud SQL crea una cuenta de usuario de grupo o una cuenta de servicio de grupo para ese miembro. Puedes ver el miembro del grupo en la instancia después de que haya iniciado sesión correctamente por primera vez.
Tras la conmutación por error, siempre que la instancia de conmutación por error tenga los grupos adecuados, los usuarios del grupo de IAM podrán seguir iniciando sesión y creándose.
Para obtener más información sobre el inicio de sesión, consulta el artículo Iniciar sesión mediante la autenticación de bases de datos de gestión de identidades y accesos.
Migrar usuarios de gestión de identidades y accesos para que usen la autenticación de grupos de gestión de identidades y accesos
Los usuarios de gestión de identidades y accesos de tipo CLOUD_IAM_USER
o CLOUD_IAM_SERVICE_ACCOUNT
no usan la autenticación de grupos de gestión de identidades y accesos.
Puedes migrar a estos usuarios para que usen la autenticación de grupos de gestión de identidades y accesos.
Gestionar los miembros de un grupo en una instancia de Cloud SQL
Cuando añades un grupo de gestión de identidades y accesos a una instancia de Cloud SQL, todos los miembros (cuentas de usuario o de servicio) de ese grupo heredan el permiso de gestión de identidades y accesos para autenticarse en la instancia. Puedes controlar el acceso a una instancia gestionando el grupo en Cloud Identity. Por ejemplo, si quieres dar acceso a una instancia a un usuario nuevo, añádelo como miembro de un grupo en Cloud Identity. No es necesario que añadas ni quites miembros del grupo por separado a nivel de instancia de Cloud SQL, ya que los cambios en la pertenencia al grupo se propagan automáticamente a la instancia de Cloud SQL. Los cambios en la pertenencia al grupo, como añadir o quitar miembros, tardan unos 15 minutos en propagarse. El retraso de 15 minutos en la propagación de Cloud SQL se produce en paralelo al tiempo necesario para que se propaguen los cambios de IAM.
Los privilegios de base de datos que se conceden o revocan a un grupo de gestión de identidades y accesos en PostgreSQL se aplican inmediatamente. Por ejemplo, si revocas el acceso a una tabla, los miembros de ese grupo de IAM perderán el acceso a esa tabla al instante.
Un usuario o una cuenta de servicio pueden ser miembros de varios grupos de gestión de identidades y accesos. Si un usuario o una cuenta de servicio pertenece a varios grupos de gestión de identidades y accesos en una instancia, tendrá todos los permisos de gestión de identidades y accesos y los privilegios de base de datos combinados de cada uno de esos grupos.
Cuando añades un nuevo miembro (usuario o cuenta de servicio) al grupo de IAM en Cloud Identity e inicia sesión en la instancia por primera vez, hereda automáticamente los privilegios de la base de datos concedidos al grupo.
Conceder privilegios de base de datos a un usuario o una cuenta de servicio de IAM concretos
Cuando se añade un usuario o un servicio de gestión de identidades y accesos a una instancia de Cloud SQL, de forma predeterminada, la nueva cuenta no tiene ningún privilegio en ninguna base de datos. Solo pueden ejecutar consultas en objetos de base de datos cuyo acceso se haya concedido a PUBLIC.Si necesitan más acceso, se pueden conceder más privilegios mediante la instrucción GRANT. Consulta la página de referencia de GRANT para ver una lista completa de los privilegios que puedes conceder a usuarios y cuentas de servicio. Ejecuta GRANT desde la línea de comandos.
Haz los cambios siguientes:
grant select on TABLE_NAME to "USERNAME";
Conceder privilegios de base de datos a un grupo de gestión de identidades y accesos
Cuando usas la autenticación de grupos de gestión de identidades y accesos, concedes privilegios de base de datos a grupos de gestión de identidades y accesos en lugar de a usuarios o cuentas de servicio concretos. De forma predeterminada, cuando añades un grupo de gestión de identidades y accesos a una instancia de Cloud SQL, el grupo no tiene privilegios de base de datos.
Para conceder privilegios de base de datos a un grupo de gestión de identidades y accesos, usa la instrucción GRANT. Después de iniciar sesión en la instancia de Cloud SQL por primera vez, cada miembro del grupo (incluidos los usuarios y las cuentas de servicio) hereda automáticamente los privilegios de la base de datos concedidos al grupo.
Haz los cambios siguientes:
Ejecuta GRANT desde la línea de comandos psql
.
grant select on TABLE_NAME to "GROUP_NAME";
Para obtener más información sobre cómo conceder privilegios, consulta la página de referencia GRANT en la documentación de PostgreSQL.
Los privilegios de la base de datos que concedas al grupo de gestión de identidades y accesos se aplicarán inmediatamente.
Ver los usuarios, las cuentas de servicio y los grupos de IAM añadidos a una instancia de Cloud SQL
Para ver los usuarios, las cuentas de servicio y los grupos de IAM que se han añadido a tu instancia de Cloud SQL, ejecuta los siguientes comandos.
Consola
gcloud
Sustituye INSTANCE_NAME por el nombre de la instancia que tiene los grupos que quieres ver.
gcloud sql users list --instance=INSTANCE_NAME
Los grupos tienen el tipo de usuario CLOUD_IAM_GROUP
.
En el resultado también se muestran las cuentas de usuario y de servicio de tu instancia de Cloud SQL.
REST v1
La siguiente solicitud usa el método users.list para enumerar los usuarios que tienen cuentas en la instancia de Cloud SQL.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
Método HTTP y URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users/list
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#usersList", "items": [ { "kind": "sql#user", "etag": "--redacted--", "name": "example-service-acct@PROJECT_ID.iam", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", "type": "CLOUD_IAM_SERVICE_ACCOUNT" }, { "kind": "sql#user", "etag": "--redacted--", "name": "another-example-service-acct@PROJECT_ID.iam", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", "type": "CLOUD_IAM_GROUP_SERVICE_ACCOUNT" }, { "kind": "sql#user", "etag": "--redacted--", "name": "postgres", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", }, { "kind": "sql#user", "etag": "--redacted--", "name": "example-user@example.com", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", "type": "CLOUD_IAM_USER" }, { "kind": "sql#user", "etag": "--redacted--", "name": "another-example-user@example.com", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", "type": "CLOUD_IAM_GROUP_USER" }, { "kind": "sql#user", "etag": "--redacted--", "name": "example-group@example.com", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", "type": "CLOUD_IAM_GROUP" } ] }
Los grupos tienen el tipo de usuario CLOUD_IAM_GROUP
.
En el resultado también se muestran las cuentas de usuario y de servicio de tu instancia de Cloud SQL.
REST v1beta4
La siguiente solicitud usa el método users.list para enumerar los usuarios que tienen cuentas en la instancia de Cloud SQL.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
Método HTTP y URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#usersList", "items": [ { "kind": "sql#user", "etag": "--redacted--", "name": "sqlserver", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-1", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-2", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { ... }, { ... } ] }
Los grupos tienen el tipo de usuario CLOUD_IAM_GROUP
.
En el resultado también se muestran las cuentas de usuario y de servicio de tu instancia de Cloud SQL.
Quitar un usuario o una cuenta de servicio de IAM de una instancia de Cloud SQL
Para quitar de la instancia de Cloud SQL un usuario o una cuenta de servicio que no sea miembro de un grupo, elimina esa cuenta con el siguiente comando:
Consola
gcloud
Revocar un usuario
Usa el correo, como example-user@example.com
, para identificar al usuario.
Haz los cambios siguientes:
gcloud sql users delete USERNAME \ --instance=INSTANCE_NAME
Eliminar la cuenta de servicio
Haz los cambios siguientes:
gcloud sql users delete SERVICE_ACCT \ --instance=INSTANCE_NAME
REST v1
En la siguiente solicitud se usa el método users.delete para eliminar la cuenta de usuario especificada.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
Método HTTP y URL:
DELETE https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "DELETE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
En la siguiente solicitud se usa el método users.delete para eliminar la cuenta de usuario especificada.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
Método HTTP y URL:
DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "DELETE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Quitar miembros de un grupo de IAM de una instancia de Cloud SQL
Hay dos formas de eliminar miembros de un grupo de IAM de una instancia de Cloud SQL:
Retirada automática
Para quitar un miembro de un grupo de IAM, debes eliminar su pertenencia de los grupos de IAM aplicables en Cloud Identity. Una vez que los usuarios del grupo de gestión de identidades y accesos hayan perdido la pertenencia a todos los grupos aplicables de Cloud Identity, Cloud SQL los eliminará automáticamente de la instancia. La única excepción a esta eliminación son los usuarios de grupo que son propietarios de objetos de la base de datos. Estos usuarios del grupo deben eliminarse manualmente.
Los cambios en la pertenencia a un grupo, como añadir o quitar miembros, tardan unos 15 minutos en propagarse. El retraso de 15 minutos en la propagación de Cloud SQL se produce en paralelo al tiempo necesario para que se propaguen los cambios de IAM.
Cambiar el nombre de dominio de los miembros de un grupo de gestión de identidades y accesos en una instancia de Cloud SQL
Si cambias el nombre de dominio de una organización en Cloud Identity, los cambios no se aplican automáticamente a los miembros del grupo de IAM en la instancia de Cloud SQL.
Por ejemplo, si cambias user@example.com
por user@new-example.com
en Cloud Identity, user@example.com
permanecerá en la instancia de Cloud SQL aunque el nombre de dominio se haya cambiado en Cloud Identity.
Para cambiar el nombre de dominio de los miembros del grupo de gestión de identidades y accesos, haz lo siguiente:
Para cambiar el nombre de dominio de los grupos de gestión de identidades y accesos, sigue estos pasos:
Retirada manual
En los casos en los que no se pueda quitar automáticamente a un usuario de un grupo de gestión de identidades y accesos, puedes quitarlo manualmente. No puedes quitar manualmente un usuario de un grupo de gestión de identidades y accesos de una instancia de Cloud SQL mediante la CLI de gcloud, laGoogle Cloud consola, Terraform o la API Cloud SQL Admin. En su lugar, los usuarios de la base de datos con privilegios de superusuario pueden eliminar manualmente a los usuarios del grupo de gestión de identidades y accesos de la instancia de Cloud SQL mediante una instrucción DROP USER de un cliente de PostgreSQL.
Después de quitar manualmente un usuario de un grupo de IAM de la instancia de Cloud SQL, asegúrate de quitarlo también del grupo de IAM en Cloud Identity para evitar que vuelva a iniciar sesión en la instancia de Cloud SQL.
Eliminar un grupo de IAM de una instancia de Cloud SQL
Puede eliminar los grupos de IAM añadidos de la instancia de Cloud SQL. Después de eliminar un grupo de gestión de identidades y accesos de la instancia, todos los usuarios y las cuentas de servicio que pertenezcan al grupo de gestión de identidades y accesos perderán los privilegios de base de datos que se le hayan concedido. Además, se aplican las siguientes condiciones:
Si elimina todos los grupos de gestión de identidades y accesos de una instancia de Cloud SQL, todos los usuarios y las cuentas de servicio de los grupos de gestión de identidades y accesos perderán todos sus privilegios de base de datos. Además, se aplican las siguientes condiciones:
Consola
gcloud
Para eliminar un grupo de Cloud Identity de una instancia, usa el comando
gcloud sql users delete
.
Haz los cambios siguientes:
gcloud sql users delete GROUP_NAME \ --instance=INSTANCE_NAME
Quitar permisos de inicio de sesión de IAM de un grupo de IAM
Si revocas el rol cloudsql.instanceUser
de un grupo de IAM, todos los miembros del grupo perderán la capacidad de iniciar sesión en cualquier instancia de Cloud SQL del proyecto. Los usuarios o las cuentas de servicio solo pueden iniciar sesión en las instancias si son miembros de otro grupo de gestión de identidades y accesos que siga teniendo permisos de inicio de sesión.
Para revocar un rol de un grupo de Cloud Identity, consulta Revocar un rol concreto.
Quitar usuarios de un grupo de gestión de identidades y accesos
Los miembros de grupos de gestión de identidades y accesos, como usuarios o cuentas de servicio, se pueden quitar del grupo de gestión de identidades y accesos en Cloud Identity.
Una vez que se haya propagado la eliminación a través de la gestión de identidades y accesos, el usuario ya no podrá iniciar sesión en la base de datos, a menos que haya recibido permisos de inicio de sesión de otro grupo o se le hayan concedido privilegios de inicio de sesión directamente. Además, los usuarios que se quitan de un grupo pierden los privilegios de base de datos del grupo.
Si un usuario de un grupo de gestión de identidades y accesos no pertenece a ningún grupo de la instancia, Cloud SQL lo elimina automáticamente de la instancia. Sin embargo, si Cloud SQL detecta que un usuario de un grupo de IAM es el propietario de un objeto de la instancia, Cloud SQL no elimina al usuario. Un administrador debe reasignar la propiedad del objeto y eliminar al usuario manualmente.
Ver información de inicio de sesión en registros de auditoría
Puede habilitar los registros de auditoría para registrar los inicios de sesión de gestión de identidades y accesos en la base de datos. Si hay problemas de inicio de sesión, puedes usar los registros de auditoría para diagnosticar el problema.
Una vez configurados, puedes ver los registros de auditoría de acceso a datos de los inicios de sesión correctos con el Explorador de registros.
En el caso de la autenticación de grupos de gestión de identidades y accesos, los registros de auditoría muestran la actividad y los inicios de sesión de cuentas de usuario y de servicio individuales.
Por ejemplo, un registro podría tener información similar a la siguiente:
{
insertId: "..."
logName: "projects/.../logs/cloudaudit.googleapis.com%2Fdata_access"
protoPayload: {
@type: "type.googleapis.com/google.cloud.audit.AuditLog"
authenticationInfo: {
principalEmail: "..."
}
authorizationInfo: [
0: {
granted: true
permission: "cloudsql.instances.login"
resource: "instances/..."
resourceAttributes: {
}
}
]
methodName: "cloudsql.instances.login"
request: {
@type: "type.googleapis.com/google.cloud.sql.authorization.v1.InstancesLoginRequest"
clientIpAddress: "..."
database: "..."
databaseSessionId: ...
instance: "projects/.../locations/us-central1/instances/..."
user: "..."
}
requestMetadata: {
callerIp: "..."
destinationAttributes: {
}
requestAttributes: {
auth: {
}
time: "..."
}
}
resourceName: "instances/..."
serviceName: "cloudsql.googleapis.com"
status: {
}
}
receiveTimestamp: "..."
resource: {
labels: {
database_id: "...:..."
project_id: "..."
region: "us-central"
}
type: "cloudsql_database"
}
severity: "INFO"
timestamp: "..."
}
Solucionar problemas de inicio de sesión
Cuando falla un intento de inicio de sesión, PostgreSQL devuelve un mensaje de error mínimo por motivos de seguridad. Por ejemplo:
PGPASSWORD=not-a-password psql --host=... --username=... --dbname=...
psql: error: could not connect to server: FATAL: Cloud SQL IAM user authentication failed for user "..."
FATAL: pg_hba.conf rejects connection for host "...", user "...", database "...", SSL off
Puedes consultar los registros de errores de PostgreSQL para obtener más información sobre el error. Para obtener más información, consulta Ver registros.
Por ejemplo, en el caso del error anterior, la siguiente entrada de registro explica la acción que puedes llevar a cabo para resolver el problema.
F ... [152172]: [1-1] db=...,user=... FATAL: Cloud SQL IAM user authentication failed for user "..."
I ... [152172]: [2-1] db=...,user=... DETAIL: Request is missing required authentication credential. Expected OAuth 2 access token, log in cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
Comprueba el mensaje de error que recibes. Si en el mensaje no se indica que has usado la autenticación de usuarios de gestión de identidades y accesos de Cloud SQL o la autenticación de cuentas de servicio de gestión de identidades y accesos de Cloud SQL, comprueba que el tipo de usuario de la base de datos que has usado para iniciar sesión sea CLOUD_IAM_USER
o CLOUD_IAM_SERVICE_ACCOUNT
.
Para comprobarlo, puedes usar la Google Cloud consola o el comando gcloud sql
users list
.
En el caso de un usuario de IAM, comprueba que el nombre de usuario de la base de datos sea el correo del usuario de IAM.
Si has usado la autenticación de bases de datos de gestión de identidades y accesos, consulta los detalles del mensaje de error. Puede encontrar el mensaje de error en el registro de errores de la base de datos. Si indica que el token de acceso (OAuth 2.0) que has enviado como contraseña no es válido, puedes usar el comando gcloud auth application-default print-access-token
gcloud
para consultar los detalles del token, como se indica a continuación:
curl -H "Content-Type: application/x-www-form-urlencoded" \ -d "access_token=$(gcloud auth application-default print-access-token)" \ https://www.googleapis.com/oauth2/v1/tokeninfo
Verifica que el token sea del usuario o de la cuenta de servicio de IAM previstos y que no haya caducado.
Si los detalles indican que no se tienen permisos, comprueba que el usuario o la cuenta de servicio de gestión de identidades y accesos tengan el permiso cloudsql.instances.login
mediante el rol predefinido Cloud SQL Instance User
o el rol personalizado en la política de gestión de identidades y accesos del proyecto de la instancia. Para obtener más ayuda, usa la herramienta para solucionar problemas de políticas de gestión de identidades y accesos.
Si no se puede iniciar sesión porque la autenticación de la base de datos de IAM no está disponible, el usuario puede iniciar sesión con el usuario y la contraseña predeterminados de PostgreSQL. Con este método de inicio de sesión, el usuario sigue teniendo acceso a toda la base de datos. Verifica que la conexión sea segura.
Solucionar problemas de cuentas de usuario que usan la autenticación de grupos de gestión de identidades y accesos
En esta sección se enumeran escenarios de solución de problemas de autenticación de grupos de IAM.
No se puede añadir un grupo a una base de datos
Cuando intentas añadir un grupo a una instancia, recibes el siguiente error:
(gcloud.sql.users.create) HTTPError 400: Invalid request: Provided CLOUD_IAM_GROUP: EMAIL, does not exist.
Asegúrate de que la dirección de correo que has proporcionado sea un grupo válido.
Si el grupo aún no existe, créalo. Para obtener más información sobre cómo crear grupos, consulta el artículo Crear y gestionar grupos de Google en la consola de Google Cloud .
Si aparece el siguiente error:
(gcloud.sql.users.create) HTTPError 400: Invalid request: IAM Group Authentication is disabled.
Después, para poder usar la autenticación de grupos de gestión de identidades y accesos, tu instancia de Cloud SQL debe tener la siguiente actualización de mantenimiento:
R20240514.00_04
o versiones posteriores
Puedes aplicar la actualización de mantenimiento a tu instancia mediante el mantenimiento de autoservicio. Para obtener más información, consulta Realizar el mantenimiento de autoservicio.
Un usuario o una cuenta de servicio de IAM no hereda los privilegios de la base de datos concedidos a su grupo de IAM
Si un usuario o una cuenta de servicio de IAM no hereda los privilegios de base de datos correctos de su grupo, sigue estos pasos: