使用 IAM 控管 Bigtable 存取權

本頁面說明 Bigtable 的存取控管選項。

總覽

Bigtable 使用身分與存取權管理 (IAM) 控管存取權。如要控管哪些人具備何種資源的哪些存取權,請對資源設定 IAM 政策。

Bigtable 資源會以階層方式整理。Google Cloud 專案是 Bigtable 執行個體的父項,而執行個體則是叢集和資料表的父項。資料表是授權檢視區塊的父項,而叢集是備份的父項。您可以在各層級設定存取控管。

如果您擁有某個層級的權限,系統會自動授予您該層級以下的權限。舉例來說,如果您有專案層級的存取權,就能存取該專案中的執行個體、叢集、資料表、授權檢視區塊和持續具體化檢視區塊。如果您獲准存取已授權檢視區塊或連續具體化檢視區塊,則不會自動取得已授權檢視區塊或連續具體化檢視區塊的父項資源 (例如資料表和執行個體) 的存取權。這種行為稱為「政策繼承」

如要進一步瞭解 IAM 階層,請參閱「IAM 政策繼承」。

以下列舉幾個在專案層級使用存取控管的範例:

  • 授予權限,讓使用者可以讀取專案中的任何資料表,但不能寫入資料。
  • 授予權限,讓使用者可以讀取專案中的任何資料表並寫入資料,但是沒有執行個體的管理權限。
  • 授予權限,讓使用者可以讀取專案中的任何資料表並寫入資料,並且擁有執行個體的管理權限。

執行個體層級使用存取控管的範例如下:

  • 允許使用者從專案中某個執行個體的任何資料表讀取資料,但該專案有多個執行個體。
  • 如果專案有多個執行個體,允許使用者只管理其中一個。

資料表層級使用存取控管的範例如下:

  • 允許使用者寫入資料表,但無法從資料表讀取資料。
  • 允許使用者讀取資料表,但無法寫入資料表。

在「備份」層級使用存取權控管的範例如下:

  • 禁止使用者刪除備份。
  • 禁止使用者從備份還原。

授權 view 層級使用存取控管的範例如下:

  • 允許使用者讀取授權檢視畫面,但無法修改。
  • 允許使用者只查看資料表的多個授權檢視畫面之一。

持續性 materialized view層級使用存取控管的範例如下:

  • 允許使用者從連續具體化檢視區塊讀取資料,但不得修改基礎資料表。

如要進一步瞭解 IAM 及其功能,請參閱 IAM 開發人員指南。其中以授予、變更及撤銷存取權的部分最為重要。

在 Bigtable 中,您無法將存取權授予下列類型的主體

如需 Bigtable 支援的權限與角色清單,請參閱下列各節。

啟用 Bigtable API

如要查看及指派 Bigtable IAM 角色,請為專案啟用 Bigtable API。您必須先啟用 API,Bigtable 角色才會顯示在Google Cloud 控制台中。

啟用 API 時所需的角色

如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色

啟用 API

權限

本節概述 Bigtable 支援的權限。

擁有權限的使用者才能對 Bigtable 資源執行特定操作。舉例來說,bigtable.instances.list 權限可讓使用者列出專案中的所有 Bigtable 執行個體。您不能直接授予使用者特定權限,而只能指派預先定義的角色自訂角色給他們;每個角色可用來授予一或多個權限。

下表列出與 Bigtable 相關的 IAM 權限:

