為現有 Apache Iceberg REST 目錄啟用憑證販售模式,可將 Lakehouse for Apache Iceberg 設為向授權的查詢引擎或工作負載販售存取權範圍縮減的短期儲存空間權杖。
在 Lakehouse 執行階段目錄中,這個驗證方式可讓您或查詢執行階段不必持有基礎 Cloud Storage bucket 的直接讀取和寫入權限。
事前準備
-
啟用 BigLake API。
啟用 API 時所需的角色
如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。
必要的角色
如要取得啟用憑證販售功能所需的權限,請要求系統管理員授予您下列 IAM 角色:
-
全部:
- 專案的 BigLake 管理員 (
roles/biglake.admin) - 專案的儲存空間管理員 (
roles/storage.admin)
- 專案的 BigLake 管理員 (
-
自動佈建的 Apache Iceberg REST 目錄服務帳戶:
目標 Cloud Storage bucket 的「Storage 物件使用者」 (
roles/storage.objectUser)。啟用憑證販售功能後,請明確將儲存空間 bucket 的 Storage 物件使用者角色 (roles/storage.objectUser),授予目錄自動佈建的 Apache Iceberg REST 目錄服務帳戶。
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
啟用憑證販售功能
如果 Apache Iceberg REST 目錄的驗證方法設為使用者憑證,您可以切換為憑證臨時配發模式。
控制台
- 在 Google Cloud 控制台中開啟「Lakehouse」Lakehouse頁面。
在要更新的目錄資料列中,選取 「更多目錄動作」>「編輯驗證」。
在驗證對話方塊中,選取「憑證臨時配發模式」。自動佈建的 Apache Iceberg REST 目錄服務帳戶需要目標 Cloud Storage bucket 的明確「Storage 物件使用者」角色 (
roles/storage.objectUser)。根據預設,系統會建立僅供檢視的存取權。如果沒有這個角色,販售的憑證範圍不足,無法執行儲存空間寫入作業。選取「儲存」。 ` 目錄更新完成後,系統會開啟「目錄詳細資料」頁面。
在「驗證方式」下方,選取「設定 bucket 權限」。
- 在對話方塊中選取「確認」。
這會驗證目錄的服務帳戶是否具備儲存空間 bucket 的「Storage 物件使用者」角色 (roles/storage.objectUser)。
gcloud
使用 gcloud biglake iceberg catalogs create 指令。
gcloud biglake iceberg catalogs create \ CATALOG_NAME \ --project PROJECT_ID \ --catalog-type gcs-bucket \ --credential-mode vended-credentials \ [--primary-location LOCATION]
更改下列內容:
CATALOG_NAME:目錄名稱。這個名稱通常與 Lakehouse Iceberg REST 目錄使用的 Cloud Storage bucket ID 相符。舉例來說,如果 bucket 是gs://bucket-id,目錄名稱可能是bucket-id。從 BigQuery 查詢這些資料表時,這個名稱也會做為目錄 ID。PROJECT_ID:您的 Google Cloud專案 ID。LOCATION:(選用) 目錄的主要區域,確保與 BigQuery 互通。如果是美國地區 (例如US或us-central1) 或歐盟地區 (例如EU或europe-west4) 的 Cloud Storage bucket,請分別指定US或EU,確保目錄可供存取,並可從對應的 BigQuery 多區域查詢。詳情請參閱「值區和目錄區域」。建立目錄後,請明確將儲存空間 bucket 的 Storage 物件使用者角色 (
roles/storage.objectAdmin),授予目錄自動佈建的 Apache Iceberg REST 目錄服務帳戶。
REST
如要使用 REST API 啟用憑證販售模式,請對 UpdateIcebergCatalog 端點發出 PATCH 要求:
PATCH /iceberg/v1/restcatalog/extensions/projects/PROJECT_ID/catalogs/CATALOG_ID?updateMask=icebergCatalog.credentialMode
要求主體必須包含 IcebergCatalog JSON 酬載,且 credentialMode 設為 VENDED_CREDENTIALS。
更改下列內容:
PROJECT_ID:您的 Google Cloud 專案 ID。CATALOG_ID:Lakehouse 執行階段目錄的 ID。