Lakehouse for Apache Iceberg は、 Lakehouse ランタイム カタログを使用する Cloud Storage 内の Apache Iceberg テーブルに対して、カタログレベル、Namespace レベル、テーブルレベルのアクセス制御をサポートしています。
メタデータは Lakehouse ランタイム カタログで管理され、権限は Identity and Access Management(IAM)ポリシーで定義されます。これらの IAM
ポリシーを取得して設定するには、
Google Cloud コンソールまたは gcloud CLI を使用します。
始める前に
-
BigLake API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)によってこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)によってこの権限を取得できます。ロールを付与する方法をご覧ください。 - Google Cloud SDK をインストールして初期化します。
- 既存の Apache Iceberg REST カタログのエンドポイントと Namespace があることを確認します。
- 指定したカタログと Namespace 内に既存の Lakehouse Iceberg テーブルがあることを確認します。
必要なロール
Iceberg カタログ、Namespace、テーブルのアクセス制御リスト(ACL)を管理するために必要な権限を取得するには、次の IAM ロールを付与するように管理者に依頼してください。
-
すべて:
BigLake 管理者 (
roles/biglake.admin) プロジェクトに対する
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。
仕組み
IAM ポリシーは、リソースに対する特定のロールと権限を持つプリンシパルを定義します。これらのポリシーを取得して設定することで、リソースへのアクセスを管理できます。
IAM ロールのスコープ
IAM ロールは、リソース階層のさまざまなレベルで付与できます。
- プロジェクト レベル: プロジェクト内のすべての Lakehouse リソースへのアクセス権を付与します。
- カタログレベル: 指定したカタログに属するリソースへのアクセス権を付与します。
- Namespace レベル: 指定した Namespace に属するリソースへのアクセス権を付与します。
- テーブルレベル: 指定したテーブルのみへのアクセス権を付与します。
関連する IAM ロール
次のリストは、Lakehouse リソースに適用できる一般的な IAM ロールの一部を示しています。使用可能なロールとその関連権限の完全なリストについては、Lakehouse IAM ロールをご覧ください。
roles/biglake.admin: すべての Lakehouse リソースに対する完全アクセス権を付与します。roles/biglake.editor: すべての Lakehouse リソースに対する読み取り / 書き込みアクセス権を付与します。roles/biglake.viewer: すべての Lakehouse リソースに対する読み取り専用アクセス権を付与します。roles/biglake.metadataViewer: すべての Lakehouse リソースに対する読み取り専用メタデータ アクセス権を付与します。
ベスト プラクティス
- 最小権限: ユーザーと サービス アカウントに必要な権限のみを付与します。
- Etag を使用する: 意図しない上書きを避けるため、
set-iam-policyを使用する場合は、最近のget-iam-policy呼び出しのetagをポリシー ファイルに必ず含めます。 - 監査ロギング: IAM ポリシーの変更を追跡できるように、Cloud Audit Logs が有効になっていることを確認します。
- バージョン管理: ポリシー ファイルをバージョン管理システムに保存します。
ACL ロールをカタログに適用する
次のセクションでは、ACL をカタログに適用する方法について説明します。
gcloud
IAM ポリシーを取得する
Lakehouse
Iceberg カタログの現在の IAM ポリシーを表示するには、gcloud alpha biglake iceberg catalogs
get-iam-policy
コマンドを使用します。
IAM ポリシーを取得するには、次のコマンドを実行します。
gcloud alpha biglake iceberg catalogs get-iam-policy CATALOG_NAME \ --project=PROJECT_ID次のように置き換えます。
CATALOG_NAME: Apache Iceberg REST カタログ エンドポイントの名前。PROJECT_ID: 実際の Google Cloud プロジェクト ID。
このコマンドは、現在のロール バインディングとメンバーを示す YAML 形式で IAM ポリシーを出力します。
IAM ポリシーを設定する
Lakehouse Iceberg
カタログの IAM ポリシーを更新するには、gcloud alpha biglake iceberg catalogs 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.editor", "members": [ "user:someone@example.com" ] } ], "etag": "BwYXa9UuR8w=", "version": 3 }ポリシーを設定するには、次のコマンドを実行します。
gcloud alpha biglake iceberg catalogs set-iam-policy CATALOG_NAME POLICY_FILE \ --project=PROJECT_ID次のように置き換えます。
CATALOG_NAME: Apache Iceberg REST カタログ エンドポイントの名前。POLICY_FILE: ローカル ポリシー ファイルのパス。PROJECT_ID: 実際の Google Cloud プロジェクト ID。
ACL ロールを Namespace に適用する
次のセクションでは、ACL を Namespace に適用する方法について説明します。
コンソールでは、継承された IAM ポリシーは表示または管理されません。 Google Cloud
コンソール
コンソールで、[Lakehouse] ページを開きます。 Google Cloud
既存のカタログを選択するか、ない場合は作成します。
[**Namespace の詳細**] テーブルで Namespace を選択し、メニュー オプション ()を開きます。
[権限を管理] をクリックします。
[権限を共有] ダイアログが表示されます。
[プリンシパルを追加] をクリックします。
[新しいプリンシパル] フィールドに、ロールを割り当てるプリンシパル アカウントを入力します。
[**ロールを選択**] で、プリンシパル アカウントに割り当てるロールを選択します。
[保存] をクリックします。
[閉じる] をクリックします。
gcloud
IAM ポリシーを取得する
Lakehouse
Iceberg Namespace の現在の IAM ポリシーを表示するには、gcloud alpha biglake iceberg namespaces
get-iam-policy
コマンドを使用します。
IAM ポリシーを取得するには、次のコマンドを実行します。
gcloud alpha biglake iceberg namespaces get-iam-policy NAMESPACE_NAME \ --catalog=CATALOG_NAME \ --project=PROJECT_ID次のように置き換えます。
NAMESPACE_NAME: カタログ内のターゲット Namespace の名前。CATALOG_NAME: Apache Iceberg REST カタログ エンドポイントの名前。PROJECT_ID: 実際の Google Cloud プロジェクト ID。
このコマンドは、現在のロール バインディングとメンバーを示す YAML 形式で IAM ポリシーを出力します。
IAM ポリシーを設定する
Lakehouse Iceberg Namespace の IAM ポリシーを更新するには、gcloud alpha biglake iceberg namespaces 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.editor", "members": [ "user:someone@example.com" ] } ], "etag": "BwYXa9UuR8w=", "version": 3 }ポリシーを設定するには、次のコマンドを実行します。
gcloud alpha biglake iceberg namespaces set-iam-policy NAMESPACE_NAME POLICY_FILE \ --catalog=CATALOG_NAME \ --project=PROJECT_ID次のように置き換えます。
NAMESPACE_NAME: カタログ内のターゲット Namespace の名前。POLICY_FILE: ローカル ポリシー ファイルのパス。CATALOG_NAME: Apache Iceberg REST カタログ エンドポイントの名前。PROJECT_ID: 実際の Google Cloud プロジェクト ID。
ACL ロールをテーブルに適用する
次のセクションでは、ACL をテーブルに適用する方法について説明します。
コンソールでは、継承された IAM ポリシーは表示または管理されません。 Google Cloud
コンソール
コンソールで、[Lakehouse] ページを開きます。 Google Cloud
既存のカタログを選択するか、ない場合は作成します。
[Namespace の詳細] テーブルで、テーブルを含む Namespace の名前をクリックします。
[**テーブルの詳細**] ページでテーブルを選択し、メニュー オプション ()を開きます。
[権限を管理] をクリックします。
[権限を共有] ダイアログが表示されます。
[プリンシパルを追加] をクリックします。
[新しいプリンシパル] フィールドに、ロールを割り当てるプリンシパル アカウントを入力します。
[**ロールを選択**] で、プリンシパル アカウントに割り当てるロールを選択します。
[保存] をクリックします。
[閉じる] をクリックします。
gcloud
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: カタログ内の Namespace の名前。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.editor", "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: カタログ内の Namespace の名前。PROJECT_ID: 実際の Google Cloud プロジェクト ID。
次のステップ
- IAM の詳細について学習する。
- Lakehouse IAM ロールと 権限の完全なリストを確認する。
- Lakehouse のコンセプトについて学習する。