IAM 簡介

Identity and Access Management (IAM) 可讓您在專案、Spanner 執行個體和 Spanner 資料庫層級,控管使用者和群組對 Spanner 資源的存取權。舉例來說,您可以指定使用者對專案中特定執行個體內的特定資料庫擁有完整控制權,但無法建立、修改或刪除專案中的任何執行個體。使用 IAM 存取控管功能,即可將權限授予使用者或群組,不必個別修改每個 Spanner 執行個體或資料庫權限。

本文著重於與 Spanner 相關的 IAM 權限,以及授予這些權限的 IAM 角色。如需 IAM 及其功能的詳細說明,請參閱 IAM 開發人員指南。請特別參閱「管理 IAM 政策」一節。

權限

擁有權限的使用者才能對 Spanner 資源執行特定操作。舉例來說,spanner.databases.read 權限允許使用者透過 Spanner 的讀取 API 讀取資料庫,而 spanner.databases.select 則允許使用者在資料庫上執行 SQL select 陳述式。您不會直接授予使用者權限,而是授予預先定義的角色或自訂角色,這些角色會繫結一或多項權限。

下表列出與 Spanner 相關聯的 IAM 權限。

執行個體設定

下列權限適用於 Spanner 執行個體設定。詳情請參閱 REST 和 RPC API 的執行個體設定參考資料。

執行個體設定權限名稱 說明
spanner.instanceConfigs.create 建立自訂執行個體設定。
spanner.instanceConfigs.delete 刪除自訂執行個體設定。
spanner.instanceConfigs.get 取得執行個體設定。
spanner.instanceConfigs.list 列出一組執行個體設定。
spanner.instanceConfigs.update 更新自訂執行個體設定。

執行個體設定作業

下列權限適用於 Spanner 執行個體設定作業。詳情請參閱 REST 和 RPC API 的執行個體參考資料。

執行個體設定作業權限名稱 說明
spanner.instanceConfigOperations.cancel 取消執行個體設定作業。
spanner.instanceConfigOperations.delete 刪除執行個體設定作業。
spanner.instanceConfigOperations.get 取得執行個體設定作業。
spanner.instanceConfigOperations.list 列出執行個體設定作業。

執行個體

下列權限適用於 Spanner 執行個體。詳情請參閱 REST 和 RPC API 的執行個體參考資料。

執行個體權限名稱 說明
spanner.instances.create 建立執行個體。
spanner.instances.delete 刪除執行個體。
spanner.instances.get 取得特定執行個體的設定。
spanner.instances.getIamPolicy 取得執行個體的 IAM 政策。
spanner.instances.list 列出執行個體。
spanner.instances.setIamPolicy 設定執行個體的 IAM 政策。
spanner.instances.update 更新執行個體。

執行個體作業

下列權限適用於 Spanner 執行個體作業。詳情請參閱 REST 和 RPC API 的執行個體參考資料。

執行個體作業權限名稱 說明
spanner.instanceOperations.cancel 取消執行個體作業。
spanner.instanceOperations.delete 刪除執行個體作業。
spanner.instanceOperations.get 取得特定執行個體作業。
spanner.instanceOperations.list 列出執行個體作業。

執行個體分區

下列權限適用於 Spanner 執行個體分區。詳情請參閱 REST 和 RPC API 的執行個體分區參考資料。

執行個體權限名稱 說明
spanner.instancePartitions.create 建立執行個體分區。
spanner.instancePartitions.delete 刪除執行個體分區。
spanner.instancePartitions.get 取得特定執行個體分區的設定。
spanner.instancePartitions.list 列出執行個體分區。
spanner.instancePartitions.update 更新執行個體分區。

執行個體分區作業

下列權限適用於 Spanner 執行個體分區作業。詳情請參閱 REST 和 RPC API 的執行個體分區參考資料。

執行個體分區作業權限名稱 說明
spanner.instancePartitionOperations.cancel 取消執行個體分區作業。
spanner.instancePartitionOperations.delete 刪除執行個體分區作業。
spanner.instancePartitionOperations.get 取得特定執行個體分區作業。
spanner.instancePartitionOperations.list 列出執行個體分區作業。

資料庫

下列權限適用於 Spanner 資料庫。詳情請參閱 REST 和 RPC API 的資料庫參考資料。

