Lakehouse for Apache Iceberg は、 Lakehouse ランタイム カタログを使用する Cloud Storage 内の Apache Iceberg テーブルに対して、テーブルレベルのアクセス制御をサポートしています。
Lakehouse ランタイム カタログはテーブル メタデータを管理し、Identity and Access Management(IAM)ポリシーは権限を定義します。gcloud CLI には、これらの IAM ポリシーを取得して設定するために必要なコマンドが用意されています。
始める前に
-
BigLake API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。 - Google Cloud SDK をインストールして初期化します。
- 既存の Apache Iceberg REST カタログのエンドポイントと名前空間があることを確認します。
- 指定したカタログと名前空間に既存の Lakehouse Iceberg テーブルがあることを確認します。
必要なロール
Iceberg テーブルのアクセス制御リスト(ACL)を管理するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
- すべて: プロジェクトに対する BigLake 管理者(roles/biglake.admin)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。
仕組み
IAM ポリシーは、リソースに対する特定のロールと権限を持つプリンシパルを定義します。これらのポリシーを取得して設定することで、リソースへのアクセスを管理できます。
関連する IAM ロール
次の一般的な IAM ロールを Lakehouse リソースに適用できます。
roles/biglake.admin: Lakehouse リソースに対する完全な制御を提供します。roles/biglake.user: プリンシパルがテーブルデータの読み取りと書き込みなど、Lakehouse リソースを使用できるようにします。roles/biglake.viewer: プリンシパルが Lakehouse リソースを表示し、テーブルデータを読み取れるようにします。
ベスト プラクティス
- 最小権限: ユーザーと サービス アカウントに必要な権限のみを付与します。
- Etag を使用する: 意図しない上書きを避けるため、
set-iam-policyを使用する場合は、最近のget-iam-policy呼び出しのetagを常にポリシー ファイルに含めます。 - 監査ロギング: IAM ポリシーの変更を追跡できるように、Cloud Audit Logs が有効になっていることを確認します。
- バージョン管理: ポリシー ファイルをバージョン管理システムに保存します。
テーブルに ACL ロールを適用する
次のセクションでは、テーブルに ACL を適用する方法について説明します。
IAM ポリシーを取得する
Lakehouse
Iceberg テーブルの現在の IAM ポリシーを表示するには、gcloud biglake iceberg tables
get-iam-policy
コマンドを使用します。
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。
このコマンドは、現在のロール バインディングとメンバーを示す YAML 形式で IAM ポリシーを出力します。
IAM ポリシーを設定する
Lakehouse Iceberg テーブルの IAM ポリシーを更新するには、gcloud biglake iceberg tables set-iam-policy コマンドを使用します。
このコマンドは、適用するポリシーを含むローカル JSON ファイルまたは YAML ファイルを使用します。
JSON または YAML 形式でローカル ポリシー ファイルを作成します。ポリシー ファイルには、バインディングと
etagが含まれている必要があります。etag値は、変更の上書きを防ぐためにオプティミスティック同時実行制御を提供します。現在のetagを取得するには、最初にget-iam-policyコマンドを実行します。次の例は、
policy.jsonという名前のポリシー ファイルを示しています。{ "bindings": [ { "role": "roles/biglake.viewer", "members": [ "user:test-user@example.com" ] }, { "role": "roles/biglake.user", "members": [ "user:someone@example.com" ] } ], "etag": "BwYXa9UuR8w=", "version": 3 }ポリシーを設定するには、次のコマンドを実行します。
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。
次のステップ
- IAM の詳細について学習する。
- Lakehouse IAM のロールと 権限の一覧を確認する。
- Lakehouse のコンセプトについて学習する。