Control del acceso al proyecto

En esta página se explica cómo controlar el acceso y los permisos del proyecto Cloud SQL utilizando la gestión de identidades y accesos (IAM).

Visión general

Google Cloud Platform (GCP) te proporciona el sistema de gestión de identidades y accesos (IAM), que permite otorgar acceso pormenorizado a recursos específicos de GCP y evitar el acceso no deseado a otros recursos. En esta página se describen las funciones y permisos de IAM de Cloud SQL. Para obtener una descripción detallada de la gestión de identidades y accesos de GCP, consulta la documentación de IAM.

Cloud SQL proporciona un conjunto de funciones predefinidas diseñadas para que puedas controlar fácilmente el acceso a tus recursos de Cloud SQL. También puedes crear tus propias funciones personalizadas, si las funciones predefinidas no proporcionan los conjuntos de permisos que necesitas. Además, tienes disponibles las funciones primarias heredadas (editor, lector y propietario), aunque no ofrecen el mismo control detallado que las funciones de Cloud SQL. En concreto, las funciones primitivas proporcionan acceso a recursos en Google Cloud Platform, en lugar de solo para Cloud SQL. Para obtener más información sobre las funciones primitivas, consulta el apartado sobre funciones primitivas.

Permisos y funciones

En esta sección se resumen los permisos y funciones que admite Cloud SQL.

Funciones predefinidas

Cloud SQL proporciona algunas funciones predefinidas que puedes usar para proporcionar permisos detallados a los miembros del proyecto. La función que le otorgas a un miembro del proyecto controla las acciones que este puede realizar. Los miembros del proyecto pueden ser personas, grupos o cuentas de servicio.

Puedes asignar múltiples funciones al mismo miembro del proyecto, así como cambiar las funciones asignadas a un miembro del proyecto en cualquier momento, siempre que tengas los permisos para hacerlo.

Entre las funciones más amplias se incluyen aquellas que están más estrechamente definidas. Por ejemplo, la función de editor de Cloud SQL incluye todos los permisos del rol de lector de Cloud SQL, junto con los permisos de adición de la función de editor de Cloud SQL. Del mismo modo, la función de administrador de Cloud SQL incluye todos los permisos de la función de editor de Cloud SQL, junto con sus permisos adicionales.

Las funciones primitivas (propietario, editor y lector) ofrecen permisos en Google Cloud Platform. Las funciones específicas de Cloud SQL proporcionan solo permisos de Cloud SQL, excepto los siguientes permisos de GCP, que son necesarios para el uso general de GCP:

  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • serviceusage.quotas.get
  • serviceusage.services.get

En la siguiente tabla se enumeran las funciones predefinidas disponibles para Cloud SQL, junto con sus permisos de Cloud SQL:

Función Nombre Permisos de Cloud SQL Descripción
roles/owner Propietario cloudsql.* Acceso y control completos para todos los recursos de Google Cloud Platform; administración de acceso de usuarios
roles/writer Editor Todos los permisos de cloudsql excepto
cloudsql.*.getIamPolicy y
cloudsql.*.setIamPolicy
Acceso de lectura y escritura a todos los recursos de Google Cloud Platform y Cloud SQL (control total, excepto la capacidad de modificar los permisos)
roles/reader Lector cloudsql.*.export
cloudsql.*.get
cloudsql.*.list
Acceso de solo lectura a todos los recursos de Google Cloud Platform, incluidos los recursos de Cloud SQL
roles/cloudsql.admin Administrador de Cloud SQL cloudsql.* excepto
cloudsql.instances.connect
Control total de todos los recursos de Cloud SQL, excepto el acceso a la conectividad de App Engine y el proxy de Cloud SQL.
roles/cloudsql.editor Editor de Cloud SQL cloudsql.instances.export
cloudsql.instances.failover
cloudsql.instances.get
cloudsql.instances.list
cloudsql.instances.restart
cloudsql.instances.truncateLog
cloudsql.instances.update
cloudsql.databases.create
cloudsql.databases.get
cloudsql.databases.list
cloudsql.databases.update
cloudsql.backupRuns.create
cloudsql.backupRuns.get
cloudsql.backupRuns.list
cloudsql.sslCerts.get
cloudsql.sslCerts.list
cloudsql.users.list
Administración de instancias específicas. Sin capacidad para ver ni modificar permisos, ni modificar usuarios o sslCerts. Sin capacidad para importar datos ni restaurar a partir una copia de seguridad, ni clonar, eliminar ni promocionar instancias. Sin capacidad para iniciar ni detener réplicas. Sin posibilidad para eliminar bases de datos, réplicas o copias de seguridad.
roles/cloudsql.viewer Lector de Cloud SQL cloudsql.*.export
cloudsql.*.get
cloudsql.*.list
Acceso de solo lectura a todos los recursos de Cloud SQL.
roles/cloudsql.client Cliente de Cloud SQL cloudsql.instances.connect
cloudsql.instances.get
Acceso de conectividad a instancias de Cloud SQL desde App Engine y el proxy de Cloud SQL. No es necesario para acceder a una instancia con direcciones IP.

