IAM による Bigtable のアクセス制御

このページでは、Bigtable のアクセス制御オプションについて説明します。

概要

Bigtable は、Identity and Access Management(IAM)を使用してアクセス制御を行います。誰がどのリソースにどのようなアクセス権を持つかを制御するには、リソースに IAM ポリシーを設定します。

Bigtable リソースは階層で整理されています。Google Cloud プロジェクトは Bigtable インスタンスの親であり、Bigtable インスタンスはクラスタとテーブルの親です。テーブルはその承認済みビューの親であり、クラスタはそのバックアップの親です。アクセス制御は各レベルで構成できます。

あるレベルの権限を持っている場合は、そのレベルより下のレベルの権限も自動的に付与されます。たとえば、プロジェクト レベルでアクセス権を持っている場合、そのプロジェクト内のインスタンス、クラスタ、テーブル、承認済みビュー、継続的マテリアライズド ビューにアクセスできます。承認済みビューまたは継続的マテリアライズド ビューへのアクセス権が付与されても、テーブルやインスタンスなど、承認済みビューまたは継続的マテリアライズド ビューの親である上位レベルのリソースへのアクセス権が自動的に付与されることはありません。この動作をポリシー継承といいます。

IAM 階層の詳細については、IAM ポリシーの継承をご覧ください。

プロジェクト レベルでのアクセス制御の例を次に示します。

  • プロジェクト内の任意のテーブルに対する読み取り権限(ただし書き込みは不可)をユーザーに許可する。
  • プロジェクト内の任意のテーブルに対する読み取り / 書き込み権限(ただしインスタンスの管理は不可)をユーザーに許可する。
  • プロジェクト内の任意のテーブルに対する読み取り / 書き込み権限と、インスタンスを管理する権限をユーザーに許可する。

インスタンス レベルでのアクセス制御の例を次に示します。

  • プロジェクトに複数のインスタンスがある場合、1 つのインスタンスでのみテーブルからの読み取りを許可する。
  • プロジェクトに複数のインスタンスがある場合、1 つのインスタンスでのみ管理を許可する。

テーブルレベルでのアクセス制御の例を次に示します。

  • テーブルへの書き込みをユーザーに許可するが、テーブルからの読み取りは許可しない。
  • テーブルからの読み取りをユーザーに許可するが、テーブルへの書き込みは許可しない。

バックアップ レベルでのアクセス制御の例を次に示します。

  • ユーザーがバックアップを削除できないようにする。
  • ユーザーがバックアップから復元できないようにする。

承認済みビュー レベルでのアクセス制御の例を次に示します。

  • ユーザーに承認済みビューの読み取りを許可するが、変更は許可しない。
  • ユーザーがテーブルの複数の承認済みビューのいずれかからのみデータを表示できるようにします。

継続的マテリアライズド ビュー レベルでのアクセス制御の例を次に示します。

  • ユーザーに継続的マテリアライズド ビューからの読み取りを許可するが、基盤となるテーブルの変更は許可しない。

IAM とその機能の詳細については、IAM デベロッパー ガイドをご覧ください。特に、アクセス権の付与、変更、取り消しをご覧ください。

Bigtable では、次のプリンシパル タイプへのアクセス権は付与できません。

Bigtable がサポートする権限とロールのリストについては、次のセクションをご覧ください。

Bigtable API を有効にする

Bigtable IAM ロールを表示して割り当てるには、プロジェクトに対して Bigtable API を有効にする必要があります。API を有効にするまで、Bigtable ロールはGoogle Cloud コンソールに表示されません。

API を有効にするために必要なロール

API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。

API の有効化

権限

ここでは、Bigtable でサポートされる権限を簡単に説明します。

権限を使用することで、Bigtable リソースに対して特定の操作を行えるようになります。たとえば、bigtable.instances.list 権限を持つユーザーは、プロジェクト内のすべての Bigtable インスタンスを一覧表示できます。ユーザーには権限を直接付与するのではなく、事前定義ロールまたはカスタムロールを割り当てます。これにより、1 つ以上の権限が付与されます。

次の表は、Bigtable に関連付けられている IAM 権限を示しています。

アプリ プロファイルの権限名 説明
bigtable.appProfiles.create Bigtable アプリ プロファイルを作成します。
bigtable.appProfiles.delete Bigtable アプリ プロファイルを削除します。
bigtable.appProfiles.get Bigtable アプリ プロファイルに関する情報を取得します。
bigtable.appProfiles.list インスタンスの Bigtable アプリ プロファイルの一覧を表示します。
bigtable.appProfiles.update Bigtable アプリ プロファイルの設定を更新します。
バックアップの権限名 説明
bigtable.backups.create Bigtable バックアップを作成します。
bigtable.backups.delete Bigtable バックアップを削除します。
bigtable.backups.get Bigtable バックアップに関する情報を取得します。
bigtable.backups.getIamPolicy バックアップの IAM ポリシーを取得する。
bigtable.backups.list Bigtable バックアップを一覧表示します。
bigtable.backups.restore Bigtable バックアップから復元します。
bigtable.backups.testIamPermissions