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
- Aprende a otorgar y revocar el acceso a los miembros del proyecto.
- Obtén más información sobre la gestión de identidades y accesos.
- Obtén más información sobre las funciones primitivas.
- Obtén información sobre el control de acceso a instancias.
- Obtén información sobre el control de acceso a bases de datos.
- Obtén más información sobre las funciones personalizadas.