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