アクセス制御

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

概要

Cloud Bigtable は、Identity and Access Management(IAM)を使用してアクセス制御を行います。

Cloud Bigtable では、プロジェクト、インスタンス、テーブルの各レベルでアクセス制御を構成できます。プロジェクト レベルでのアクセス制御の例を次に示します。

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

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

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

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

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

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

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

Cloud Bigtable API を有効にする

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

API を有効にする

権限

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

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

次の表は、Cloud Bigtable に関係する IAM の権限の一覧を示します。

ロケーションの権限名 説明
bigtable.locations.list Cloud Bigtable のロケーションを一覧表示します。
インスタンスの権限名 説明
bigtable.instances.create Cloud Bigtable インスタンスを作成します。
bigtable.instances.delete Cloud Bigtable インスタンスを削除します。
bigtable.instances.get Cloud Bigtable インスタンスに関する情報を取得します。
bigtable.instances.getIamPolicy インスタンスのアクセス制御リスト(ACL)を読み取り、IAM ポリシーとして返します。
bigtable.instances.list プロジェクトの Cloud Bigtable インスタンスを一覧表示します。
bigtable.instances.setIamPolicy ACL を更新します。
bigtable.instances.update Cloud Bigtable インスタンスの設定を更新します。
アプリ プロファイルの権限名 説明
bigtable.appProfiles.create Cloud Bigtable アプリ プロファイルを作成します。
bigtable.appProfiles.delete Cloud Bigtable アプリ プロファイルを削除します。
bigtable.appProfiles.get Cloud Bigtable アプリ プロファイルに関する情報を取得します。
bigtable.appProfiles.list インスタンスの Cloud Bigtable アプリ プロファイルの一覧を表示します。
bigtable.appProfiles.update Cloud Bigtable アプリ プロファイルの設定を更新します。
バックアップの権限名 説明
bigtable.backups.create Cloud Bigtable バックアップを作成します。
bigtable.backups.get Cloud Bigtable のバックアップを取得します。
bigtable.backups.list Cloud Bigtable バックアップを一覧表示します。
bigtable.backups.delete Cloud Bigtable バックアップを削除します。
bigtable.backups.update Cloud Bigtable バックアップの有効期限を変更します。
bigtable.backups.restore Cloud Bigtable バックアップを復元します。
クラスタの権限名 説明
bigtable.clusters.create Cloud Bigtable クラスタを作成します。
bigtable.clusters.delete Cloud Bigtable クラスタを削除します。
bigtable.clusters.get Cloud Bigtable クラスタに関する情報を取得します。
bigtable.clusters.list インスタンスの Cloud Bigtable クラスタを一覧表示します。
bigtable.clusters.update Cloud Bigtable クラスタの設定を更新します。
テーブルの権限名 説明
bigtable.tables.checkConsistency 複製されたテーブルが最新かどうか確認します。
bigtable.tables.create テーブルを作成します。
bigtable.tables.delete テーブルを削除します。
bigtable.tables.generateConsistencyToken 複製されたテーブルが最新かどうか確認するため、トークンを生成します。
bigtable.tables.get テーブルに関する情報を取得します。これには、列ファミリーや、各列ファミリーの個別の設定などが含まれます。
bigtable.tables.getIamPolicy テーブルの ACL を読み取り、IAM ポリシーとして返します。
bigtable.tables.list インスタンス内のテーブルを一覧表示します。
bigtable.tables.mutateRows テーブル内の行を修正するか、テーブルを切り捨てます。
bigtable.tables.readRows テーブルから行を読み取ります。
bigtable.tables.sampleRowKeys テーブルで使用される行キーのサンプルを取得します。
bigtable.tables.setIamPolicy テーブルの ACL を更新します。
bigtable.tables.update テーブルの設定を更新します。これには、列ファミリーや、各列ファミリーの個別の設定などが含まれます。

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

