Identity and Access Management(IAM)

Google Cloud には Identity and Access Management(IAM)機能があり、特定の Google Cloud リソースに対するアクセス権を詳細に設定できるため、他のリソースへの不要なアクセスを防ぐことができます。このページでは、Datastore モードの Firestore の IAM ロールについて説明します。IAM の詳細については、IAM のドキュメントを参照してください。

IAM を使用すると、最小限の権限のセキュリティ原則を導入できるため、リソースに対する必要なアクセス権のみ付与できます。

IAM では、IAM ポリシーを設定して、誰(どのユーザー)に、どのリソースに対するどのアクセス権(役割)を付与するかを制御することができます。IAM ポリシーは、特定のロールをユーザーに付与することで、そのユーザーに特定の権限を付与します。たとえば、ユーザーに datastore.indexAdmin のロールを付与されたユーザーは、インデックスの作成、変更、削除、一覧表示、表示を行うことができます。

権限とロール

ここでは、Datastore モードの Firestore でサポートされる権限とロールを簡単に説明します。

必要な権限

次の表に、各メソッドを呼び出すために呼び出し元が持っている必要のある権限のリストを示します。

メソッド 必要な権限
allocateIds datastore.entities.allocateIds
beginTransaction datastore.databases.get
insert の commit datastore.entities.create
upsert の commit datastore.entities.create
datastore.entities.update
update の commit datastore.entities.update
delete の commit datastore.entities.delete
lookup の commit datastore.entities.get

メタデータまたは統計情報に関連する検索の場合には、メタデータと統計情報に必要な権限をご覧ください。
query の commit datastore.entities.list
datastore.entities.get(クエリがキーのみのクエリではない場合)

メタデータまたは統計情報に関連するクエリの場合には、メタデータと統計情報に必要な権限をご覧ください。
lookup datastore.entities.get

メタデータまたは統計情報に関連する検索の場合には、メタデータと統計情報に必要な権限をご覧ください。
rollback datastore.databases.get
runQuery datastore.entities.list
datastore.entities.get(クエリがキーのみのクエリではない場合)

メタデータまたは統計情報に関連するクエリの場合には、メタデータと統計情報に必要な権限をご覧ください。

メタデータと統計情報に必要な権限

次の表に、メタデータ統計情報に関するメソッドを呼び出す際に必要な権限を示します。

メソッド 必要な権限
__Stat _*__ 一致する種類名を持つエンティティの lookup datastore.statistics.get
__Stat_*__ と一致する名前の種類を使用する runQuery datastore.statistics.get
datastore.statistics.list
種類 __namespace__ を使用する runQuery datastore.namespaces.get
datastore.namespaces.list

役割

IAM では、Datastore のすべての API メソッドで、API リクエストを行うアカウントがリソースの使用に必要な権限を保持していることが要求されます。権限を付与するには、ユーザー、グループ、またはサービス アカウントにロールを付与するポリシーを設定します。オーナー、編集者、閲覧者という基本ロール以外に、Datastore モードの Firestore のロールをプロジェクトのユーザーに付与できます。

次の表に、Datastore モードの Firestore の IAM ロールを示します。1 つのユーザー、グループ、またはサービス アカウントに複数のロールを付与できます。

ロール 権限 説明
roles/datastore.owner

roles/appengine.appAdmin を含む)
appengine.applications.get
datastore.databases.*
datastore.entities.*
datastore.indexes.*
datastore.namespaces.*
datastore.operations.*
datastore.statistics.*
resourcemanager.projects.get
resourcemanager.projects.list
データベース インスタンスへの完全アクセス権。
roles/datastore.owner