應用程式設定檔權限指令 說明
bigtable.appProfiles.create 建立 Bigtable 應用程式設定檔。
bigtable.appProfiles.delete 刪除 Bigtable 應用程式設定檔。
bigtable.appProfiles.get 取得 Bigtable 應用程式設定檔的相關資訊。
bigtable.appProfiles.list 列出執行個體的 Bigtable 應用程式設定檔。
bigtable.appProfiles.update 更新 Bigtable 應用程式設定檔的設定。
備份權限名稱 說明
bigtable.backups.create 建立 Bigtable 備份。
bigtable.backups.delete 刪除 Bigtable 備份。
bigtable.backups.get 取得 Bigtable 備份的相關資訊。
bigtable.backups.getIamPolicy 取得備份的 IAM 政策。
bigtable.backups.list 列出 Bigtable 備份。
bigtable.backups.restore 從 Bigtable 備份還原。
bigtable.backups.testIamPermissions 取得呼叫者對指定備份的權限。
bigtable.backups.read 從 Bigtable 備份讀取資料。
bigtable.backups.setIamPolicy 更新備份 ACL。
bigtable.backups.update 修改 Bigtable 備份的到期日。
叢集權限指令 說明
bigtable.clusters.create 建立 Bigtable 叢集。
bigtable.clusters.delete 刪除 Bigtable 叢集。
bigtable.clusters.get 取得 Bigtable 叢集的相關資訊。
bigtable.clusters.list 列出執行個體的 Bigtable 叢集。
bigtable.clusters.update 更新 Bigtable 叢集的設定。
資源使用率不均的子表權限名稱 說明
bigtable.hotTablets.list 列出叢集的高用量子表。
記憶體內層 (預先發布版) 權限名稱 說明
bigtable.memoryLayer.get 查看 Bigtable 記憶體內層的相關資訊。
bigtable.memoryLayer.list 列出 Bigtable 記憶體內層等級。
bigtable.memoryLayer.update 啟用、停用或調整 Bigtable 記憶體內層的大小。
執行個體權限名稱 說明
bigtable.instances.create 建立 Bigtable 執行個體。
bigtable.instances.createTagBinding 建立代碼。
bigtable.instances.delete 刪除 Bigtable 執行個體。
bigtable.instances.deleteTagBinding 刪除標記。
bigtable.instances.get 取得 Bigtable 執行個體的相關資訊。
bigtable.instances.getIamPolicy 取得執行個體的 IAM 政策。
bigtable.instances.list 列出專案的 Bigtable 執行個體。
bigtable.instances.listEffectiveTagBindings 列出執行個體的所有有效標記。
bigtable.instances.listTagBindings 列出執行個體的標記。
bigtable.instances.ping 傳送頻道預熱要求。
bigtable.instances.executeQuery ExecuteQueryPrepareQuery 要求傳送至執行個體。
bigtable.instances.setIamPolicy 更新 ACL。
bigtable.instances.update 更新 Bigtable 執行個體的設定。
Key Visualizer 權限名稱 說明
bigtable.keyvisualizer.get 取得資料表的 Key Visualizer 資訊,包括存取模式和資料列索引鍵分布情形的中繼資料。
bigtable.keyvisualizer.list 列出資料表的可用 Key Visualizer 資訊。
位置存取權名稱 說明
bigtable.locations.list 列出 Bigtable 位置。
資料表權限指令 說明
bigtable.tables.checkConsistency 檢查複寫資料表是否為最新版本。
bigtable.tables.create 建立資料表。
bigtable.tables.delete 刪除資料表。
bigtable.tables.generateConsistencyToken 建立憑證來檢查複寫資料表是否為最新版本。
bigtable.tables.get 取得資料表的資訊,包含資料欄系列及每欄的個別設定。
bigtable.tables.getIamPolicy 取得資料表的 IAM 政策。
bigtable.tables.list 列舉出執行個體中的資料表。
bigtable.tables.mutateRows 修改資料表中的列,或截斷資料表中的資料。
bigtable.tables.readRows 從資料表讀取資料列。包括資料表資訊,例如資料欄系列及其個別設定。
bigtable.tables.sampleRowKeys 從資料表所使用的資料列索引鍵值中取樣。
bigtable.tables.setIamPolicy 更新資料表 ACL。
bigtable.tables.undelete 復原已刪除的資料表。
bigtable.tables.update 更新資料表的設定,包含資料欄系列及每欄的個別設定。
位置存取權名稱 說明
bigtable.locations.list 列出 Bigtable 位置。
授權 view 權限名稱 說明
bigtable.authorizedViews.create 建立授權 view。
bigtable.authorizedViews.delete 刪除授權檢視表。
bigtable.authorizedViews.get 取得授權檢視表的相關資訊。
bigtable.authorizedViews.getIamPolicy 取得授權檢視區塊的 IAM 政策。
bigtable.authorizedViews.list 以表格列出授權檢視區。
bigtable.authorizedViews.mutateRows 修改授權檢視表中的資料列。
bigtable.authorizedViews.readRows 從授權檢視表讀取資料列。
bigtable.authorizedViews.sampleRowKeys 取得授權檢視畫面中使用的資料列鍵範例。
bigtable.authorizedViews.setIamPolicy 更新授權 view 的存取控管政策。
bigtable.authorizedViews.update 更新授權檢視的設定。
持續性 materialized view 權限名稱 說明
bigtable.materializedViews.create 建立持續性 materialized view。
bigtable.materializedViews.delete 刪除持續性具體化檢視畫面。
bigtable.materializedViews.get 取得持續性 materialized view 的相關資訊。
bigtable.materializedViews.getIamPolicy 取得持續性具體化檢視區塊的 IAM 政策。
bigtable.materializedViews.list 列出執行個體中的持續性 materialized view。
bigtable.materializedViews.readRows 從持續性 materialized view 讀取資料列。
bigtable.materializedViews.sampleRowKeys 取得連續具體化檢視區塊中使用的資料列鍵範例。
bigtable.materializedViews.setIamPolicy 更新持續性具體化檢視表的存取權控管政策。
bigtable.materializedViews.update 更新持續性具體化檢視表的設定。