Key Visualizer の権限名 説明
bigtable.keyvisualizer.get テーブルに関する Key Visualizer 情報(アクセス パターンや行キーの分布に関するメタデータなど)を取得します。
bigtable.keyvisualizer.list テーブルで使用可能な Key Visualizer 情報の一覧を表示します。

事前定義ロール

各事前定義ロールには、権限が付与されます。たとえば、roles/bigtable.reader は、Cloud Bigtable インスタンス、クラスタ、テーブル、列ファミリーに加え、テーブル内のデータに関する情報への読み取り専用アクセス権を提供します。ロールを割り当てられたユーザーまたはグループは、プロジェクト内のリソースに対する操作を行えるようになります。

次の表には、Cloud Bigtable の事前定義ロールと、各ロールに関連付けられている権限の一覧を示します。

ロール 権限 説明
roles/bigtable.admin

すべての Cloud Bigtable 機能に対するアクセス権:

bigtable.*.*

Cloud Console でのモニタリング グラフに対する表示アクセス権:

  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.timeSeries.list

プロジェクト レベルのメタデータへのアクセス権:

resourcemanager.projects.get

テーブル内に保存されているデータなど、プロジェクト内のすべてのインスタンスを管理します。新しいインスタンスを作成できます。プロジェクト管理者向け。これには Key Visualizer に対するアクセス権も含まれます。
roles/bigtable.user

インスタンス、クラスタ、テーブル、列ファミリーのメタデータに対する読み取りアクセス権。

  • bigtable.*.get
  • bigtable.*.list
  • bigtable.tables.checkConsistency
  • bigtable.tables.generateConsistencyToken

テーブルに対する読み取り / 書き込みアクセス権:

  • bigtable.tables.mutateRows
  • bigtable.tables.readRows
  • bigtable.tables.sampleRowKeys

Cloud Console でのモニタリング グラフに対する表示アクセス権:

  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.timeSeries.list

プロジェクト レベルのメタデータへのアクセス権:

resourcemanager.projects.get

テーブル内に保存されたデータへの読み取り / 書き込みアクセス権を提供します。アプリケーション デベロッパーやサービス アカウント向け。これには Key Visualizer に対するアクセス権も含まれます。
roles/bigtable.reader

インスタンス、クラスタ、テーブル、列ファミリーのメタデータに対する読み取りアクセス権。

  • bigtable.*.get
  • bigtable.*.list
  • bigtable.tables.checkConsistency
  • bigtable.tables.generateConsistencyToken

テーブルに対する読み取り専用アクセス権:

  • bigtable.tables.readRows
  • bigtable.tables.sampleRowKeys

Cloud Console でのモニタリング グラフに対する表示アクセス権:

  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.timeSeries.list

プロジェクト レベルのメタデータへのアクセス権:

resourcemanager.projects.get

テーブル内に保存されたデータへの読み取りアクセス権を提供します。データ科学者、ダッシュボード生成ツール、その他のデータ分析シナリオ向け。これには Key Visualizer に対するアクセス権も含まれます。
roles/bigtable.viewer

インスタンス、クラスタ、テーブル、列ファミリーのメタデータに対する読み取りアクセス権。

  • bigtable.appProfiles.get
  • bigtable.appProfiles.list
  • bigtable.clusters.get
  • bigtable.clusters.list
  • bigtable.instances.get
  • bigtable.instances.list
  • bigtable.locations.list
  • bigtable.tables.checkConsistency
  • bigtable.tables.generateConsistencyToken
  • bigtable.tables.get
  • bigtable.tables.list

Cloud Console でのモニタリング グラフに対する表示アクセス権:

  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.timeSeries.list

プロジェクト レベルのメタデータへのアクセス権:

resourcemanager.projects.get

データにはアクセスできません。Cloud Bigtable の Cloud Console にアクセスするための最小権限セットとして使用されます。これには Key Visualizer に対するアクセス権は含まれません。

カスタムロール

Cloud Bigtable の事前定義ロールがビジネス要件に合っていない場合は、指定した権限を含むカスタムロールを独自に定義できます。

