本页面介绍如何使用 Identity and Access Management (IAM) 控制 Cloud SQL 项目访问和权限。
概览
Google Cloud 提供 Identity and Access Management (IAM),可让您授予对特定 Google Cloud 资源的更细化访问权限,并防止对其他资源进行不必要的访问。本页面介绍了 Cloud SQL IAM 角色和权限。如需详细了解 Google Cloud IAM,请参阅 IAM 文档。
Cloud SQL 提供了一组预定义角色,旨在帮助您控制对 Cloud SQL 资源的访问权限。如果预定义角色未提供您所需的权限集,您还可以创建自己的自定义角色。此外,旧版基本角色(Editor、Viewer、Owner)仍可供您使用,但这些角色提供的控制不如 Cloud SQL 角色那样精细。具体而言,基本角色提供的是对整个 Google Cloud 资源的访问权限,而不仅仅是对 Cloud SQL 的访问权限。如需详细了解基本角色,请参阅基本角色。
权限和角色
本部分汇总了 Cloud SQL 支持的各种权限和角色。
预定义角色
Cloud SQL 提供了一些预定义角色,可供您用来为项目成员授予更精细的权限。您授予某项目成员的角色决定了该成员可以执行的操作。项目成员可以是个人、群组或服务帐号。
如果您拥有相关权限,可向同一项目成员授予多个角色,还可随时更改授予某项目成员的角色。
权限范围较广的角色拥有权限范围较窄的角色的所有权限。例如,Cloud SQL Editor 角色不但拥有 Cloud SQL Viewer 角色的所有权限,还添加了一些专有权限。同样,Cloud SQL Admin 角色不但拥有 Cloud SQL Editor 角色的所有权限,还添加了一些专有权限。
基本角色(Owner、Editor、Viewer)提供对整个 Google Cloud 的权限。Cloud SQL 专有角色仅提供 Cloud SQL 权限,但以下 Google Cloud 权限除外,因为这些是 Google Cloud 常规使用所需的权限:
resourcemanager.projects.get
resourcemanager.projects.list
serviceusage.quotas.get
serviceusage.services.get
serviceusage.services.use
下表列出了适用于 Cloud SQL 的预定义角色及其所含 Cloud SQL 权限:
角色 | 名称 | Cloud SQL 权限 | 说明 |
---|---|---|---|
roles/owner |
Owner | cloudsql.* |
对所有 Google Cloud 资源拥有完整访问权限和控制权;可以管理用户访问权限 |
roles/editor |
Editor | 除以下权限以外的所有 cloudsql 权限:cloudsql.*.getIamPolicy 和 cloudsql.*.setIamPolicy |
对所有 Google Cloud 和 Cloud SQL 资源拥有读写权限(拥有完全控制权,但不能修改权限) |
roles/viewer |
Viewer | cloudsql.*.export cloudsql.*.get cloudsql.*.list |
对所有 Google Cloud 资源(包括 Cloud SQL 资源)拥有只读权限 |
roles/cloudsql.admin |
Cloud SQL Admin | cloudsql.* |
对所有 Cloud SQL 资源拥有完全控制权。 |
roles/cloudsql.editor |
Cloud SQL Editor |
cloudsql.instances.addServerCa cloudsql.instances.connect cloudsql.instances.export cloudsql.instances.failover cloudsql.instances.get cloudsql.instances.list cloudsql.instances.listServerCas cloudsql.instances.restart cloudsql.instances.rotateServerCa 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 |
管理 Cloud SQL 资源。不能查看或修改权限,也不能修改用户或 sslCert。不能导入数据或从备份恢复实例,也不能克隆、删除或升级实例。不能启动或停止副本。不能删除数据库、副本或备份。 |
roles/cloudsql.viewer |
Cloud SQL Viewer |
cloudsql.*.export cloudsql.*.get cloudsql.*.list cloudsql.instances.listServerCa
|
对所有 Cloud SQL 资源拥有只读权限。 |
roles/cloudsql.client |
Cloud SQL Client |
cloudsql.instances.connect cloudsql.instances.get |
拥有从 App Engine 和 Cloud SQL Auth 代理连接到 Cloud SQL 实例的权限。使用 IP 地址访问实例时不需要此角色。 |
roles/cloudsql.instanceUser |
Cloud SQL Instance User |
cloudsql.instances.get cloudsql.instances.login |
此角色可访问 Cloud SQL 实例。 |
权限及其对应的角色
下表列出了 Cloud SQL 支持的各项权限、可提供该权限的 Cloud SQL 角色及其基本角色。
权限 | Cloud SQL 角色 | 旧版角色 |
---|---|---|
cloudsql.backupRuns.create |
Cloud SQL Admin Cloud SQL Editor |
Editor |
cloudsql.backupRuns.delete |
Cloud SQL Admin | Editor |
cloudsql.backupRuns.get |
Cloud SQL Admin Cloud SQL Editor Cloud SQL Viewer |
Viewer |
cloudsql.backupRuns.list |
Cloud SQL Admin Cloud SQL Editor Cloud SQL Viewer |
Viewer |
cloudsql.databases.create |
Cloud SQL Admin Cloud SQL Editor |
Editor |
cloudsql.databases.delete |
Cloud SQL Admin Cloud SQL Editor |
Editor |
cloudsql.databases.get |
Cloud SQL Admin Cloud SQL Editor Cloud SQL Viewer |
Viewer |
cloudsql.databases.getIamPolicy |
Cloud SQL Admin | Owner |
cloudsql.databases.list |
Cloud SQL Admin Cloud SQL Editor Cloud SQL Viewer |
Viewer |
cloudsql.databases.setIamPolicy |
Cloud SQL Admin | Owner |
cloudsql.databases.update |
Cloud SQL Admin Cloud SQL Editor |
Editor |
cloudsql.instance.addServerCa |
Cloud SQL Admin Cloud SQL Editor |
Editor |
cloudsql.instances.clone |
Cloud SQL Admin | Editor |
cloudsql.instances.connect |
Cloud SQL Admin Cloud SQL Client Cloud SQL Editor |
Editor |
cloudsql.instances.create |
Cloud SQL Admin | Editor |
cloudsql.instances.delete |
Cloud SQL Admin | Editor |
cloudsql.instances.demoteMaster |
Cloud SQL Admin | Editor |
cloudsql.instances.export |
Cloud SQL Admin Cloud SQL Editor Cloud SQL Viewer |
Viewer |
cloudsql.instances.failover |
Cloud SQL Admin Cloud SQL Editor |
Editor |
cloudsql.instances.get |
Cloud SQL Admin Cloud SQL Client Cloud SQL Editor Cloud SQL Viewer |
Viewer |
cloudsql.instances.getIamPolicy |
Cloud SQL Admin | Owner |
cloudsql.instances.import |
Cloud SQL Admin | Editor |
cloudsql.instances.list |
Cloud SQL Admin Cloud SQL Editor Cloud SQL Viewer |
Viewer |
cloudsql.instances.listServerCa |
Cloud SQL Viewer | Viewer |
cloudsql.instances.promoteReplica |
Cloud SQL Admin | Editor |
cloudsql.instances.resetSslConfig |
Cloud SQL Admin | Editor |
cloudsql.instances.restart |
Cloud SQL Admin Cloud SQL Editor |
Editor |
cloudsql.instances.restoreBackup |
Cloud SQL Admin | Editor |
cloudsql.instance.rotateServerCa |
Cloud SQL Admin Cloud SQL Editor |
Editor |
cloudsql.instances.setIamPolicy |
Cloud SQL Admin | Owner |
cloudsql.instances.startReplica |
Cloud SQL Admin | Editor |
cloudsql.instances.stopReplica |
Cloud SQL Admin | Editor |
cloudsql.instances.truncateLog |
Cloud SQL Admin Cloud SQL Editor |
Editor |
cloudsql.instances.update |
Cloud SQL Admin Cloud SQL Editor |
Editor |
cloudsql.instanceUser |
Cloud SQL Instance User | 不适用 |
cloudsql.sslCerts.create |
Cloud SQL Admin | Editor |
cloudsql.sslCerts.delete |
Cloud SQL Admin | Editor |
cloudsql.sslCerts.get |
Cloud SQL Admin Cloud SQL Editor Cloud SQL Viewer |
Viewer |
cloudsql.sslCerts.list |
Cloud SQL Admin Cloud SQL Editor Cloud SQL Viewer |
Viewer |
cloudsql.users.create |
Cloud SQL Admin | Editor |
cloudsql.users.delete |
Cloud SQL Admin | Editor |
cloudsql.users.list |
Cloud SQL Admin Cloud SQL Editor Cloud SQL Viewer |
Viewer |
cloudsql.users.update |
Cloud SQL Admin | Editor |
自定义角色
如果预定义角色不能满足您的独特业务需求,您可以使用指定的权限定义自己的自定义角色。为此,IAM 提供了自定义角色。
为 Cloud SQL 创建自定义角色时,如果要添加 cloudsql.instances.list
或 cloudsql.instances.get
,请务必同时添加这两项权限。否则,Cloud Console 将无法正常处理 Cloud SQL。
Cloud Console 中常见任务所需的权限
任务 | 所需其他权限 |
---|---|
显示实例列表页面 |
cloudsql.instances.list resourcemanager.projects.get
|
创建实例 |
cloudsql.instances.create cloudsql.instances.get cloudsql.instances.list resourcemanager.projects.get |
使用 Cloud Shell 连接到实例 |
cloudsql.instances.get cloudsql.instances.list cloudsql.instances.update resourcemanager.projects.get
|
创建用户 |
cloudsql.instances.get cloudsql.instances.list cloudsql.users.create cloudsql.users.list resourcemanager.projects.get
|
查看实例信息 |
cloudsql.instances.get cloudsql.instances.list cloudsql.users.list monitoring.timeSeries.list resourcemanager.projects.get
|
gcloud sql 命令所需的权限
命令 | 所需权限 |
---|---|
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 cloudsql.instances.get |
gcloud sql flags list |
无 |
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 client-certs create |
cloudsql.sslCerts.create |
gcloud sql ssl client-certs delete |
cloudsql.sslCerts.delete |
gcloud sql ssl client-certs describe |
cloudsql.sslCerts.list |
gcloud sql ssl client-certs list |
cloudsql.sslCerts.list |
gcloud sql tiers list |
无 |
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 |
API 方法所需的权限
下表列出了调用方在调用 Cloud SQL Admin API 中的每种方法或通过使用该 API 的 Google Cloud 工具(例如 Google Cloud Console 或 gcloud
命令行工具)执行任务时必须具备的权限。
所有权限都会应用于项目。您不能基于实例或其他较低级别的对象应用不同的权限。
方法 | 所需权限 |
---|---|
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 |
无 |
instances.clone |
cloudsql.instances.clone |
instances.delete |
cloudsql.instances.delete |
instances.export |
cloudsql.instances.export |
instances.failover |
cloudsql.instances.failover |
instances.get |
cloudsql.instances.get |
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 |
针对 MySQL IAM 管理 Cloud SQL
您可以使用 Google Cloud Console、API 的 IAM 方法或 Cloud SDK 来获取和设置 IAM 政策及角色。如需了解详情,请参阅授予、更改和撤消项目成员的访问权限。