Permisos y sus funciones

En la siguiente tabla se enumera cada permiso que admite Cloud SQL, las funciones de Cloud SQL que lo incluyen y su función heredada (primitiva).

Permiso Funciones de Cloud SQL Función heredada
cloudsql.backupRuns.create Administrador de Cloud SQL
Editor de Cloud SQL
Editor
cloudsql.backupRuns.delete Administrador de Cloud SQL Editor
cloudsql.backupRuns.get Administrador de Cloud SQL
Editor de Cloud SQL
Lector de Cloud SQL
Lector
cloudsql.backupRuns.list Administrador de Cloud SQL
Editor de Cloud SQL
Lector de Cloud SQL
Lector
cloudsql.databases.create Administrador de Cloud SQL
Editor de Cloud SQL
Editor
cloudsql.databases.delete Administrador de Cloud SQL
Editor de Cloud SQL
Editor
cloudsql.databases.get Administrador de Cloud SQL
Editor de Cloud SQL
Lector de Cloud SQL
Lector
cloudsql.databases.getIamPolicy
Administrador de Cloud SQL Propietario
cloudsql.databases.list Administrador de Cloud SQL
Editor de Cloud SQL
Lector de Cloud SQL
Lector
cloudsql.databases.setIamPolicy
Administrador de Cloud SQL Propietario
cloudsql.databases.update Administrador de Cloud SQL
Editor de Cloud SQL
Editor
cloudsql.instances.clone Administrador de Cloud SQL Editor
cloudsql.instances.connect Cliente de Cloud SQL Editor
cloudsql.instances.create Administrador de Cloud SQL
Editor de Cloud SQL
Editor
cloudsql.instances.delete Administrador de Cloud SQL Editor
cloudsql.instances.demoteMaster Administrador de Cloud SQL Editor
cloudsql.instances.export Administrador de Cloud SQL
Editor de Cloud SQL
Lector de Cloud SQL
Lector
cloudsql.instances.failover Administrador de Cloud SQL
Editor de Cloud SQL
Editor
cloudsql.instances.get Administrador de Cloud SQL
Cliente de Cloud SQL
Editor de Cloud SQL
Lector de Cloud SQL
Lector
cloudsql.instances.getIamPolicy
Administrador de Cloud SQL Propietario
cloudsql.instances.import Administrador de Cloud SQL Editor
cloudsql.instances.list Administrador de Cloud SQL
Editor de Cloud SQL
Lector de Cloud SQL
Lector
cloudsql.instances.promoteReplica Administrador de Cloud SQL Editor
cloudsql.instances.resetSslConfig Administrador de Cloud SQL Editor
cloudsql.instances.restart Administrador de Cloud SQL
Editor de Cloud SQL
Editor
cloudsql.instances.restoreBackup Administrador de Cloud SQL Editor
cloudsql.instances.setIamPolicy
Administrador de Cloud SQL Propietario
cloudsql.instances.startReplica Administrador de Cloud SQL Editor
cloudsql.instances.stopReplica Administrador de Cloud SQL Editor
cloudsql.instances.truncateLog Administrador de Cloud SQL
Editor de Cloud SQL
Editor
cloudsql.instances.update Administrador de Cloud SQL
Editor de Cloud SQL
Editor
cloudsql.sslCerts.create Administrador de Cloud SQL Editor
cloudsql.sslCerts.delete Administrador de Cloud SQL
Editor de Cloud SQL
Editor
cloudsql.sslCerts.get Administrador de Cloud SQL
Editor de Cloud SQL
Lector de Cloud SQL
Lector
cloudsql.sslCerts.list Administrador de Cloud SQL
Editor de Cloud SQL
Lector de Cloud SQL
Lector
cloudsql.users.create Administrador de Cloud SQL
Editor de Cloud SQL
Editor
cloudsql.users.delete Administrador de Cloud SQL
Editor de Cloud SQL
Editor
cloudsql.users.list Administrador de Cloud SQL
Editor de Cloud SQL
Lector de Cloud SQL
Lector
cloudsql.users.update Administrador de Cloud SQL Editor

