Lakehouse for Apache Iceberg 支援目錄層級、命名空間層級和資料表層級的存取控管,適用於 Cloud Storage 中使用 Lakehouse 執行階段目錄的 Apache Iceberg 資料表。
Lakehouse 執行階段目錄會管理中繼資料,而身分與存取權管理 (IAM) 政策則會定義權限。您可以使用Google Cloud 控制台或 gcloud CLI 取得及設定這些 IAM 政策。
事前準備
-
啟用 BigLake API。
啟用 API 時所需的角色
您必須具備
serviceusage.services.enable權限,才能啟用 API。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。 - 安裝並初始化 Google Cloud SDK。
- 確認您有現有的 Apache Iceberg REST 目錄端點和命名空間。
- 確認您在指定目錄和命名空間中,已有 Lakehouse Iceberg 表格。
必要的角色
如要取得管理 Iceberg 目錄、命名空間和資料表存取控制清單 (ACL) 的權限,請要求管理員授予您下列 IAM 角色:
-
所有專案:
BigLake 管理員 (
roles/biglake.admin)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
運作方式
IAM 政策會定義哪些主體對資源具有特定角色和權限。您可以取得及設定這些政策,藉此管理資源的存取權。
IAM 角色範圍
您可以在資源階層的不同層級授予 IAM 角色:
- 專案層級:授予專案中所有 Lakehouse 資源的存取權。
- 目錄層級:授予指定目錄所屬資源的存取權。
- 命名空間層級:授予指定命名空間所屬資源的存取權。
- 資料表層級:僅授予指定資料表的存取權。
相關 IAM 角色
下表列出可套用至 Lakehouse 資源的部分常見 IAM 角色。如需可用角色及其相關聯權限的完整清單,請參閱「Lakehouse IAM 角色」。
roles/biglake.admin:提供所有 Lakehouse 資源的完整存取權。roles/biglake.editor:提供所有 Lakehouse 資源的讀寫存取權。roles/biglake.viewer:提供所有 Lakehouse 資源的唯讀存取權。roles/biglake.metadataViewer:提供所有 Lakehouse 資源的唯讀中繼資料存取權。
最佳做法
- 最低權限:只授予使用者和服務帳戶必要權限。
- 使用 Etag:使用
set-iam-policy時,請務必在政策檔案中加入最近get-iam-policy呼叫的etag,以免發生非預期的覆寫。 - 稽核記錄:請務必啟用 Cloud 稽核記錄,追蹤 IAM 政策的變更。
- 版本管控:將政策檔案儲存在版本管控系統中。
將 ACL 角色套用至目錄
以下章節說明如何將 ACL 套用至目錄。
gcloud
取得 IAM 政策
如要查看 Lakehouse Iceberg 目錄目前的 IAM 政策,請使用 gcloud alpha biglake iceberg catalogs
get-iam-policy 指令。
如要取得 IAM 政策,請執行下列指令:
gcloud alpha biglake iceberg catalogs get-iam-policy CATALOG_NAME \ --project=PROJECT_ID更改下列內容:
CATALOG_NAME:Apache Iceberg REST 目錄端點的名稱。PROJECT_ID:您的 Google Cloud專案 ID。
指令會以 YAML 格式輸出 IAM 政策,顯示目前的角色繫結和成員。
設定 IAM 政策
如要更新 Lakehouse Iceberg 目錄的 IAM 政策,請使用 gcloud alpha biglake iceberg catalogs set-iam-policy 指令。這項指令會使用本機 JSON 或 YAML 檔案,其中包含您要套用的政策。
以 JSON 或 YAML 格式建立本機政策檔案。政策檔案必須包含繫結和
etag。etag值提供開放式並行控制,可防止覆寫變更。如要取得目前的etag,請先執行get-iam-policy指令。以下範例顯示名為
policy.json的政策檔案:{ "bindings": [ { "role": "roles/biglake.viewer", "members": [ "user:test-user@example.com" ] }, { "role": "roles/biglake.editor", "members": [ "user:someone@example.com" ] } ], "etag": "BwYXa9UuR8w=", "version": 3 }如要設定 IAM 政策,請執行下列指令:
gcloud alpha biglake iceberg catalogs set-iam-policy CATALOG_NAME POLICY_FILE \ --project=PROJECT_ID更改下列內容:
CATALOG_NAME:Apache Iceberg REST 目錄端點的名稱。POLICY_FILE:本機政策檔案的路徑。PROJECT_ID:您的 Google Cloud 專案 ID。
將 ACL 角色套用至命名空間
以下章節說明如何將 ACL 套用至命名空間。
控制台不會顯示或管理繼承的 IAM 政策。 Google Cloud
控制台
在 Google Cloud 控制台中開啟「Lakehouse」Lakehouse頁面。
選取現有目錄,或建立目錄 (如果沒有的話)。
在「命名空間詳細資料」表格中,選取命名空間並展開選單選項 ()。
按一下 [管理權限]。
系統會顯示「分享權限」對話方塊。
按一下「Add principal」(新增主體)。
在「New Principals」(新增主體) 欄位中,輸入要指派角色的主體帳戶。
在「選取角色」部分,選擇要指派給主體帳戶的角色。
按一下 [儲存]。
按一下 [關閉]。
gcloud
取得 IAM 政策
如要查看 Lakehouse Iceberg 命名空間目前的 IAM 政策,請使用 gcloud alpha biglake iceberg namespaces
get-iam-policy 指令。
如要取得 IAM 政策,請執行下列指令:
gcloud alpha biglake iceberg namespaces get-iam-policy NAMESPACE_NAME \ --catalog=CATALOG_NAME \ --project=PROJECT_ID更改下列內容:
NAMESPACE_NAME:目錄中的目標命名空間名稱。CATALOG_NAME:Apache Iceberg REST 目錄端點的名稱。PROJECT_ID:您的 Google Cloud專案 ID。
指令會以 YAML 格式輸出 IAM 政策,顯示目前的角色繫結和成員。
設定 IAM 政策
如要更新 Lakehouse Iceberg 命名空間的 IAM 政策,請使用 gcloud alpha biglake iceberg namespaces set-iam-policy 指令。這項指令會使用本機 JSON 或 YAML 檔案,其中包含您要套用的政策。
以 JSON 或 YAML 格式建立本機政策檔案。政策檔案必須包含繫結和
etag。etag值提供開放式並行控制,可防止覆寫變更。如要取得目前的etag,請先執行get-iam-policy指令。以下範例顯示名為
policy.json的政策檔案:{ "bindings": [ { "role": "roles/biglake.viewer", "members": [ "user:test-user@example.com" ] }, { "role": "roles/biglake.editor", "members": [ "user:someone@example.com" ] } ], "etag": "BwYXa9UuR8w=", "version": 3 }如要設定 IAM 政策,請執行下列指令:
gcloud alpha biglake iceberg namespaces set-iam-policy NAMESPACE_NAME POLICY_FILE \ --catalog=CATALOG_NAME \ --project=PROJECT_ID更改下列內容:
NAMESPACE_NAME:目錄中的目標命名空間名稱。POLICY_FILE:本機政策檔案的路徑。CATALOG_NAME:Apache Iceberg REST 目錄端點的名稱。PROJECT_ID:您的 Google Cloud 專案 ID。
為資料表套用 ACL 角色
下節說明如何將 ACL 套用至資料表。
控制台不會顯示或管理繼承的 IAM 政策。 Google Cloud
控制台
在 Google Cloud 控制台中開啟「Lakehouse」Lakehouse頁面。
選取現有目錄,或建立目錄 (如果沒有的話)。
在「命名空間詳細資料」表格中,點選包含資料表的命名空間名稱。
在「資料表詳細資料」頁面中,選取資料表並展開選單選項 ()。
按一下 [管理權限]。
系統會顯示「分享權限」對話方塊。
按一下「Add principal」(新增主體)。
在「New Principals」(新增主體) 欄位中,輸入要指派角色的主體帳戶。
在「選取角色」部分,選擇要指派給主體帳戶的角色。
按一下 [儲存]。
按一下 [關閉]。
gcloud
取得 IAM 政策
如要查看 Lakehouse Iceberg 資料表目前的 IAM 政策,請使用 gcloud biglake iceberg tables
get-iam-policy 指令。
如要取得 IAM 政策,請執行下列指令:
gcloud biglake iceberg tables get-iam-policy TABLE_NAME \ --catalog=CATALOG_NAME \ --namespace=NAMESPACE_NAME \ --project=PROJECT_ID更改下列內容:
TABLE_NAME:目標 Lakehouse Iceberg 資料表的名稱。CATALOG_NAME:Apache Iceberg REST 目錄端點的名稱。NAMESPACE_NAME:目錄中的命名空間名稱。PROJECT_ID:您的 Google Cloud專案 ID。
指令會以 YAML 格式輸出 IAM 政策,顯示目前的角色繫結和成員。
設定 IAM 政策
如要更新 Lakehouse Iceberg 表格的 IAM 政策,請使用 gcloud biglake iceberg tables set-iam-policy 指令。這項指令會使用本機 JSON 或 YAML 檔案,其中包含您要套用的政策。
以 JSON 或 YAML 格式建立本機政策檔案。政策檔案必須包含繫結和
etag。etag值提供開放式並行控制,可防止覆寫變更。如要取得目前的etag,請先執行get-iam-policy指令。以下範例顯示名為
policy.json的政策檔案:{ "bindings": [ { "role": "roles/biglake.viewer", "members": [ "user:test-user@example.com" ] }, { "role": "roles/biglake.editor", "members": [ "user:someone@example.com" ] } ], "etag": "BwYXa9UuR8w=", "version": 3 }如要設定 IAM 政策,請執行下列指令:
gcloud biglake iceberg tables set-iam-policy TABLE_NAME POLICY_FILE \ --catalog=CATALOG_NAME \ --namespace=NAMESPACE_NAME \ --project=PROJECT_ID更改下列內容:
TABLE_NAME:目標 Lakehouse Iceberg 資料表的名稱。POLICY_FILE:本機政策檔案的路徑。CATALOG_NAME:Apache Iceberg REST 目錄端點的名稱。NAMESPACE_NAME:目錄中的命名空間名稱。PROJECT_ID:您的 Google Cloud 專案 ID。
後續步驟
- 進一步瞭解身分與存取權管理。
- 如需完整的 Lakehouse IAM 角色和權限清單,請參閱這篇文章。
- 瞭解 Lakehouse 概念。