Lakehouse ランタイム カタログの認証情報ベンダーを使用すると、ストレージ アクセスを委任し、データファイルにきめ細かい権限を適用できます。ボーダレス Lakehouse の一部として、この機能を使用すると、Cloud Storage に保存されているテーブルの Identity and Access Management(IAM)ポリシーをテーブルレベルで管理できます。
gcloud CLI を使用して、これらのポリシーを取得して設定し、リソースへのアクセスを制御できます。
認証情報ベンディングの仕組み
認証情報のベンディングを使用すると、ストレージにアクセスする前にポリシーを適用するようにオペレーションの順序が若干変更されます。次の図は、クエリエンジンがカタログからダウン スコープされたストレージ トークンを取得して、Cloud Storage でデータを直接安全に読み書きする方法を示しています。
上の図に示されているオペレーションのシーケンスは次のとおりです。
- リクエスト: ユーザーが、クエリ、DML、DDL オペレーションなどの SQL ステートメントをサポートされているエンジンに送信します。たとえば、Apache Spark や BigQuery などです。
- メタデータのルックアップ: エンジンは、テーブルを解決するために Lakehouse ランタイム カタログにリクエストを送信します。
- 認証とポリシー: カタログはユーザーを認証し、Google Cloud の Lakehouse リソースに対する IAM 権限を確認します。
- レスポンス: 認証情報のベンディングが有効になっているため、カタログはメタデータと有効期間の短いストレージ トークン(スコープダウンされたストレージ認証情報)をエンジンに返します。トークンは、テーブルに関連付けられたパスにスコープ設定され、必要な最小限の権限(ファイルを書き込む必要のないクエリの読み取り専用アクセスなど)にスコープダウンされます。
- アクセス: エンジンはこのトークンを使用して、特定の承認済みファイルを Cloud Storage から直接読み書きします。
- Compute: エンジンがデータを処理するか、オペレーションを実行して、結果を返します。
サポートされているエンジン
クエリエンジンで認証情報ベンディングを使用するには、認証情報ベンディングをサポートするように Lakehouse Iceberg REST カタログを構成する必要があります。
- オープンソース エンジン: Apache Spark や Trino などのサポートされているエンジンは、カタログによって提供される有効期間の短いストレージ トークンを使用します。クライアント アプリケーションは、
X-Iceberg-Access-Delegationヘッダーで認証情報ベンディングのサポートを指定する必要があります。 - BigQuery: BigQuery は、エンドユーザーの認証情報ではなく、Cloud Storage アクセス用のベンダー認証情報を使用します。
サービス アカウントに必要な権限
認証情報ベンダーが有効になっている場合は、次のサービス アカウントに必要なロールがあることを確認します。
- 自動プロビジョニングされた Lakehouse ランタイム カタログ サービス アカウント: 関連付けられているすべての Cloud Storage バケットで、このアカウントに Storage オブジェクト ユーザーロール(
roles/storage.objectUser)を付与する必要があります。このアクセス権がないと、ベンダー認証情報はストレージの読み取りや書き込みを行うことができません。Google Cloud コンソールを使用している場合は、[バケット権限を設定] をクリックすると、このロールが検証されます。gcloud CLI、Terraform、API の場合は、このロールを手動で付与する必要があります。 - クエリ エンジン サービス アカウント: クエリ エンジン ジョブ(Managed Service for Apache Spark、Managed Service for Apache Spark、Dataflow など)を実行するサービス アカウントには、書き込みスコープでベンダー認証情報を取得するために BigLake 編集者ロール(
roles/biglake.editor)が必要です。
次のステップ
- 認証情報ベンディング モードでカタログを作成する方法を学習する。
- Google Cloud コンソールを使用して既存のカタログで認証情報ベンダーを有効にする方法を確認する。
- 認証情報ベンディング用にクライアント アプリケーションを構成する方法を学習する。