既存の Apache Iceberg REST カタログで認証情報ベンディング モードを有効にすると、Lakehouse for Apache Iceberg が、承認されたクエリエンジンまたはワークロードに有効期間の短いスコープダウンされたストレージ トークンをベンディングするように構成されます。
Lakehouse ランタイム カタログ内でこの認証方法を使用すると、基盤となる Cloud Storage バケットに対する直接の読み取り / 書き込み権限をユーザーまたはクエリ ランタイムが保持する必要がなくなります。
始める前に
-
BigLake API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。
必要なロール
認証情報ベンダーを有効にするために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
すべて:
- プロジェクトに対する BigLake 管理者 (
roles/biglake.admin) - プロジェクトに対するストレージ管理者 (
roles/storage.admin)
- プロジェクトに対する BigLake 管理者 (
-
自動プロビジョニングされた Apache Iceberg REST カタログ サービス アカウント: ターゲット Cloud Storage バケットに対する Storage オブジェクト ユーザー (
roles/storage.objectUser)。認証情報ベンディングを有効にしたら、ストレージ バケットに対するストレージ オブジェクト ユーザーロール(roles/storage.objectUser)を、カタログの自動プロビジョニングされた Apache Iceberg REST カタログ サービス アカウントに明示的に付与します。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
認証情報のベンディングを有効にする
Apache Iceberg REST カタログの認証方法がエンドユーザー認証情報に設定されている場合は、認証情報ベンディング モードに切り替えることができます。
コンソール
- Google Cloud コンソールで、[Lakehouse] ページを開きます。
更新するカタログの行で、 [カタログのその他の操作] > [認証を編集] を選択します。
認証ダイアログで、[認証情報ベンディング モード] を選択します。自動プロビジョニングされた Apache Iceberg REST カタログ サービス アカウントには、ターゲットの Cloud Storage バケットに対する明示的な Storage オブジェクト ユーザー ロール(
roles/storage.objectUser)が必要です。デフォルトでは、閲覧者専用のアクセス権で作成されます。このロールがないと、ベンダー認証情報にはストレージ書き込みを実行するのに十分なスコープがありません。[保存] を選択します。 カタログが更新され、[カタログの詳細] ページが開きます。
[認証方法] で、[バケット権限を設定] を選択します。
- ダイアログで [確認] を選択します。
これにより、カタログのサービス アカウントにストレージ バケットに対する 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 バケット ID と一致することがよくあります。たとえば、バケットがgs://bucket-idの場合、カタログ名はbucket-idになることがあります。この名前は、BigQuery からこれらのテーブルをクエリする際のカタログ識別子としても使用されます。PROJECT_ID: 実際の Google Cloudプロジェクト ID。LOCATION: (省略可)BigQuery との相互運用性を確保するためのカタログのプライマリ リージョン。米国リージョン(USやus-central1など)または EU リージョン(EUやeurope-west4など)の Cloud Storage バケットの場合は、それぞれUSまたはEUを指定して、対応する BigQuery マルチリージョンからカタログにアクセスしてクエリを実行できるようにします。詳細については、バケットとカタログのリージョンをご覧ください。カタログを作成したら、ストレージ バケットに対する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
リクエストの本文には、credentialMode が VENDED_CREDENTIALS に設定された IcebergCatalog JSON ペイロードを含める必要があります。
次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。CATALOG_ID: Lakehouse ランタイム カタログの ID。