預先定義的角色

每個預先定義的角色是由一或多個權限集合而成。舉例來說,roles/bigtable.reader 提供 Bigtable 執行個體、叢集、資料表和資料欄系列相關資訊的唯讀存取權,以及資料表內含的資料。您可以分配角色給使用者或群組,讓他們能夠對專案中的資源進行操作。

下表列出 Bigtable 的預先定義角色,包括與每個角色關聯的權限清單:

Role Permissions

(roles/bigtable.admin)

Administers all Bigtable instances within a project, including the data stored within tables. Can create new instances. Intended for project administrators.

Lowest-level resources where you can grant this role:

  • Table

bigtable.*

  • bigtable.appProfiles.create
  • bigtable.appProfiles.delete
  • bigtable.appProfiles.get
  • bigtable.appProfiles.list
  • bigtable.appProfiles.update
  • bigtable.authorizedViews.create
  • bigtable.authorizedViews.createTagBinding
  • bigtable.authorizedViews.delete
  • bigtable.authorizedViews.deleteTagBinding
  • bigtable.authorizedViews.get
  • bigtable.authorizedViews.getIamPolicy
  • bigtable.authorizedViews.list
  • bigtable.authorizedViews.listEffectiveTags
  • bigtable.authorizedViews.listTagBindings
  • bigtable.authorizedViews.mutateRows
  • bigtable.authorizedViews.readRows
  • bigtable.authorizedViews.sampleRowKeys
  • bigtable.authorizedViews.setIamPolicy
  • bigtable.authorizedViews.update
  • bigtable.backups.create
  • bigtable.backups.delete
  • bigtable.backups.get
  • bigtable.backups.getIamPolicy
  • bigtable.backups.list
  • bigtable.backups.read
  • bigtable.backups.restore
  • bigtable.backups.setIamPolicy
  • bigtable.backups.update
  • bigtable.clusters.create
  • bigtable.clusters.delete
  • bigtable.clusters.get
  • bigtable.clusters.list
  • bigtable.clusters.update
  • bigtable.hotTablets.list
  • bigtable.instances.create
  • bigtable.instances.createTagBinding
  • bigtable.instances.delete
  • bigtable.instances.deleteTagBinding
  • bigtable.instances.executeQuery
  • bigtable.instances.get
  • bigtable.instances.getIamPolicy
  • bigtable.instances.list
  • bigtable.instances.listEffectiveTags
  • bigtable.instances.listTagBindings
  • bigtable.instances.ping
  • bigtable.instances.setIamPolicy
  • bigtable.instances.update
  • bigtable.keyvisualizer.get
  • bigtable.keyvisualizer.list
  • bigtable.locations.list
  • bigtable.logicalViews.create
  • bigtable.logicalViews.delete
  • bigtable.logicalViews.get
  • bigtable.logicalViews.getIamPolicy
  • bigtable.logicalViews.list
  • bigtable.logicalViews.readRows
  • bigtable.logicalViews.setIamPolicy
  • bigtable.logicalViews.update
  • bigtable.materializedViews.create
  • bigtable.materializedViews.delete
  • bigtable.materializedViews.get
  • bigtable.materializedViews.getIamPolicy
  • bigtable.materializedViews.list
  • bigtable.materializedViews.readRows
  • bigtable.materializedViews.sampleRowKeys
  • bigtable.materializedViews.setIamPolicy
  • bigtable.materializedViews.update
  • bigtable.memoryLayers.get
  • bigtable.memoryLayers.list
  • bigtable.memoryLayers.update
  • bigtable.schemaBundles.create
  • bigtable.schemaBundles.delete
  • bigtable.schemaBundles.get
  • bigtable.schemaBundles.getIamPolicy
  • bigtable.schemaBundles.list
  • bigtable.schemaBundles.setIamPolicy
  • bigtable.schemaBundles.update
  • bigtable.tables.checkConsistency
  • bigtable.tables.create
  • bigtable.tables.delete
  • bigtable.tables.generateConsistencyToken
  • bigtable.tables.get
  • bigtable.tables.getIamPolicy
  • bigtable.tables.list
  • bigtable.tables.mutateRows
  • bigtable.tables.readRows
  • bigtable.tables.sampleRowKeys
  • bigtable.tables.setIamPolicy
  • bigtable.tables.undelete
  • bigtable.tables.update