資料庫權限名稱 說明
spanner.databases.adapt 允許 Spanner Adapter API 直接與 Spanner 互動。
spanner.databases.beginOrRollbackReadWriteTransaction 在 Spanner 資料庫上開始或復原讀寫交易。
spanner.databases.beginPartitionedDmlTransaction 執行執行個體分區 data manipulation language (DML) 陳述式。如要進一步瞭解執行個體分區查詢,請參閱「平行讀取資料」。
spanner.databases.beginReadOnlyTransaction 在 Spanner 資料庫上啟動唯讀交易。
spanner.databases.create 建立資料庫。
spanner.databases.createBackup 從資料庫建立備份。此外,也需要 spanner.backups.create 才能建立備份資源。
spanner.databases.drop 捨棄資料庫。
spanner.databases.get 取得資料庫中繼資料。
spanner.databases.getDdl 取得資料庫結構定義。
spanner.databases.getIamPolicy 取得資料庫的 IAM 政策。
spanner.databases.list 列出資料庫。
spanner.databases.read 使用讀取 API 從資料庫中讀取。
spanner.databases.select 在資料庫上執行 SQL Select 陳述式。
spanner.databases.setIamPolicy 設定資料庫的 IAM 政策。
spanner.databases.update 更新資料庫的中繼資料。
spanner.databases.updateDdl 更新資料表結構定義。
spanner.databases.useDataBoost 使用 Spanner Data Boost 的運算資源,處理執行個體分區查詢。
spanner.databases.useRoleBasedAccess 使用精細的存取控管。
spanner.databases.write 寫入資料庫。

資料庫角色

下列權限適用於 Spanner 資料庫角色。詳情請參閱 REST 和 RPC API 的資料庫參考資料。

資料庫角色權限名稱 說明
spanner.databaseRoles.list 列出資料庫角色。
spanner.databaseRoles.use 使用指定的資料庫角色。

資料庫作業

下列權限適用於 Spanner 資料庫作業。詳情請參閱 REST 和 RPC API 的資料庫參考資料。

資料庫作業權限名稱 說明
spanner.databaseOperations.cancel 取消資料庫作業。
spanner.databaseOperations.get 取得特定資料庫作業。
spanner.databaseOperations.list 列出資料庫和還原資料庫作業。

備份

下列權限適用於 Spanner 備份。詳情請參閱 REST 和 RPC API 的備份參考資料。

備份權限名稱 說明
spanner.backups.create 建立備份。此外,來源資料庫也必須具備 spanner.databases.createBackup。
spanner.backups.delete 刪除備份。
spanner.backups.get 取得備份。
spanner.backups.getIamPolicy 取得備份的 IAM 政策。
spanner.backups.list 列出備份。
spanner.backups.restoreDatabase 從備份還原資料庫。此外,也需要 spanner.databases.create 才能在目標執行個體上建立還原的資料庫。
spanner.backups.setIamPolicy 設定備份的 IAM 政策。
spanner.backups.update 更新備份。

備份作業

下列權限適用於 Spanner 備份作業。詳情請參閱 REST 和 RPC API 的資料庫參考資料。

備份作業權限名稱 說明
spanner.backupOperations.cancel 取消備份作業。
spanner.backupOperations.get 取得特定備份作業。
spanner.backupOperations.list 列出備份作業。

備份排程

下列權限適用於 Spanner 備份排程。詳情請參閱 REST 和 RPC API 的資料庫參考資料。

備份排程權限名稱 說明
spanner.backupSchedules.create 建立備份排程。此外,來源資料庫也必須具備 spanner.databases.createBackup。
spanner.backupSchedules.delete 刪除備份排程。
spanner.backupSchedules.get 取得備份排程。
spanner.backupSchedules.list 列出備份排程。
spanner.backupSchedules.update 更新備份排程。

工作階段

下列權限適用於 Spanner 工作階段。詳情請參閱 REST 和 RPC API 的資料庫參考資料。

工作階段權限名稱 說明
spanner.sessions.create 建立工作階段。
spanner.sessions.delete 刪除工作階段。
spanner.sessions.get 取得工作階段。
spanner.sessions.list 列出工作階段。

預先定義的角色

