管理 Apache Iceberg REST 目錄端點 ACL

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

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

事前準備

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

  2. 如果尚未啟用 BigLake API,請先啟用。

    啟用 API 時所需的角色

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

    啟用 API

  3. 安裝並初始化 Google Cloud SDK。
  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 alpha biglake iceberg catalogs get-iam-policy 指令。

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

    gcloud alpha 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 目錄的 IAM 政策,請使用 gcloud alpha 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 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

控制台

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

    前往 Lakehouse

  2. 選取現有目錄,或建立新目錄 (如果沒有)。

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

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

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

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

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

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

  8. 按一下 [儲存]。

  9. 按一下 [關閉]。

gcloud

取得 IAM 政策

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

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

設定 IAM 政策

如要更新 Lakehouse Iceberg 命名空間的 IAM 政策,請使用 gcloud alpha 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 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

控制台

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

    前往 Lakehouse

  2. 選取現有目錄,或建立新目錄 (如果沒有)。

  3. 在「命名空間詳細資料」表格中,按一下包含資料表的命名空間名稱。

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

  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。

後續步驟