管理 Lakehouse Iceberg REST ACL

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

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

事前準備

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

  2. 啟用 BigLake API。

    啟用 API 時所需的角色

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

    啟用 API

  3. 安裝並初始化 Google Cloud SDK。
  4. 確認您有現有的 Apache Iceberg REST 目錄端點和命名空間。
  5. 確認您在指定目錄和命名空間中,已有 Lakehouse 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 格式建立本機政策檔案。政策檔案必須包含繫結和 etagetag 值提供開放式並行控制,可防止覆寫變更。如要取得目前的 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 格式建立本機政策檔案。政策檔案必須包含繫結和 etagetag 值提供開放式並行控制,可防止覆寫變更。如要取得目前的 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:目標 Lakehouse Iceberg 資料表的名稱。
    • CATALOG_NAME:Apache Iceberg REST 目錄端點的名稱。
    • NAMESPACE_NAME:目錄中的命名空間名稱。
    • PROJECT_ID:您的 Google Cloud專案 ID。
  2. 指令會以 YAML 格式輸出 IAM 政策,顯示目前的角色繫結和成員。

設定 IAM 政策

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

  1. 以 JSON 或 YAML 格式建立本機政策檔案。政策檔案必須包含繫結和 etagetag 值提供開放式並行控制,可防止覆寫變更。如要取得目前的 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:目標 Lakehouse Iceberg 資料表的名稱。
    • POLICY_FILE:本機政策檔案的路徑。
    • CATALOG_NAME:Apache Iceberg REST 目錄端點的名稱。
    • NAMESPACE_NAME:目錄中的命名空間名稱。
    • PROJECT_ID:您的 Google Cloud 專案 ID。

後續步驟