預先定義的角色是一組權限。舉例來說,預先定義的角色 roles/spanner.databaseUser 包含 spanner.databases.read 和 spanner.databases.write 權限。Spanner 有兩種預先定義的角色:

  • 使用者角色:授予使用者或群組,允許他們對專案中的資源執行動作。
  • 機器角色:授予服務帳戶,讓機器有如這些服務帳戶般,對專案中的資源進行操作。

下表列出 IAM 預先定義角色的存取控管,以及與各角色相關聯的權限清單:

Role Permissions

(roles/spanner.admin)

Has complete access to all Spanner resources in a Google Cloud project. A principal with this role can:

  • Grant and revoke permissions to other principals for all Spanner resources in the project.
  • Allocate and delete chargeable Spanner resources.
  • Issue get/list/modify operations on Cloud Spanner resources.
  • Read from and write to all Cloud Spanner databases in the project.
  • Fetch project metadata.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

monitoring.timeSeries.*

  • monitoring.timeSeries.create
  • monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.*

  • spanner.backupOperations.cancel
  • spanner.backupOperations.get
  • spanner.backupOperations.list
  • spanner.backupSchedules.create
  • spanner.backupSchedules.delete
  • spanner.backupSchedules.get
  • spanner.backupSchedules.getIamPolicy
  • spanner.backupSchedules.list
  • spanner.backupSchedules.setIamPolicy
  • spanner.backupSchedules.update
  • spanner.backups.copy
  • spanner.backups.create
  • spanner.backups.delete
  • spanner.backups.get
  • spanner.backups.getIamPolicy
  • spanner.backups.list
  • spanner.backups.restoreDatabase
  • spanner.backups.setIamPolicy
  • spanner.backups.update
  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list
  • spanner.databaseRoles.list
  • spanner.databases.adapt
  • spanner.databases.addSplitPoints
  • spanner.databases.beginOrRollbackReadWriteTransaction
  • spanner.databases.beginPartitionedDmlTransaction
  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.changequorum
  • spanner.databases.create
  • spanner.databases.createBackup
  • spanner.databases.drop
  • spanner.databases.get
  • spanner.databases.getDdl
  • spanner.databases.getIamPolicy
  • spanner.databases.list
  • spanner.databases.partitionQuery
  • spanner.databases.partitionRead
  • spanner.databases.read
  • spanner.databases.runGraphAlgorithms
  • spanner.databases.select
  • spanner.databases.setIamPolicy
  • spanner.databases.update
  • spanner.databases.updateDdl
  • spanner.databases.useDataBoost
  • spanner.databases.useRoleBasedAccess
  • spanner.databases.write
  • spanner.instanceConfigOperations.cancel
  • spanner.instanceConfigOperations.delete
  • spanner.instanceConfigOperations.get
  • spanner.instanceConfigOperations.list
  • spanner.instanceConfigs.create
  • spanner.instanceConfigs.delete
  • spanner.instanceConfigs.get
  • spanner.instanceConfigs.list
  • spanner.instanceConfigs.update
  • spanner.instanceOperations.cancel
  • spanner.instanceOperations.delete
  • spanner.instanceOperations.get
  • spanner.instanceOperations.list
  • spanner.instancePartitionOperations.cancel
  • spanner.instancePartitionOperations.delete
  • spanner.instancePartitionOperations.get
  • spanner.instancePartitionOperations.list
  • spanner.instancePartitions.create
  • spanner.instancePartitions.delete
  • spanner.instancePartitions.get
  • spanner.instancePartitions.list
  • spanner.instancePartitions.update
  • spanner.instances.create
  • spanner.instances.createTagBinding
  • spanner.instances.delete
  • spanner.instances.deleteTagBinding
  • spanner.instances.get
  • spanner.instances.getIamPolicy
  • spanner.instances.list
  • spanner.instances.listEffectiveTags
  • spanner.instances.listTagBindings
  • spanner.instances.setIamPolicy
  • spanner.instances.update
  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.editor)

Editor role for Cloud Spanner

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.backupOperations.*

  • spanner.backupOperations.cancel
  • spanner.backupOperations.get
  • spanner.backupOperations.list

spanner.backupSchedules.create

spanner.backupSchedules.delete

spanner.backupSchedules.get

spanner.backupSchedules.getIamPolicy