カスタムロールで Cloud Console へのアクセス権をサポートする必要がある場合は、次の表に示すように、ユーザーが実行するタスクを指定し、タスクごとに必要な権限がカスタムロールに付与されていることを確認する必要があります。タスクに必要なすべての権限がカスタムロールに付与されていないときに、ユーザーがそのタスクを実行しようとした場合、Cloud Console は正しく機能しません。

Cloud Console タスク 必要な権限
Cloud Console への基本的なアクセス
  • bigtable.appProfiles.get
  • bigtable.appProfiles.list
  • bigtable.clusters.get
  • bigtable.clusters.list
  • bigtable.instances.get
  • bigtable.instances.list
  • bigtable.locations.list
  • resourcemanager.projects.get
インスタンスまたはクラスタの作成

基本的なアクセス権に加えて、次の権限が必要です。

  • bigtable.clusters.create
  • bigtable.instances.create
インスタンスまたはクラスタの変更

基本的なアクセス権に加えて、次の権限が必要です。

  • bigtable.clusters.update
  • bigtable.instances.update
レプリケーション構成の管理

基本的なアクセス権に加えて、次の権限が必要です。

  • bigtable.appProfiles.create
  • bigtable.appProfiles.delete
  • bigtable.appProfiles.update
インスタンスまたはクラスタの削除

基本的なアクセス権に加えて、次の権限が必要です。

  • bigtable.clusters.delete
  • bigtable.instances.delete
グラフを表示したインスタンスの監視

基本的なアクセス権に加えて、次の権限が必要です。

  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.timeSeries.list

プロジェクト レベルの IAM の管理

プロジェクト レベルでは、Google Cloud Console、IAM API、gcloud コマンドライン ツールを使用して IAM ロールを付与、変更、取り消すことができます。詳細については、プロジェクト メンバーに対するアクセス権の付与、変更、取り消しをご覧ください。

インスタンス レベルの IAM の管理

このセクションでは、インスタンス レベルで Cloud Bigtable の IAM ロールを管理する方法を説明します。

始める前に

ユーザーのインスタンス レベルの IAM ロールを設定する前に、そのユーザーに次のプロジェクト レベルの IAM ロールのうち、少なくとも 1 つが割り当てられていることを確認してください。

  • Bigtable 閲覧者(推奨)
  • Bigtable Reader
  • Bigtable ユーザー
  • Bigtable 管理者

プロジェクト内のすべてのインスタンスで、ユーザーが実際に必要とする権限しか持たないプロジェクト レベルのロールを選択します。このため、ほとんどの場合は Bigtable 閲覧者のロールを付与することになります。

ユーザーにこれらのプロジェクト レベルのロールが 1 つもない場合、ユーザーは Cloud Console から Cloud Bigtable にアクセスできません。Cloud Console には、ユーザーの代わりにインスタンスとクラスタに関する情報を取得できるように、これらのプロジェクト レベルのロールのいずれかが必要です。

インスタンス レベルの IAM ロールの付与

インスタンス レベルでは、Cloud Bigtable の事前定義ロールのうち任意のロールをユーザーまたはサービス アカウントに付与できます。また、定義した任意のカスタムロールも付与できます。

事前定義ロールやカスタムロールをインスタンス レベルでユーザーまたはサービス アカウントに割り当てるには:

Console

  1. Cloud Console で、Cloud Bigtable の [インスタンス] ページに移動します。

    [インスタンス] ページに移動

  2. ロールを管理するインスタンスのチェックボックスをオンにします。情報パネルが表示されます。

  3. 情報パネルで [権限] をクリックします。

  4. [メンバーを追加] で、追加するユーザーまたはサービス アカウントのメールアドレスの最初の数文字を入力し、目的のユーザーまたはサービス アカウントのメールアドレスをクリックします。

  5. [ロールを選択] プルダウン リストをクリックしてから、[Cloud Bigtable] をクリックして事前定義ロールを選択するか、[カスタム] をクリックしてカスタムロールを選択します。

  6. 割り当てる各ロールの名前をクリックします。

  7. [追加] をクリックします。ユーザーまたはサービス アカウントに対して、指定したロールがインスタンス レベルで付与されます。