cloudkms.keyHandles.*

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

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.timeSeries.*

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

resourcemanager.projects.get

(roles/bigtable.editor)

Editor role for bigtable

bigtable.appProfiles.*

  • bigtable.appProfiles.create
  • bigtable.appProfiles.delete
  • bigtable.appProfiles.get
  • bigtable.appProfiles.list
  • bigtable.appProfiles.update

bigtable.authorizedViews.create

bigtable.authorizedViews.delete

bigtable.authorizedViews.get

bigtable.authorizedViews.getIamPolicy

bigtable.authorizedViews.list

bigtable.authorizedViews.listEffectiveTags

bigtable.authorizedViews.listTagBindings

bigtable.authorizedViews.mutateRows

bigtable.authorizedViews.readRows

bigtable.authorizedViews.sampleRowKeys

bigtable.authorizedViews.update

bigtable.backups.create

bigtable.backups.delete

bigtable.backups.get

bigtable.backups.getIamPolicy

bigtable.backups.list

bigtable.backups.read

bigtable.backups.restore

bigtable.backups.update

bigtable.clusters.*

  • bigtable.clusters.create
  • bigtable.clusters.delete
  • bigtable.clusters.get
  • bigtable.clusters.list
  • bigtable.clusters.update

bigtable.hotTablets.list

bigtable.instances.create

bigtable.instances.delete

bigtable.instances.executeQuery

bigtable.instances.get

bigtable.instances.getIamPolicy

bigtable.instances.list

bigtable.instances.listEffectiveTags

bigtable.instances.listTagBindings

bigtable.instances.ping

bigtable.instances.update

bigtable.keyvisualizer.*

  • bigtable.keyvisualizer.get
  • bigtable.keyvisualizer.list

bigtable.locations.list

bigtable.logicalViews.create

bigtable.logicalViews.delete

bigtable.logicalViews.get

bigtable.logicalViews.getIamPolicy

bigtable.logicalViews.list

bigtable.logicalViews.readRows

bigtable.logicalViews.update

bigtable.materializedViews.create

bigtable.materializedViews.delete

bigtable.materializedViews.get

bigtable.materializedViews.getIamPolicy

bigtable.materializedViews.list

bigtable.materializedViews.readRows

bigtable.materializedViews.sampleRowKeys

bigtable.materializedViews.update

bigtable.memoryLayers.*

  • bigtable.memoryLayers.get
  • bigtable.memoryLayers.list
  • bigtable.memoryLayers.update

bigtable.schemaBundles.create

bigtable.schemaBundles.delete

bigtable.schemaBundles.get

bigtable.schemaBundles.getIamPolicy

bigtable.schemaBundles.list

bigtable.schemaBundles.update

bigtable.tables.checkConsistency

bigtable.tables.create

bigtable.tables.delete

bigtable.tables.generateConsistencyToken

bigtable.tables.get

bigtable.tables.getIamPolicy

bigtable.tables.list

bigtable.tables.mutateRows

bigtable.tables.readRows

bigtable.tables.sampleRowKeys

bigtable.tables.undelete

bigtable.tables.update

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/bigtable.user)

Provides read-write access to the data stored within Bigtable tables. Intended for application developers or service accounts.

Lowest-level resources where you can grant this role:

  • Table

bigtable.appProfiles.get

bigtable.appProfiles.list

bigtable.authorizedViews.get

bigtable.authorizedViews.list

bigtable.authorizedViews.mutateRows

bigtable.authorizedViews.readRows

bigtable.authorizedViews.sampleRowKeys

bigtable.backups.get

bigtable.backups.list

bigtable.clusters.get

bigtable.clusters.list

bigtable.hotTablets.list

bigtable.instances.executeQuery

bigtable.instances.get

bigtable.instances.list

bigtable.instances.ping

bigtable.keyvisualizer.*

  • bigtable.keyvisualizer.get