spanner.backupSchedules.list

spanner.backupSchedules.update

spanner.backups.copy

spanner.backups.create

spanner.backups.delete

spanner.backups.get

spanner.backups.getIamPolicy

spanner.backups.list

spanner.backups.restoreDatabase

spanner.backups.update

spanner.databaseOperations.*

  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list

spanner.databaseRoles.list

spanner.databases.adapt

spanner.databases.addSplitPoints

spanner.databases.beginOrRollbackReadWriteTransaction

spanner.databases.beginPartitionedDmlTransaction

spanner.databases.beginReadOnlyTransaction

spanner.databases.changequorum

spanner.databases.create

spanner.databases.createBackup

spanner.databases.drop

spanner.databases.get

spanner.databases.getDdl

spanner.databases.getIamPolicy

spanner.databases.list

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.runGraphAlgorithms

spanner.databases.select

spanner.databases.update

spanner.databases.updateDdl

spanner.databases.useDataBoost

spanner.databases.useRoleBasedAccess

spanner.databases.write

spanner.instanceConfigOperations.*

  • spanner.instanceConfigOperations.cancel
  • spanner.instanceConfigOperations.delete
  • spanner.instanceConfigOperations.get
  • spanner.instanceConfigOperations.list

spanner.instanceConfigs.*

  • spanner.instanceConfigs.create
  • spanner.instanceConfigs.delete
  • spanner.instanceConfigs.get
  • spanner.instanceConfigs.list
  • spanner.instanceConfigs.update

spanner.instanceOperations.*

  • spanner.instanceOperations.cancel
  • spanner.instanceOperations.delete
  • spanner.instanceOperations.get
  • spanner.instanceOperations.list

spanner.instancePartitionOperations.*

  • spanner.instancePartitionOperations.cancel
  • spanner.instancePartitionOperations.delete
  • spanner.instancePartitionOperations.get
  • spanner.instancePartitionOperations.list

spanner.instancePartitions.*

  • spanner.instancePartitions.create
  • spanner.instancePartitions.delete
  • spanner.instancePartitions.get
  • spanner.instancePartitions.list
  • spanner.instancePartitions.update

spanner.instances.create

spanner.instances.delete

spanner.instances.get

spanner.instances.getIamPolicy

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

spanner.instances.update

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.viewer)

A principal with this role can:

  • View all Spanner instances (but cannot modify instances).
  • View all Spanner databases (but cannot modify or read from databases).

For example, you can combine this role with the roles/spanner.databaseUser role to grant a user with access to a specific database, but only view access to other instances and databases.

This role is recommended at the Google Cloud project level for users interacting with Cloud Spanner resources in the Google Cloud console.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.backupOperations.get

spanner.backupOperations.list

spanner.backupSchedules.get

spanner.backupSchedules.getIamPolicy

spanner.backupSchedules.list

spanner.backups.get

spanner.backups.getIamPolicy

spanner.backups.list

spanner.databaseOperations.get

spanner.databaseOperations.list

spanner.databaseRoles.list

spanner.databases.beginReadOnlyTransaction

spanner.databases.get

spanner.databases.getDdl

spanner.databases.getIamPolicy

spanner.databases.list

spanner.databases.useDataBoost

spanner.instanceConfigOperations.get

spanner.instanceConfigOperations.list

spanner.instanceConfigs.get

spanner.instanceConfigs.list

spanner.instanceOperations.get

spanner.instanceOperations.list

spanner.instancePartitionOperations.get

spanner.instancePartitionOperations.list

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.get

spanner.instances.getIamPolicy

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

(roles/spanner.backupAdmin)

A principal with this role can:

  • Create, view, update, and delete backups.
  • View and manage a backup's allow policy.

This role cannot restore a database from a backup.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.backupOperations.*

  • spanner.backupOperations.cancel
  • spanner.backupOperations.get
  • spanner.backupOperations.list

spanner.backupSchedules.create

spanner.backupSchedules.delete

spanner.backupSchedules.get

spanner.backupSchedules.list

spanner.backupSchedules.update

spanner.backups.copy

spanner.backups.create

spanner.backups.delete

spanner.backups.get

spanner.backups.getIamPolicy

spanner.backups.list

spanner.backups.setIamPolicy

