使用 IAM 控管 Bigtable 存取權
本頁面說明 Bigtable 的存取權控管選項。
總覽
Bigtable 使用身分與存取權管理 (IAM) 控管存取權。您可以在資源上設定 IAM 政策,控管哪些使用者具備何種資源的哪些存取權。
Bigtable 資源會以階層劃分。Google Cloud 專案是 Bigtable 執行個體的父項,而 Bigtable 執行個體則是叢集和資料表的父項。資料表是授權檢視區塊的父項,而叢集是備份的父項。您可以在每個層級設定存取控管。
如果您擁有某個層級的權限,系統會自動授予您該層級以下的權限。舉例來說,如果您有專案層級的存取權,就能存取該專案中的執行個體、叢集、資料表、授權檢視區塊和持續具體化檢視區塊。如果您獲准存取授權檢視表或連續具體化檢視表,則不會自動取得授權檢視表或連續具體化檢視表父項的高階資源存取權,例如資料表和執行個體。這種行為稱為「政策繼承」。
如要進一步瞭解 IAM 階層,請參閱「IAM 政策繼承」。
以下列舉幾個在專案層級使用存取權控管的範例:
- 授予權限,讓使用者可以讀取專案中的任何資料表,但不能寫入資料。
- 授予權限,讓使用者可以讀取專案中的任何資料表並寫入資料,但是沒有執行個體的管理權限。
- 授予權限,讓使用者可以讀取專案中的任何資料表並寫入資料,並且擁有執行個體的管理權限。
在執行個體層級使用存取權控管機制的範例如下:
- 允許使用者從專案中某個執行個體的任何資料表讀取資料,但該專案有多個執行個體。
- 如果專案有多個執行個體,允許使用者只管理其中一個執行個體。
在資料表層級使用存取權控管的範例如下:
- 允許使用者寫入資料表,但無法從資料表讀取資料。
- 允許使用者讀取資料表,但無法寫入資料表。
在「備份」層級使用存取權控管的範例如下:
- 禁止使用者刪除備份。
- 禁止使用者從備份還原。
在授權 view 層級使用存取權控管機制的範例如下:
- 允許使用者讀取授權檢視畫面,但無法修改。
- 讓使用者只能查看資料表的多個授權檢視畫面之一。
在持續性具體化檢視表層級使用存取權控管的範例如下:
- 允許使用者從連續具體化檢視區塊讀取資料,但不允許修改基礎資料表。
如需 IAM 和其功能的詳細說明,請參閱 IAM 開發人員指南,其中以授予、變更及撤銷存取權的部分最為重要。
在 Bigtable 中,您無法將存取權授予下列類型的主體:
如需 Bigtable 支援的權限和角色清單,請參閱下列各節。
啟用 Bigtable API
如要查看及指派 Bigtable IAM 角色,您必須為專案啟用 Bigtable API。您必須先啟用 API,才能在 Google Cloud 控制台看到 Bigtable 角色。
啟用 API 時所需的角色
如要啟用 API,您需要服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色。
權限
本節概述 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 |
讀取備份的存取控制清單 (ACL)。以 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.instances.create |
建立 Bigtable 執行個體。 |
bigtable.instances.createTagBinding |
建立代碼。 |
bigtable.instances.delete |
刪除 Bigtable 執行個體。 |
bigtable.instances.deleteTagBinding |
刪除標記。 |
bigtable.instances.get |
取得 Bigtable 執行個體的相關資訊。 |
bigtable.instances.getIamPolicy |
讀取執行個體存取控制清單 (ACL)。以 IAM 政策的形式傳回。 |
bigtable.instances.list |
列出專案的 Bigtable 執行個體。 |
bigtable.instances.listEffectiveTagBindings |
列出執行個體的所有有效標記。 |
bigtable.instances.listTagBindings |
列出執行個體的標記。 |
bigtable.instances.ping |
傳送頻道預熱要求。 |
bigtable.instances.executeQuery |
將 ExecuteQuery 和 PrepareQuery 要求傳送至執行個體。 |
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 |
讀取資料表 ACL。以 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 位置。 |
| 授權檢視畫面權限名稱 | 說明 |
|---|---|
bigtable.authorizedViews.create |
建立授權檢視表。 |
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 |
更新授權檢視區塊的存取控管政策。 |
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 |
|---|---|
Bigtable Administrator( 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:
|
|
Bigtable Reader( Provides read-only access to the data stored within Bigtable tables. Intended for data scientists, dashboard generators, and other data-analysis scenarios. Lowest-level resources where you can grant this role:
|
|
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:
|
|
Bigtable Viewer( Provides no data access. Intended as a minimal set of permissions to access the Google Cloud console for Bigtable. Lowest-level resources where you can grant this role:
|
|
自訂角色
如果 Bigtable 中的預先定義角色不符合您的業務需求,您可以使用自訂角色,並為這些角色指定權限。
如果自訂角色需要支援存取 Google Cloud 控制台,您必須找出使用者將執行的工作,然後確保自訂角色具備各項工作所需的權限,如下表所示。如果自訂角色沒有執行工作所需的所有權限,使用者嘗試執行該工作時, Google Cloud 控制台將無法正常運作。
| Google Cloud 控制台工作 | 所需權限 |
|---|---|
| 基本存取 Google Cloud 控制台 |
|
| 新增執行個體或是叢集 |
基本操作權限,以及:
|
| 變更執行個體或是叢集 |
基本操作權限,以及:
|
| 管理資料庫複寫設定 |
基本操作權限,以及:
|
| 刪除執行個體或叢集 |
基本操作權限,以及:
|
| 透過圖表對執行個體進行監控 |
基本操作權限,以及:
|
| 建立及更新資料表 |
基本操作權限,以及:
|
| 還原備份 |
基本操作權限,以及:
|
IAM 管理
本節說明如何在專案、執行個體、資料表和備份層級管理 IAM 角色和相關權限。
專案層級的 IAM 管理
在專案層級中,您可以透過Google Cloud 控制台、IAM API 或是 Google Cloud CLI 來授予、變更及撤銷 IAM 角色。如需詳細的操作說明,請參閱「授予、變更及撤銷存取權」。
建立專案後,您可以根據特定存取層級,授予使用者專案層級的 IAM 角色。
必要的角色
為使用者設定執行個體層級、資料表層級、備份層級、授權檢視層級或連續具體化檢視層級 IAM 角色之前,請確保使用者至少具備下列其中一個專案層級 IAM 角色:
- Bigtable 檢視者 (推薦)
- Bigtable 讀取者
- Bigtable 使用者
- Bigtable 管理員
選擇專案層級角色時,請確保該角色在專案中的所有執行個體、資料表、備份、授權檢視或連續具體化檢視中,擁有的權限不會超過使用者實際需求。因此,您幾乎在所有情況下都應授予 Bigtable 檢視者角色。
如果使用者沒有至少一個專案層級的角色,就無法透過 Google Cloud 控制台存取 Bigtable。 Google Cloud 控制台需要其中一個專案層級角色,才能代表使用者擷取執行個體、叢集、資料表或備份的相關資訊。
授予執行個體層級的 IAM 角色
在執行個體層級,您可以將任何 Bigtable 預先定義的角色授予使用者或服務帳戶。您也可以授予已定義的任何自訂角色。
若您要在執行個體層級下授予預先定義角色或自訂角色給使用者或服務帳戶,請進行以下操作:
控制台
前往Google Cloud console 的 Bigtable 執行個體頁面。
在執行個體旁邊的方塊勾選您所要管理的角色,這時即會出現一個資訊面版。
在資訊面版中點選 [權限]。
在「新增主體」下方,開始輸入要新增的使用者或服務帳戶電子郵件地址,然後按一下使用者或服務帳戶的電子郵件地址。
按一下「請選擇角色」下拉式清單,然後按一下「Bigtable」選取預先定義的角色,或按一下「自訂」選取自訂角色。
點選您所想要指派的角色名稱。
點擊 [新增]。這時,系統即會將您在執行個體層級中所指派的角色授予使用者或服務帳戶。
gcloud
如果您不知道執行個體 ID,請使用
bigtable instances list指令查看專案的執行個體清單:gcloud bigtable instances list使用
bigtable instances set-iam-policy指令:gcloud bigtable instances set-iam-policy \ INSTANCE_ID \ POLICY_FILE請提供下列資訊:
- INSTANCE_ID: 執行個體的永久 ID。
- POLICY_FILE:包含有效 IAM 政策的本機 JSON 或 YAML 檔案路徑。
授予資料表層級的 IAM 角色
在資料表層級,您可以將任何 Bigtable 預先定義的角色授予使用者或服務帳戶。您也可以授予已定義的任何自訂角色。
如要在表格層級授予使用者或服務帳戶預先定義或自訂角色,請按照下列步驟操作:
控制台
前往Google Cloud console 的 Bigtable 執行個體頁面。
按一下包含您要設定 IAM 的資料表執行個體名稱。
選取左側導覽窗格中的「資料表」。
找出要管理角色的表格,然後勾選旁邊的方塊。這時即會出現一個資訊面版。
在資訊面版中點選 [權限]。
在「新增主體」下方,開始輸入要新增的使用者或服務帳戶電子郵件地址,然後按一下使用者或服務帳戶的電子郵件地址。
按一下「請選擇角色」下拉式清單,然後按一下「Bigtable」選取預先定義的角色,或按一下「自訂」選取自訂角色。
點選您所想要指派的角色名稱。
按一下「Add」(新增)。系統會授予使用者或服務帳戶您在資料表層級指定的角色。
gcloud
如果您不知道執行個體 ID,請使用
bigtable instances list指令查看專案的執行個體清單:gcloud bigtable instances list如果您不知道執行個體的資料表 ID,請使用
bigtable instances tables list指令查看執行個體的資料表清單。gcloud bigtable instances tables list --instances=INSTANCE_ID請提供下列資訊:
- INSTANCE_ID: 執行個體的永久 ID。
使用
bigtable instances tables set-iam-policy指令:gcloud bigtable instances tables set-iam-policy \ TABLE_ID \ --instance=INSTANCE_ID \ POLICY_FILE請提供下列資訊:
- TABLE_ID:資料表的永久 ID。
- INSTANCE_ID: 執行個體的永久 ID。
- POLICY_FILE:包含有效 IAM 政策的本機 JSON 或 YAML 檔案路徑。
授予備份層級的 IAM 角色
在備份層級,您可以將任何 Bigtable 預先定義的角色授予使用者或服務帳戶。您也可以授予已定義的任何自訂角色。
如要在備份層級授予使用者或服務帳戶預先定義或自訂角色,請按照下列步驟操作:
gcloud
如果您不知道執行個體 ID,請使用
bigtable instances list指令查看專案的執行個體清單:gcloud bigtable instances list如果您不知道執行個體中的備份 ID,請使用
bigtable instances backups list指令查看執行個體中的備份清單。gcloud bigtable backups list --instances=INSTANCE_ID請提供下列資訊:
- INSTANCE_ID: 執行個體的永久 ID。
使用
gcloud bigtable backups set-iam-policy指令:gcloud bigtable backups set-iam-policy BACKUP_ID \ --instance=INSTANCE_ID \ --cluster=CLUSTER_ID \ POLICY_FILE請提供下列資訊:
- BACKUP_ID:備份的永久 ID。
- INSTANCE_ID: 執行個體的永久 ID。
- TABLE_ID:資料表的永久 ID。
- POLICY_FILE:包含有效 IAM 政策的本機 JSON 或 YAML 檔案路徑。
授予授權檢視層級的 IAM 角色
在授權的檢視畫面層級,您可以將任何 Bigtable 預先定義的角色授予使用者或服務帳戶。您也可以授予您定義的任何自訂角色。
如要在授權檢視層級將預先定義或自訂角色授予使用者或服務帳戶,請按照下列步驟操作:
控制台
在 Google Cloud 控制台中開啟 Bigtable 執行個體清單。
按一下包含授權檢視區塊的執行個體。
在導覽窗格中,按一下「Bigtable Studio」。
在檔案總管中,展開資料表和「已授權檢視表」。
在要修改的授權檢視畫面旁,按一下 more_vert 動作選單,然後點選「授予存取權」。
新增至少一個主體,然後選取要指派給該主體或主體群組的角色。
選用:如要授予其他角色的存取權,請按一下「新增其他角色」,然後輸入每個其他角色的主體和角色。
按一下 [儲存]。
gcloud
如果您不知道執行個體 ID,請使用
bigtable instances list指令查看專案的執行個體清單:gcloud bigtable instances list如果您不知道執行個體的資料表 ID,請使用
bigtable instances tables list指令查看執行個體的資料表清單。gcloud bigtable instances tables list --instances=INSTANCE_ID如果您不知道檢視區塊 ID,請使用
bigtable authorized-views list指令查看資料表的所有授權檢視區塊清單。gcloud bigtable instances tables authorized-views list \ --instance=INSTANCE_ID \ --table=TABLE_ID使用
bigtable authorized-views set-iam-policy指令:gcloud bigtable authorized-views set-iam-policy TABLE_ID{"</var>"}} \ AUTHORIZED_VIEW_ID{"</var>"}} --instance=INSTANCE_ID{"</var>"}} POLICY_FILE{"</var>"}}請提供下列資訊:
- INSTANCE_ID: 執行個體的永久 ID。
- TABLE_ID:資料表的永久 ID。
- AUTHORIZED_VIEW_ID:檢視區塊的永久 ID。
- POLICY_FILE:包含有效 IAM 政策的本機 JSON 或 YAML 檔案路徑。
IAM 條件
IAM 條件可讓您針對部分 Google Cloud資源 (包括 Bigtable 資源),定義及強制執行條件式、以屬性為基礎的存取權控管。
在 Bigtable 中,您可以根據下列屬性強制執行條件式存取權:
- 日期/時間屬性:可用來為 Bigtable 資源設定暫時 (有效期)、排定或限時等各類存取。舉例來說,您可以允許使用者存取表格,但設有期限。
- 資源屬性:根據資源名稱、資源類型或資源服務屬性設定條件式存取權。在 Bigtable 中,您可以透過執行個體、叢集、資料表、備份和授權檢視區的屬性,設定條件式存取權。舉例來說,您可以允許使用者只管理開頭為特定前置字元的資料表,也可以只允許使用者存取特定資料表。
如要進一步瞭解 IAM 條件,請參閱條件總覽。
後續步驟
進一步瞭解身分與存取權管理。