gcloud

  1. インスタンス ID がわからない場合は、bigtable instances list コマンドを使用して、プロジェクトのインスタンスのリストを表示します。

    gcloud bigtable instances list
    
  2. bigtable instances set-iam-policy コマンドを使用します。

    gcloud bigtable instances set-iam-policy INSTANCE_ID POLICY_FILE
    

    次の値を指定します。

    • INSTANCE_ID: インスタンスの永続的な識別子。
    • POLICY_FILE: 有効な IAM ポリシーを含むローカル JSON または YAML ファイルへのパス。

テーブルレベルの IAM の管理

このセクションでは、テーブルレベルで Cloud Bigtable の IAM ロールを管理する方法を説明します。

始める前に

ユーザーのテーブルレベルの IAM ロールを設定する前に、そのユーザーに次のプロジェクト レベルの IAM ロールのうち、少なくとも 1 つが割り当てられていることを確認してください。

  • Bigtable 閲覧者(推奨)
  • Bigtable Reader
  • Bigtable ユーザー
  • Bigtable 管理者

ユーザーが実際に必要とする権限しか持たないプロジェクト レベルのロールを選択します。このため、ほとんどの場合は Bigtable 閲覧者のロールを付与することになります。

ユーザーにこれらのプロジェクト レベルのロールが 1 つもない場合、ユーザーは Cloud Console から Cloud Bigtable にアクセスできません。Cloud Console には、インスタンス、クラスタ、テーブルに関する情報を取得できるように、これらのプロジェクト レベルのロールのいずれかが必要です。

テーブルレベルの IAM ロールの付与

テーブルレベルでは、Cloud Bigtable の事前定義ロールのうち任意のロールをユーザーまたはサービス アカウントに付与できます。また、定義した任意のカスタムロールも付与できます。

事前定義ロールやカスタムロールをテーブルレベルでユーザーまたはサービス アカウントに割り当てるには:

Console

  1. Cloud Console で、Cloud Bigtable の [インスタンス] ページに移動します。

    [インスタンス] ページに移動

  2. IAM を設定するテーブルを含むインスタンスの名前をクリックします。

  3. 左側のナビゲーション ペインで [テーブル] を選択します。

  4. ロールを管理するテーブルのチェックボックスをオンにします。情報パネルが表示されます。

  5. 情報パネルで [権限] をクリックします。

  6. [メンバーを追加] で、追加するユーザーまたはサービス アカウントのメールアドレスの最初の数文字を入力し、目的のユーザーまたはサービス アカウントのメールアドレスをクリックします。

  7. [ロールを選択] プルダウン リストをクリックしてから、[Cloud Bigtable] をクリックして事前定義ロールを選択するか、[カスタム] をクリックしてカスタムロールを選択します。

  8. 割り当てる各ロールの名前をクリックします。

  9. [追加] をクリックします。ユーザーまたはサービス アカウントに対して、指定したロールがテーブルレベルで付与されます。

gcloud

  1. インスタンス ID がわからない場合は、bigtable instances list コマンドを使用して、プロジェクトのインスタンスのリストを表示します。

    gcloud bigtable instances list
    
  2. インスタンスのクラスタ ID がわからない場合は、bigtable clusters list コマンドを使用して、インスタンスのクラスタのリストを表示します。

    gcloud bigtable clusters list --instances=INSTANCE_ID
    
  3. bigtable instances tables set-iam-policy コマンドを使用します。

    gcloud beta bigtable instances tables set-iam-policy TABLE_ID \
        --instance=INSTANCE_ID POLICY_FILE
    

    次の値を指定します。

    • INSTANCE_ID: インスタンスの永続的な識別子。
    • POLICY_FILE: 有効な IAM ポリシーを含むローカル JSON または YAML ファイルへのパス。

次のステップ

IAM の詳細について学習する。