既存の Apache Iceberg REST カタログで認証情報ベンディング モードを有効にすると、 Lakehouse for Apache Icebergは、承認されたクエリエンジンまたはワークロードに有効期間の短いスコープダウンされたストレージ トークンをベンディングするように構成されます。
Lakehouse ランタイム カタログ内では、この認証方法により、ユーザーまたはクエリ ランタイムが基盤となる Cloud Storage バケットに対する直接的な読み取り / 書き込み権限を保持する必要がなくなります。
始める前に
- Lakehouse ランタイム カタログについてを読んで、Lakehouse ランタイム カタログの仕組みとサービスの制限事項を理解してください。
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
Verify that billing is enabled for your Google Cloud project.
Enable the BigLake API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin), which
contains the serviceusage.services.enable permission. Learn how to grant
roles.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
Verify that billing is enabled for your Google Cloud project.
Enable the BigLake API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin), which
contains the serviceusage.services.enable permission. Learn how to grant
roles.
必要なロール
認証情報ベンディングを有効にするために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
すべて:
- プロジェクトに対する BigLake 管理者 (
roles/biglake.admin) - ストレージ管理者 (
roles/storage.admin) プロジェクトに対する
- プロジェクトに対する BigLake 管理者 (
-
自動プロビジョニングされた Apache Iceberg REST カタログ サービス アカウント:
Storage オブジェクト ユーザー (
roles/storage.objectUser) 関連するすべての Cloud Storage バケットに対する。認証情報ベンディングを有効にしたら、関連するすべてのストレージ バケットに対する Storage オブジェクト ユーザー ロール(roles/storage.objectUser)を、カタログの自動プロビジョニングされた Apache Iceberg REST カタログ サービス アカウントに明示的に付与します。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。
認証情報ベンディングを有効にする
Apache Iceberg REST カタログの認証方法が エンドユーザー認証情報に設定されている場合は、認証情報ベンディング モードに切り替えることができます。
コンソール
- コンソールで、[Lakehouse] ページを開きます。 Google Cloud
更新するカタログの行で、 [その他のカタログ アクション > 認証情報を編集] を選択します。
認証ダイアログで [認証情報ベンディング モード] を選択します。 自動プロビジョニングされた Apache Iceberg REST カタログ サービス アカウントには、関連するすべての Cloud Storage バケットに対する明示的なストレージ オブジェクト ユーザー ロール(
roles/storage.objectUser)が必要です。デフォルトでは、アクセス権はありません。このロールがないと、ベンディングされた認証情報のスコープが不足し、ストレージの書き込みを実行できません。[保存] を選択します。
Your catalog is updated and the **Catalog details** page opens.[認証方法] で [バケットの権限を設定] を選択します。
ダイアログで [確認] を選択します。
これにより、カタログのサービス アカウントに、関連するすべてのストレージ バケットに対する Storage オブジェクト ユーザー ロール(roles/storage.objectUser)が付与されていることが確認されます。
gcloud
gcloud biglake iceberg catalogs update コマンドを使用します。
gcloud biglake iceberg catalogs update \ CATALOG_NAME \ --project PROJECT_ID \ --credential-mode vended-credentials
次のように置き換えます。
CATALOG_NAME: カタログの名前。Lakehouse カタログの場合、これはカスタム カタログ名です。Cloud Storage バケット カタログの場合、これは REST カタログで使用される Cloud Storage バケット ID と一致します。 この名前は、BigQuery からこれらのテーブルをクエリするときにカタログ識別子としても使用されます。PROJECT_ID: 実際の Google Cloud プロジェクト ID。認証情報ベンディングを有効にしたら、関連するすべてのストレージ バケットに対するストレージ オブジェクト ユーザー ロール(
roles/storage.objectUser)を、カタログの自動プロビジョニングされた Apache Iceberg REST カタログ サービス アカウントに明示的に付与します。
REST
REST API を使用して認証情報ベンディング モードを有効にするには、PATCH リクエスト
を UpdateIcebergCatalog エンドポイントに行います。
PATCH /iceberg/v1/restcatalog/extensions/projects/PROJECT_ID/catalogs/CATALOG_ID?updateMask=icebergCatalog.credential_mode
リクエストの本文には、credential_mode が VENDED_CREDENTIALS に設定された IcebergCatalog JSON ペイロードを含める必要があります。
次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。CATALOG_ID: Lakehouse ランタイム カタログの ID。