Lakehouse for Apache Iceberg 支援 Cloud Storage 中 Apache Iceberg 資料表的資料表層級存取控管,這些資料表使用 Lakehouse 執行階段目錄。
Lakehouse 執行階段目錄會管理資料表的中繼資料,而身分與存取權管理 (IAM) 政策則會定義權限。gcloud CLI 提供取得及設定這些 IAM 政策所需的指令。
事前準備
-
啟用 BigLake API。
啟用 API 時所需的角色
如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。 - 安裝並初始化 Google Cloud SDK。
- 確認您有現有的 Apache Iceberg REST 目錄端點和命名空間。
- 確認您在指定目錄和命名空間中,已有 Lakehouse Iceberg 表格。
必要的角色
如要取得管理 Iceberg 表格存取控制清單 (ACL) 的權限,請要求管理員授予您下列 IAM 角色:
- 所有項目: 專案的 BigLake 管理員 (roles/biglake.admin)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
運作方式
IAM 政策會定義哪些主體對資源具有特定角色和權限。您可以取得及設定這些政策,藉此管理資源的存取權。
相關 IAM 角色
您可以對 Lakehouse 資源套用下列常見的 IAM 角色:
roles/biglake.admin:可全面控管 Lakehouse 資源。roles/biglake.user:讓主體使用 Lakehouse 資源,包括讀取及寫入資料表資料。roles/biglake.viewer:讓主體檢視 Lakehouse 資源及讀取資料表資料。
最佳做法
- 最低權限:只授予使用者和服務帳戶必要權限。
- 使用 Etag:使用
set-iam-policy時,請務必在政策檔案中加入最近get-iam-policy呼叫的etag,以免發生非預期的覆寫。 - 稽核記錄:請務必啟用 Cloud 稽核記錄,追蹤 IAM 政策的變更。
- 版本管控:將政策檔案儲存在版本管控系統中。
為資料表套用 ACL 角色
下節說明如何將 ACL 套用至資料表。
取得 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.user", "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 概念。