spanner.backups.update

spanner.databases.createBackup

spanner.databases.get

spanner.databases.list

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.createTagBinding

spanner.instances.deleteTagBinding

spanner.instances.get

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

(roles/spanner.backupWriter)

This role is intended to be used by scripts that automate backup creation. A principal with this role can create backups, but cannot update or delete them.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

spanner.backupOperations.get

spanner.backupOperations.list

spanner.backupSchedules.create

spanner.backupSchedules.get

spanner.backupSchedules.list

spanner.backups.copy

spanner.backups.create

spanner.backups.get

spanner.backups.list

spanner.databases.createBackup

spanner.databases.get

spanner.databases.list

spanner.instancePartitions.get

spanner.instances.get

(roles/spanner.databaseAdmin)

A principal with this role can:

  • Get/list all Spanner instances in the project.
  • Create/list/drop databases in an instance.
  • Grant/revoke access to databases in the project.
  • Read from and write to all Cloud Spanner databases in the project.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

monitoring.timeSeries.*

  • monitoring.timeSeries.create
  • monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.databaseOperations.*

  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list

spanner.databaseRoles.list

spanner.databases.adapt

spanner.databases.addSplitPoints

spanner.databases.beginOrRollbackReadWriteTransaction

spanner.databases.beginPartitionedDmlTransaction

spanner.databases.beginReadOnlyTransaction

spanner.databases.changequorum

spanner.databases.create

spanner.databases.drop

spanner.databases.get

spanner.databases.getDdl

spanner.databases.getIamPolicy

spanner.databases.list

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.runGraphAlgorithms

spanner.databases.select

spanner.databases.setIamPolicy

spanner.databases.update

spanner.databases.updateDdl

spanner.databases.useDataBoost

spanner.databases.useRoleBasedAccess

spanner.databases.write

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.createTagBinding

spanner.instances.deleteTagBinding

spanner.instances.get

spanner.instances.getIamPolicy

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.databaseReader)

A principal with this role can:

  • Read from the Spanner database.
  • Execute SQL queries on the database.
  • View schema for the database.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.create

spanner.databases.beginReadOnlyTransaction

spanner.databases.get

spanner.databases.getDdl

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.select

spanner.instancePartitions.get

spanner.instances.get

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.databaseReaderWithDataBoost)

Includes all permissions in the spanner.databaseReader role enabling access to read and/or query a Cloud Spanner database using instance resources, as well as the permission to access the database with Data Boost, a fully managed serverless service that provides independent compute resources.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.create

spanner.databases.beginReadOnlyTransaction

spanner.databases.get

spanner.databases.getDdl

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.select

spanner.databases.useDataBoost

spanner.instancePartitions.get

spanner.instances.get

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.databaseRoleUser)

In conjunction with the IAM role Cloud Spanner Fine-grained Access User, grants permissions to individual Spanner database roles. Add a condition for each desired Spanner database role that includes the resource type of `spanner.googleapis.com/DatabaseRole` and the resource name ending with `/YOUR_SPANNER_DATABASE_ROLE`.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

(roles/spanner.databaseUser)

A principal with this role can:

  • Read from and write to the Spanner database.
  • Execute SQL queries on the database, including DML and Partitioned DML.
  • View and update schema for the database.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.create

spanner.databaseOperations.*

  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list

spanner.databases.adapt

spanner.databases.beginOrRollbackReadWriteTransaction

spanner.databases.beginPartitionedDmlTransaction

spanner.databases.beginReadOnlyTransaction

spanner.databases.changequorum

spanner.databases.get

spanner.databases.getDdl

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.select

spanner.databases.updateDdl

spanner.databases.write

spanner.instancePartitions.get

spanner.instances.get

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.fineGrainedAccessUser)

Grants permissions to use Spanner's fine-grained access control framework. To grant access to specific database roles, also add the `roles/spanner.databaseRoleUser` IAM role and its necessary conditions.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

spanner.databaseRoles.list

spanner.databases.useRoleBasedAccess

(roles/spanner.graphIntelligenceUser)

Access to Graph Intelligence features.

monitoring.timeSeries.create

spanner.databases.beginReadOnlyTransaction

spanner.databases.get

spanner.databases.getDdl

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.runGraphAlgorithms

