アクセス制御

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

概要

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

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

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

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

  • 開発インスタンス内の任意のテーブルに対する読み取り権限をユーザーに許可するが、本番環境インスタンス内のテーブルへのアクセスは許可しない。
  • 開発インスタンス内の任意のテーブルに対する読み取り / 書き込み権限と、本番環境インスタンスの任意のテーブルに対する読み取り権限をユーザーに許可する。
  • 開発インスタンスの管理をユーザーに許可するが、本番環境インスタンスの管理は許可しない。

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

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

Cloud Bigtable API を有効にする

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

{% dynamic if "no_credentials" in setvar.task_params %}{% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %}{% dynamic if not setvar.redirect_url %}{% dynamic setvar redirect_url %}https://console.cloud.google.com{% dynamic endsetvar %}{% dynamic endif %}{% dynamic endif %}{% dynamic if setvar.in_henhouse_no_auth_whitelist %}{% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %}{% dynamic endif %}{% dynamic elif setvar.in_henhouse_service_account_whitelist %}{% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}SERVICE_ACCOUNT{% dynamic endsetvar %}{% dynamic endif %}{% dynamic endif %}{% dynamic if not setvar.service_account_roles and setvar.credential_type == "SERVICE_ACCOUNT" %}{% dynamic setvar service_account_roles %}{% dynamic endsetvar %}{% dynamic endif %}{% dynamic setvar console %}{% dynamic if "no_steps" not in setvar.task_params %}
  • {% dynamic endif %}{% dynamic if setvar.api_list %}{% dynamic if setvar.in_henhouse_no_auth_whitelist or setvar.in_henhouse_service_account_whitelist %}GCP Console プロジェクトをセットアップします。

    プロジェクトをセットアップする

    クリックして、以下を行います。

    • プロジェクトを作成または選択します。
    • プロジェクトに{% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}必要な{% dynamic endif %}{% dynamic if "," in setvar.api_list %} API{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} API{% dynamic endif %} を有効にします。
    • {% dynamic if setvar.credential_type == 'SERVICE_ACCOUNT' %}
    • サービス アカウントを作成します。
    • JSON として秘密鍵をダウンロードします。
    • {% dynamic endif %}

    これらのリソースは、GCP Console でいつでも表示および管理できます。

    {% dynamic else %}{% dynamic if "no_text" not in setvar.task_params %}{% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}必要な{% dynamic endif %}{% dynamic if "," in setvar.api_list %} API{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} API{% dynamic endif %} を有効にします。 {% dynamic endif %}

    {% dynamic if "," in setvar.api_list %}API{% dynamic else %}API{% dynamic endif %}を有効にする

    {% dynamic endif %}{% dynamic endif %}{% dynamic if "no_steps" not in setvar.task_params %}
  • {% dynamic endif %}{% dynamic endsetvar %}{% dynamic print setvar.console %}

    権限

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

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

    次の表は、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.list プロジェクトの Cloud Bigtable インスタンスを一覧表示します。
    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.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.list インスタンス内のテーブルを一覧表示します。
    bigtable.tables.mutateRows テーブル内の行を修正するか、テーブルを切り捨てます。
    bigtable.tables.readRows テーブルから行を読み取ります。
    bigtable.tables.sampleRowKeys テーブルで使用される行キーのサンプルを取得します。
    bigtable.tables.update テーブルの設定を更新します。これには、列ファミリーや、各列ファミリーの個別の設定などが含まれます。

    事前定義された役割

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

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

    役割 権限 説明
    roles/bigtable.admin

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

    bigtable.*.*

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

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

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

    resourcemanager.projects.get

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

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

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

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

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

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

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

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

    resourcemanager.projects.get

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

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

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

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

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

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

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

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

    resourcemanager.projects.get

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

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

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

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

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

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

    resourcemanager.projects.get

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

    カスタムの役割

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

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

    GCP Console タスク 必要な権限
    GCP 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 の管理

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

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

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

    始める前に

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

    • Bigtable 閲覧者(推奨)
    • Bigtable 読み取り
    • Bigtable ユーザー
    • Bigtable 管理者

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

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

    インスタンス レベルの IAM 役割の付与

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

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

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

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

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

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

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

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

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

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

    次のステップ

    Google Cloud Identity and Access Management について学習する。

    このページは役立ちましたか?評価をお願いいたします。

    フィードバックを送信...

    Cloud Bigtable ドキュメント