项目访问权限控制

本页面介绍如何使用 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
对所有 Google Cloud 资源拥有完整访问权限和控制权;管理用户访问权限。

cloudsql.*
roles/editor
Editor
对所有 Google Cloud 和 Cloud SQL 资源拥有读写权限(拥有完全控制权,但不能修改权限)

所有 cloudsql 权限,除了
cloudsql.*.getIamPolicy &
cloudsql.*.setIamPolicy
roles/viewer
Viewer
对所有 Google Cloud 资源(包括 Cloud SQL 资源)拥有只读权限。

cloudsql.*.export
cloudsql.*.get
cloudsql.*.list
roles/cloudsql.admin
Cloud SQL Admin
对所有 Cloud SQL 资源拥有完全控制权。

cloudsql.*
recommender.cloudsqlInstanceDiskUsageTrendInsights.
recommender.cloudsqlInstanceOutOfDiskRecommendations.*
roles/cloudsql.editor
Cloud SQL Editor
管理 Cloud SQL 资源。 不能查看或修改权限,也不能修改用户或 sslCert。不能导入数据或从备份恢复实例,也不能克隆、删除或升级实例。不能启动或停止副本。不能删除数据库、副本或备份。

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
recommender.cloudsqlInstanceDiskUsageTrendInsights.get
recommender.cloudsqlInstanceDiskUsageTrendInsights.list
recommender.cloudsqlInstanceDiskUsageTrendInsights.update
recommender.cloudsqlInstanceOutOfDiskRecommendations.get
recommender.cloudsqlInstanceOutOfDiskRecommendations.list
recommender.cloudsqlInstanceOutOfDiskRecommendations.update
roles/cloudsql.viewer
Cloud SQL Viewer
对所有 Cloud SQL 资源拥有只读权限。

cloudsql.*.export
cloudsql.*.get
cloudsql.*.list
cloudsql.instances.listServerCa
recommender.cloudsqlInstanceOutOfDiskRecommendations.get
recommender.cloudsqlInstanceOutOfDiskRecommendations.list
recommender.cloudsqlInstanceDiskUsageTrendInsights.get
recommender.cloudsqlInstanceDiskUsageTrendInsights.list
roles/cloudsql.client
Cloud SQL Client
拥有从 App Engine 和 Cloud SQL Auth 代理连接到 Cloud SQL 实例的权限。使用 IP 地址访问实例时不需要此角色。

cloudsql.instances.connect
cloudsql.instances.get
roles/cloudsql.instanceUser
Cloud SQL Instance User
此角色可访问 Cloud SQL 实例。

cloudsql.instances.get
cloudsql.instances.login

权限及其对应的角色

下表列出了 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
recommender.cloudsqlInstanceDiskUsageTrendInsights.get Cloud SQL Admin
Cloud SQL Editor
Cloud SQL Viewer
不适用
recommender.cloudsqlInstanceDiskUsageTrendInsights.list Cloud SQL Admin
Cloud SQL Editor
Cloud SQL Viewer
不适用
recommender.cloudsqlInstanceDiskUsageTrendInsights.update Cloud SQL Admin
Cloud SQL Editor
不适用
recommender.cloudsqlInstanceOutOfDiskRecommendations.get Cloud SQL Admin
Cloud SQL Editor
Cloud SQL Viewer
不适用
recommender.cloudsqlInstanceOutOfDiskRecommendations.list Cloud SQL Admin
Cloud SQL Editor
Cloud SQL Viewer
不适用
recommender.cloudsqlInstanceOutOfDiskRecommendations.update Cloud SQL Admin
Cloud SQL Editor
不适用

自定义角色

如果预定义角色不能满足您的独特业务需求,您可以使用指定的权限定义自己的自定义角色。为此,IAM 提供了自定义角色

为 Cloud SQL 创建自定义角色时,如果要添加 cloudsql.instances.listcloudsql.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
compute.machineTypes.list
compute.machineTypes.get
compute.projects.get roles/compute.viewer
使用 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 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.updatecloudsql.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.getcloudsql.instances.update
instances.promoteReplica cloudsql.instances.promoteReplica
instances.resetSslConfig cloudsql.instances.resetSslConfig
instances.restart cloudsql.instances.restart
instances.restoreBackup cloudsql.instances.restoreBackupcloudsql.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

管理 Cloud SQL for PostgreSQL IAM

您可以使用 Google Cloud Console、API 的 IAM 方法或 Cloud SDK 来获取和设置 IAM 政策及角色。如需了解详情,请参阅授予、更改和撤消项目成员的访问权限

后续步骤