spanner.databases.select

spanner.databases.useDataBoost

spanner.instancePartitions.get

spanner.instances.get

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.restoreAdmin)

A principal with this role can restore databases from backups.

If you need to restore a backup to a different instance, apply this role at the project level or to both instances. This role cannot create backups.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.backups.get

spanner.backups.list

spanner.backups.restoreDatabase

spanner.databaseOperations.*

  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list

spanner.databases.create

spanner.databases.get

spanner.databases.list

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.createTagBinding

spanner.instances.deleteTagBinding

spanner.instances.get

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

Service agent roles

Service agent roles should only be granted to service agents.

Role Permissions

(roles/spanner.serviceAgent)

Cloud Spanner API Service Agent

aiplatform.endpoints.get

aiplatform.endpoints.list

aiplatform.endpoints.predict

aiplatform.models.get

aiplatform.models.list

compute.disks.create

compute.disks.createTagBinding

compute.disks.use

compute.instances.create

compute.instances.createTagBinding

compute.instances.delete

compute.instances.get

compute.instances.setLabels

compute.instances.setMetadata

compute.instances.setServiceAccount

compute.networks.create

compute.networks.use

compute.networks.useExternalIp

compute.subnetworks.create

compute.subnetworks.use

compute.subnetworks.useExternalIp

discoveryengine.rankingConfigs.rank

logging.logEntries.create

run.jobs.run

run.routes.invoke

spanner.databases.beginOrRollbackReadWriteTransaction

spanner.databases.beginReadOnlyTransaction

spanner.databases.partitionQuery

spanner.databases.select

spanner.databases.useDataBoost

spanner.databases.write

spanner.sessions.create

storage.buckets.create

storage.buckets.get

storage.buckets.list

storage.objects.create

storage.objects.delete

storage.objects.get

storage.objects.list

基本角色

基本角色是專案層級的角色,在 IAM 推出前就已存在。詳情請參閱「基本角色」。

雖然 Spanner 支援下列基本角色,但建議您盡可能使用前述的預先定義角色。基本角色包含適用於所有 Google Cloud 資源的廣泛權限;相較之下,Spanner 的預先定義角色則包含僅適用於 Spanner 的精細權限。

基本角色 說明
roles/editor 可執行 roles/viewer 的所有操作,還能建立執行個體和資料庫,以及將資料寫入資料庫。
roles/owner 可執行 roles/editor 的所有操作,也能修改資料庫和執行個體的存取權。
roles/viewer 能夠列出並取得結構定義和執行個體的中繼資料,也可以在資料庫上使用 SQL 進行讀取與查詢。

自訂角色

如果 Spanner 的預先定義角色無法滿足您的業務需求,您可以使用自訂角色,並設定這些角色的權限。

建立自訂角色前,您必須先找出需要執行的工作。接著,您可以找出每項工作所需的權限,並將這些權限新增至自訂角色。

服務帳戶工作的自訂角色

對大多數的工作而言,需要新增哪些權限到自訂的角色是顯而易見的。舉例來說,如果您希望服務帳戶能夠建立資料庫,請將 spanner.databases.create 權限新增至自訂角色。

不過,在 Spanner 資料表中讀取或寫入資料時,您必須在自訂角色中新增多項權限。下表列出讀取和寫入資料所需的權限。

服務帳戶工作 所需權限
建立備份 spanner.backups.create
spanner.databases.createBackup
讀取資料 spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
還原資料庫 spanner.backups.restoreDatabase
spanner.databases.create
插入、更新或刪除資料 spanner.databases.beginOrRollbackReadWriteTransaction
spanner.sessions.create
spanner.sessions.delete
spanner.databases.write

Google Cloud 控制台工作的自訂角色

如要找出在Google Cloud 控制台中執行特定工作所需的權限清單,請判斷該工作的流程,並彙整該流程的權限。舉例來說,如要查看資料表中的資料,請在 Google Cloud 控制台中按照下列步驟操作:

步驟 權限
1. 存取專案 resourcemanager.projects.get
2. 檢視執行個體清單 spanner.instances.list
3. 選取執行個體 spanner.instances.get
4. 檢視資料庫清單 spanner.databases.list
5. 選取資料庫與資料表 spanner.databases.getDdl
6. 檢視資料表中的資料 spanner.databases.select、spanner.sessions.create、spanner.sessions.delete