Funciones personalizadas

Si las funciones predefinidas no se ajustan a tus exclusivos requisitos comerciales, puedes definir tus propias funciones personalizadas con los permisos que especifiques. Para hacer esto posible, la gestión de identidades y accesos ofrece funciones personalizadas.

Cuando creas funciones personalizadas para Cloud SQL, asegúrate de incluir cloudsql.instances.list o cloudsql.instances.get, que los incluye a ambos. De lo contrario, la consola de GCP no funcionará correctamente para Cloud SQL.

Permisos obligatorios para tareas comunes en la consola de GCP

Para permitir a un usuario trabajar con Cloud SQL mediante la consola de GCP, la función del usuario debe incluir el permiso resourcemanager.projects.get.

En la siguiente tabla constan los otros permisos obligatorios para algunas tareas comunes en la consola de GCP.

Tarea Permisos adicionales obligatorios
Mostrar la página de lista de instancias cloudsql.instances.get
cloudsql.instances.list
Crear una instancia cloudsql.instances.create
cloudsql.instances.get
cloudsql.instances.list
Conectarse a una instancia de Cloud Shell cloudsql.instances.get
cloudsql.instances.list
cloudsql.instances.update
Crear un usuario cloudsql.instances.get
cloudsql.instances.list
cloudsql.users.create
cloudsql.users.list
Visualizar información sobre la instancia cloudsql.instances.get
cloudsql.users.list
monitoring.timeSeries.list

Permisos obligatorios para los comandos de gcloud

En la siguiente tabla constan los permisos que el usuario que invoca un comando gcloud debe tener para cada subcomando gcloud sql.

