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)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。
権限
ここでは、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 |