在這個範例中,您需要以下權限:

  • resourcemanager.projects.get
  • spanner.databases.getDdl
  • spanner.databases.list
  • spanner.databases.select
  • spanner.instances.get
  • spanner.instances.list
  • spanner.sessions.create
  • spanner.sessions.delete

下表列出在Google Cloud 控制台執行動作所需的權限。

權限 動作
spanner.databases.setIamPolicy 在「資料庫詳細資料」頁面的「權限」分頁新增主體
spanner.instances.setIamPolicy 在執行個體頁面的「權限」分頁新增主體
spanner.backups.create
spanner.databases.createBackup
spanner.databases.list1
spanner.backupOperations.list1
建立備份
spanner.backupSchedules.create
spanner.databases.createBackup
建立備份排程
spanner.databases.create 建立資料庫
spanner.instancePartitions.list
spanner.instancePartitionOperations.get
spanner.instancePartitions.create
建立執行個體分區
spanner.databaseOperations.get
spanner.databaseOperations.list
spanner.databases.updateDdl
建立資料表
更新資料表結構定義
spanner.instanceConfigs.list
spanner.instanceOperations.get
spanner.instances.create
建立執行個體
spanner.backups.delete 刪除備份
spanner.backupSchedules.delete 刪除備份排程
spanner.databases.drop 刪除資料庫
spanner.instancePartitions.delete 刪除執行個體分區
spanner.instances.delete 刪除執行個體
spanner.instancePartitionOperations.get
spanner.instancePartitions.update
修改執行個體分區
spanner.instanceOperations.get
spanner.instances.update
修改執行個體
spanner.databases.beginOrRollbackReadWriteTransaction
spanner.databases.select
spanner.databases.write
spanner.sessions.create
spanner.sessions.delete
修改資料表中的資料
spanner.instanceConfigs.list
spanner.instances.get
spanner.backups.get
spanner.backups.restoreDatabase
spanner.instances.list
spanner.databases.create
從備份還原資料庫
spanner.databases.get
spanner.databases.getDdl
從資料庫清單中選取一個資料庫並在「資料庫詳細資料」頁面中檢視結構定義
spanner.instances.get 從執行個體清單中選取執行個體,以檢視「執行個體詳細資料」頁面
spanner.backups.update 更新備份
spanner.backupSchedules.update 更新備份排程
spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
在「資料庫詳細資料」頁面的「資料」分頁中查看資料
建立及執行查詢
spanner.backups.list
spanner.backups.get
查看「備份/還原」頁面
monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.timeSeries.list
spanner.instances.get
在「執行個體詳細資料」或「資料庫詳細資料」頁面上的「監控」分頁檢視圖表
spanner.backupOperations.list 查看備份作業清單
spanner.databases.list 在「執行個體詳細資料」頁面上檢視資料庫清單
resourcemanager.projects.get
spanner.instances.list
檢視「執行個體」頁面上的執行個體清單
spanner.databaseOperations.list 查看還原作業清單
spanner.databases.getIamPolicy 檢視「資料庫詳細資料」頁面「權限」分頁上的清單
spanner.instances.getIamPolicy 檢視「執行個體」頁面「權限」分頁上的清單
1 如果您是從執行個體層級 (而非資料庫層級) 的「Backup/Restore」(備份/還原) 頁面建立備份,則必須提供這項資訊。

Spanner IAM 政策管理

您可以使用 Spanner 執行個體、資料庫和備份資源上的 REST 或 RPC API,取得、設定及測試 IAM 政策。

執行個體

REST API RPC API
projects.instances.getIamPolicy GetIamPolicy
projects.instances.setIamPolicy SetIamPolicy
projects.instances.testIamPermissions TestIamPermissions

資料庫

REST API RPC API
projects.instances.databases.getIamPolicy GetIamPolicy
projects.instances.databases.setIamPolicy SetIamPolicy
projects.instances.databases.testIamPermissions TestIamPermissions

備份

REST API RPC API
projects.instances.backups.getIamPolicy GetIamPolicy
projects.instances.backups.setIamPolicy SetIamPolicy
projects.instances.backups.testIamPermissions TestIamPermissions

後續步驟