Comando Permisos obligatorios
gcloud sql backups create cloudsql.backupRuns.create
gcloud sql backups delete cloudsql.backupRuns.delete
gcloud sql backups describe cloudsql.backupRuns.get
gcloud sql backups list cloudsql.backupRuns.list
gcloud sql backups restore cloudsql.backupRuns.get
cloudsql.instances.restoreBackup
gcloud sql connect cloudsql.instances.get
cloudsql.instances.update
gcloud sql databases create cloudsql.databases.create
gcloud sql databases delete cloudsql.databases.delete
gcloud sql databases describe cloudsql.databases.get
gcloud sql databases list cloudsql.databases.list
gcloud sql databases patch cloudsql.databases.get
cloudsql.databases.update
gcloud sql export cloudsql.instances.export
gcloud sql flags list Ninguno
gcloud sql import cloudsql.instances.import
gcloud sql instances clone cloudsql.instances.clone
gcloud sql instances create cloudsql.instances.create
gcloud sql instances delete cloudsql.instances.delete
gcloud sql instances describe cloudsql.instances.get
gcloud sql instances export cloudsql.instances.export
gcloud sql instances failover cloudsql.instances.failover
gcloud sql instances import cloudsql.instances.import
gcloud sql instances list cloudsql.instances.list
gcloud sql instances patch cloudsql.instances.get
cloudsql.instances.update
gcloud sql instances promote-replica cloudsql.instances.promoteReplica
gcloud sql instances reset-ssl-config cloudsql.instances.resetSslConfig
gcloud sql instances restart cloudsql.instances.restart
gcloud sql instances restore-backup cloudsql.backupRuns.get
cloudsql.instances.restoreBackup
gcloud sql operations describe cloudsql.instances.get
gcloud sql operations list cloudsql.instances.get
gcloud sql operations wait cloudsql.instances.get
gcloud sql ssl-certs create cloudsql.sslCerts.create
gcloud sql ssl-certs delete cloudsql.sslCerts.delete
gcloud sql ssl-certs describe cloudsql.sslCerts.list
gcloud sql ssl-certs list cloudsql.sslCerts.list
gcloud sql tiers list Ninguno
gcloud sql users create cloudsql.users.create
gcloud sql users delete cloudsql.users.delete
gcloud sql users list cloudsql.users.list
gcloud sql users set-password cloudsql.users.update

Permisos obligatorios para los métodos de API

En la siguiente tabla constan los permisos que debe tener la persona que llama para llamar a cada método en la API Cloud SQL, o para realizar tareas con las herramientas de GCP que usan la API (como la consola de Google Cloud Platform o la herramienta de línea de comandos gcloud).

Todos los permisos se aplican al proyecto. No se pueden aplicar permisos diferentes según la instancia u otro objeto de nivel inferior.

Método Permisos obligatorios
backupRuns.delete cloudsql.backupRuns.delete
backupRuns.get cloudsql.backupRuns.get
backupRuns.insert cloudsql.backupRuns.create
backupRuns.list cloudsql.backupRuns.list
databases.delete cloudsql.databases.delete
databases.get cloudsql.databases.get
databases.insert cloudsql.databases.create
databases.list cloudsql.databases.list
databases.patch cloudsql.databases.update, cloudsql.databases.get
databases.update cloudsql.databases.update
flags.list Ninguno
instances.clone cloudsql.instances.clone
instances.delete cloudsql.instances.delete
instances.export cloudsql.instances.get
instances.failover cloudsql.instances.failover
instances.get cloudsql.instances.export
instances.import cloudsql.instances.import
instances.insert cloudsql.instances.create
instances.list cloudsql.instances.list
instances.patch cloudsql.instances.get, cloudsql.instances.update
instances.promoteReplica cloudsql.instances.promoteReplica
instances.resetSslConfig cloudsql.instances.resetSslConfig
instances.restart cloudsql.instances.restart
instances.restoreBackup cloudsql.instances.restoreBackup, cloudsql.backupRuns.get
instances.startReplica cloudsql.instances.startReplica
instances.stopReplica cloudsql.instances.stopReplica
instances.truncateLog cloudsql.instances.truncateLog
instances.update cloudsql.instances.update
operations.get cloudsql.instances.get
operations.list cloudsql.instances.get
sslCerts.delete cloudsql.sslCerts.delete
sslCerts.get cloudsql.sslCerts.get
sslCerts.insert cloudsql.sslCerts.create
sslCerts.list cloudsql.sslCerts.list
users.delete cloudsql.users.delete
users.insert cloudsql.users.create
users.list cloudsql.users.list
users.update cloudsql.users.update

Administrar Cloud SQL para IAM de MySQL

Puedes obtener y establecer políticas y funciones de gestión de identidades y accesos con la consola de Google Cloud Platform, los métodos IAM de la API o el SDK de Cloud. Para obtener más información, consulta el apartado sobre conceder, cambiar y revocar el acceso a los miembros del proyecto.

Siguientes pasos