管理 Apache Iceberg REST 目錄端點 ACL

無邊界湖倉支援目錄層級、命名空間層級和資料表層級的存取控管,適用於 Cloud Storage 中使用 Lakehouse 執行階段目錄的 Apache Iceberg 資料表。

Lakehouse 執行階段目錄會管理中繼資料,而 Identity and Access Management (IAM) 政策則會定義權限。您可以使用Google Cloud 控制台或gcloud CLI 取得及設定這些 IAM 政策。

事前準備

  1. 確認 Google Cloud 專案已啟用計費功能。

  2. 啟用 BigLake API (如果尚未啟用)。

    啟用 API 所需的角色

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

    啟用 API

  3. 安裝並初始化 Google Cloud CLI。
  4. 確認您已有 Apache Iceberg REST 目錄端點和命名空間。
  5. 確認指定目錄和命名空間中,有 Lakehouse 管理的現有 Apache Iceberg 資料表。

必要的角色

如要取得管理 Iceberg 目錄、命名空間和資料表存取控管清單 (ACL) 所需的權限,請要求管理員授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

運作方式

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 biglake iceberg catalogs get-iam-policy 指令。

  1. 執行下列指令,取得 IAM 政策:

    gcloud biglake iceberg catalogs get-iam-policy CATALOG_NAME \
        --project=PROJECT_ID
    

    更改下列內容:

    • CATALOG_NAME:Apache Iceberg REST 目錄端點的名稱。
    • PROJECT_ID:您的 Google Cloud專案 ID。
  2. 指令會以 YAML 格式輸出 IAM 政策,顯示目前的角色繫結和成員。

設定 IAM 政策

如要更新 Lakehouse Iceberg 目錄的身分與存取權管理政策,請使用 gcloud biglake iceberg catalogs set-iam-policy 指令。這個指令會使用本機 JSON 或 YAML 檔案,其中包含您要套用的政策。

  1. 建立 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
    }
    
  2. 執行下列指令,設定 IAM 政策:

    gcloud 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 套用至命名空間。

Google Cloud 控制台不會顯示或管理繼承的 IAM 政策。

控制台

  1. 在 Google Cloud 控制台,開啟「Lakehouse」Lakehouse頁面。

    前往「Lakehouse」

  2. 選取現有目錄,如果沒有,請建立一個。

  3. 在「Namespace details」(命名空間詳細資料) 表格中,選取命名空間並展開選單選項 ()。

  4. 按一下 [管理權限]。

    系統隨即會顯示「共用權限」對話方塊。

  5. 按一下「Add principal」(新增主體)。

  6. 在「New Principals」(新增主體) 欄位中,輸入要指派角色的主體帳戶。

  7. 在「請選擇角色」部分,選擇要指派給主體帳戶的角色。

  8. 按一下 [儲存]。

  9. 按一下 [關閉]。

gcloud

取得 IAM 政策

如要查看 Lakehouse Iceberg 命名空間目前的 IAM 政策,請使用 gcloud biglake iceberg namespaces get-iam-policy 指令。

  1. 執行下列指令,取得 IAM 政策:

    gcloud 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。
  2. 指令會以 YAML 格式輸出 IAM 政策,顯示目前的角色繫結和成員。

設定 IAM 政策

如要更新 Lakehouse Iceberg 命名空間的身分與存取權管理政策,請使用 gcloud biglake iceberg namespaces set-iam-policy 指令。這個指令會使用本機 JSON 或 YAML 檔案,其中包含您要套用的政策。

  1. 建立 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
    }
    
  2. 執行下列指令,設定 IAM 政策:

    gcloud 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 套用至資料表。

Google Cloud 控制台不會顯示或管理繼承的 IAM 政策。

控制台

  1. 在 Google Cloud 控制台開啟「Lakehouse」Lakehouse頁面。

    前往「Lakehouse」

  2. 選取現有目錄,如果沒有,請建立一個。

  3. 在「Namespace details」(命名空間詳細資料) 表格中,按一下資料表所在命名空間的名稱。

  4. 在「Table details」(資料表詳細資料) 頁面中,選取資料表並展開選單選項 ()。

  5. 按一下 [管理權限]。

    系統隨即會顯示「共用權限」對話方塊。

  6. 按一下「Add principal」(新增主體)。

  7. 在「New Principals」(新增主體) 欄位中,輸入要指派角色的主體帳戶。

  8. 在「請選擇角色」部分,選擇要指派給主體帳戶的角色。

  9. 按一下 [儲存]。

  10. 按一下 [關閉]。

gcloud

取得 IAM 政策

如要查看 Lakehouse Iceberg 資料表目前的 IAM 政策,請使用 gcloud biglake iceberg tables get-iam-policy 指令。

  1. 執行下列指令,取得 IAM 政策:

    gcloud biglake iceberg tables get-iam-policy TABLE_NAME \
        --catalog=CATALOG_NAME \
        --namespace=NAMESPACE_NAME \
        --project=PROJECT_ID
    

    更改下列內容:

    • TABLE_NAME:目標 Apache Iceberg 資料表的名稱。
    • CATALOG_NAME:Apache Iceberg REST 目錄端點的名稱。
    • NAMESPACE_NAME:目錄中的命名空間名稱。
    • PROJECT_ID:您的 Google Cloud專案 ID。
  2. 指令會以 YAML 格式輸出 IAM 政策,顯示目前的角色繫結和成員。

設定 IAM 政策

如要更新 Lakehouse 代管 Apache Iceberg 資料表的 IAM 政策,請使用 gcloud biglake iceberg tables set-iam-policy 指令。這個指令會使用本機 JSON 或 YAML 檔案,其中包含您要套用的政策。

  1. 建立 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
    }
    
  2. 執行下列指令,設定 IAM 政策:

    gcloud biglake iceberg tables set-iam-policy TABLE_NAME POLICY_FILE \
        --catalog=CATALOG_NAME \
        --namespace=NAMESPACE_NAME \
        --project=PROJECT_ID
    

    更改下列內容:

    • TABLE_NAME:目標 Apache Iceberg 資料表的名稱。
    • POLICY_FILE:本機政策檔案的路徑。
    • CATALOG_NAME:Apache Iceberg REST 目錄端點的名稱。
    • NAMESPACE_NAME:目錄中的命名空間名稱。
    • PROJECT_ID:您的 Google Cloud 專案 ID。

後續步驟