roles/appengine.appAdmin を含まない)
appengine.applications.get
datastore.databases.*
datastore.entities.*
datastore.indexes.*
datastore.namespaces.*
datastore.operations.*
datastore.statistics.*
resourcemanager.projects.get
resourcemanager.projects.list
データベース インスタンスへの完全アクセス権。ただし、ユーザー、グループ、サービス アカウントは、次のことができません。
roles/datastore.user appengine.applications.get
datastore.databases.get
datastore.entities.*
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list
resourcemanager.projects.get
resourcemanager.projects.list
Datastore モード データベース内のデータへの読み取り、書き込みアクセス権。アプリケーション デベロッパーとサービス アカウント向け。
roles/datastore.viewer appengine.applications.get
datastore.databases.get
datastore.entities.get
datastore.entities.list
datastore.indexes.get
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list
resourcemanager.projects.get
resourcemanager.projects.list
すべての Datastore モード データベース リソースへの読み取りアクセス権。
roles/datastore.importExportAdmin appengine.applications.get
datastore.databases.export
datastore.databases.import
datastore.operations.cancel
datastore.operations.get
datastore.operations.list
resourcemanager.projects.get
resourcemanager.projects.list
インポートとエクスポートを管理するための完全アクセス権。
roles/datastore.indexAdmin appengine.applications.get
datastore.indexes.*
resourcemanager.projects.get
resourcemanager.projects.list
インデックスの定義を管理する完全アクセス権

権限

次の表に、Datastore モードの Firestore でサポートされる権限を示します。

データベースの権限名 説明
datastore.databases.export データベースからエンティティをエクスポートします。
datastore.databases.get トランザクションを開始またはロールバックします。
データベースからメタデータを読み取ります。
datastore.databases.import データベースにエンティティをインポートします。
エンティティの権限名 説明
datastore.entities.allocateIds 不完全なキーパスを使用して、キーの ID を割り当てます。
datastore.entities.create エンティティを作成します。
datastore.entities.delete エンティティを削除します。
datastore.entities.get エンティティを読み取ります。
datastore.entities.list プロジェクト内のエンティティのキーを一覧表示します。
(エンティティ データへのアクセスには datastore.entities.get が必要です。)
datastore.entities.update エンティティを更新します。
インデックスの権限名 説明
datastore.indexes.create インデックスを作成します。
datastore.indexes.delete インデックスを削除します。
datastore.indexes.get インデックスからメタデータを読み取ります。
datastore.indexes.list プロジェクト内のインデックスを一覧表示します。
datastore.indexes.update インデックスを更新します。
名前空間の権限名 説明
datastore.namespaces.get 名前空間からメタデータを取得します。
datastore.namespaces.list プロジェクト内の名前空間を一覧表示します。
オペレーションの権限名 説明
datastore.operations.cancel 長時間実行オペレーションをキャンセルします。
datastore.operations.delete 長時間実行オペレーションを削除します。
datastore.operations.get 長時間実行オペレーションの最新の状態を取得します。
datastore.operations.list 長時間実行オペレーションを一覧表示します。
プロジェクトの権限名 説明
resourcemanager.projects.get プロジェクト内のリソースを参照します。
resourcemanager.projects.list 所有するプロジェクトをリスト表示します。
統計情報の権限名 説明
datastore.statistics.get 統計情報のエンティティを取得します。
datastore.statistics.list 統計情報のエンティティのキーを一覧表示します。
(統計情報のエンティティ データへのアクセスには datastore.statistics.get が必要です。)
App Engine の権限名 説明
appengine.applications.get すべての App Engine アプリケーション構成に読み取り専用でアクセスします。

Datastore モード データベース インスタンスを作成するために必要な役割

新しい Datastore モード データベース インスタンスを作成するには、オーナーのロールまたは Datastore オーナーのロールが必要です。

Datastore モード データベースではアクティブな App Engine アプリケーションが必要です。プロジェクトにアプリケーションがない場合は、Datastore モードの Firestore によりアプリケーションが作成されます。その場合、appengine.applications.create 権限(オーナーのロールまたは IAM カスタムロールに含まれている権限)が必要です。

ロール変更のレイテンシ

Datastore モードの Firestore は IAM 権限を 5 分間キャッシュに保存します。そのため、ロールの変更が反映されるまでに最大で 5 分かかります。

IAM の管理

IAM ポリシーの取得と設定には、Google Cloud Console、IAM メソッド、gcloud コマンドライン ツールを使用できます。

次のステップ