Identity and Access Management(IAM)

Identity and Access Management(IAM)を使用してリソースへのアクセスを管理します。IAM を使用すると、特定の Google Cloudリソースに対するアクセス権を詳細に設定し、他のリソースへの不要なアクセスを防止できます。このページでは、Firestore の IAM 権限とロールについて説明します。IAM の詳細については、IAM のドキュメントをご覧ください。

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

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

権限とロール

このセクションでは、Firestore でサポートされている権限とロールの概要について説明します。

API メソッドに必要な権限

次の表に、各アクションを実行するために呼び出し元に必要な権限を示します。

メソッド 必要な権限
projects.databases.MongoDBCompatible
ListDatabases datastore.databases.getMetadata
ListIndexes datastore.indexes.list
Find datastore.entities.get
datastore.entities.list
Aggregate datastore.entities.get
datastore.entities.list
GetMore

カーソルを作成した呼び出しで必要だった権限と同じ。

ListCollections datastore.entities.list
Count datastore.entities.list
Distinct datastore.entities.get
datastore.entities.list
CommitTransaction datastore.databases.get
AbortTransaction datastore.databases.get
EndSessions datastore.databases.get
KillCursors datastore.databases.get
Insert datastore.entities.create
Update datastore.entities.get
datastore.entities.list
datastore.entities.update
datastore.entities.create(アップサートのみ)
FindAndModify datastore.entities.get
datastore.entities.list
datastore.entities.update(置換または更新のみ)
datastore.entities.create(upsert のみ)
datastore.entities.delete(削除のみ)
CreateCollection datastore.entities.create
projects.databases.indexes
create datastore.indexes.create
delete datastore.indexes.delete
get datastore.indexes.get
list datastore.indexes.list
projects.databases
create datastore.databases.create
delete datastore.databases.delete
get datastore.databases.getMetadata
list datastore.databases.list
patch datastore.databases.update
restore datastore.backups.restoreDatabase
projects.locations
get datastore.locations.get
list datastore.locations.list
projects.databases.backupschedules
get datastore.backupSchedules.get
list datastore.backupSchedules.list
create datastore.backupSchedules.create
update datastore.backupSchedules.update
delete datastore.backupSchedules.delete
projects.locations.backups
get datastore.backups.get
list datastore.backups.list
delete datastore.backups.delete
projects.databases.usercreds
get datastore.userCreds.get
list datastore.userCreds.list
create datastore.userCreds.create
enable datastore.userCreds.update
disable datastore.userCreds.update
resetPassword datastore.userCreds.update
delete datastore.userCreds.delete

事前定義ロール

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

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

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

datastore.*

resourcemanager.projects.get
resourcemanager.projects.list
Firestore に対する完全アクセス権。
roles/datastore.user appengine.applications.get

datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
datastore.entities.*
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list

resourcemanager.projects.get
resourcemanager.projects.list
Firestore データベース内のデータに対する読み取り / 書き込みアクセス権。アプリケーション デベロッパーとサービス アカウント向け。
roles/datastore.viewer appengine.applications.get

datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
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
すべての Firestore リソースに対する読み取りアクセス権。
roles/datastore.indexAdmin appengine.applications.get

datastore.databases.getMetadata

datastore.indexes.*

resourcemanager.projects.get
resourcemanager.projects.list
インデックスの定義を管理する完全アクセス権
roles/datastore.backupSchedulesViewer datastore.backupSchedules.get
datastore.backupSchedules.list
Firestore データベースのバックアップ スケジュールに対する読み取りアクセス権。
roles/datastore.backupSchedulesAdmin datastore.backupSchedules.get
datastore.backupSchedules.list
datastore.backupSchedules.create
datastore.backupSchedules.update
datastore.backupSchedules.delete
datastore.databases.list
datastore.databases.getMetadata
Firestore データベースのバックアップ スケジュールに対する完全アクセス権。
roles/datastore.backupsViewer datastore.backups.get
datastore.backups.list
Firestore のロケーション内のバックアップ情報への読み取りアクセス権。
roles/datastore.backupsAdmin datastore.backups.get
datastore.backups.list
datastore.backups.delete
Firestore のロケーション内のバックアップに対する完全アクセス権。
roles/datastore.restoreAdmin datastore.backups.get
datastore.backups.list
datastore.backups.restoreDatabase
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.operations.get
Firestore バックアップを新しいデータベースに復元する機能。また、このロールによって、新しいバックアップを作成できるようになります。バックアップから復元する必要はありません。
roles/datastore.statisticsViewer resourcemanager.projects.get
resourcemanager.projects.list
datastore.databases.getMetadata
datastore.insights.get
datastore.keyVisualizerScans.get
datastore.keyVisualizerScans.list
datastore.statistics.list
datastore.statistics.get
分析情報、統計、Key Visualizer スキャンに対する読み取りアクセス権。
roles/datastore.userCredsViewer datastore.userCreds.get
datastore.userCreds.list
Firestore データベース内のユーザー認証情報に対する読み取りアクセス権。
roles/datastore.userCredsAdmin datastore.userCreds.get
datastore.userCreds.list
datastore.userCreds.create
datastore.userCreds.update
datastore.userCreds.delete
datastore.databases.list
datastore.databases.getMetadata
Firestore データベース内のユーザー認証情報に対する完全アクセス権。

カスタムロール

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

権限

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

データベースの権限名 説明
datastore.databases.get トランザクションを開始またはロールバックします。
datastore.databases.getMetadata データベースからメタデータを読み取ります。
datastore.databases.list プロジェクト内のデータベースを一覧表示します。
datastore.databases.create データベースを作成します。
datastore.databases.update データベースを更新します。
datastore.databases.delete データベースを削除します。
datastore.databases.createTagBinding データベースのタグ バインディングを作成します。
datastore.databases.deleteTagBinding データベースのタグ バインディングを削除します。
datastore.databases.listTagBindings データベースのすべてのタグ バインディングを一覧表示します。
datastore.databases.listEffectiveTagBindings データベースの有効なタグ バインディングを一覧表示します。
エンティティの権限名 説明
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.operations.cancel 長時間実行オペレーションをキャンセルします。
datastore.operations.delete 長時間実行オペレーションを削除します。
datastore.operations.get 長時間実行オペレーションの最新の状態を取得します。
datastore.operations.list 長時間実行オペレーションを一覧表示します。
プロジェクトの権限名 説明
resourcemanager.projects.get プロジェクト内のリソースを参照します。
resourcemanager.projects.list 所有するプロジェクトをリスト表示します。
ロケーションの権限名 説明
datastore.locations.get データベースの場所の詳細を取得します。新しいデータベースの作成に必要です。
datastore.locations.list 使用可能なデータベースの場所を一覧表示します。新しいデータベースの作成に必要です。
Key Visualizer の権限名 説明
datastore.keyVisualizerScans.get Key Visualizer スキャンの詳細を取得します。
datastore.keyVisualizerScans.list 使用可能な Key Visualizer スキャンを一覧表示します。
バックアップ スケジュールの権限名 説明
datastore.backupSchedules.get バックアップ スケジュールの詳細情報を取得します。
datastore.backupSchedules.list 使用可能なバックアップ スケジュールを一覧表示します。
datastore.backupSchedules.create バックアップ スケジュールを作成する
datastore.backupSchedules.update バックアップ スケジュールを更新する
datastore.backupSchedules.delete バックアップ スケジュールを削除する
バックアップの権限名 説明
datastore.backups.get バックアップの詳細情報を取得します。
datastore.backups.list 利用可能なバックアップを一覧表示します。
datastore.backups.delete バックアップを削除します。
datastore.backups.restoreDatabase バックアップからデータベースを復元します。
分析情報の権限名 説明
datastore.insights.get リソースの分析情報を取得する
ユーザー認証情報の権限名 説明
datastore.userCreds.get ユーザーの認証情報の詳細を取得する。
datastore.userCreds.list 使用可能なユーザー認証情報を一覧表示します。
datastore.userCreds.create ユーザー認証情報を作成します。
datastore.userCreds.update ユーザー認証情報を有効または無効にしたり、ユーザー パスワードを再設定したりする。
datastore.userCreds.delete ユーザー認証情報を削除します。

ロール変更のレイテンシ

Firestore では IAM 権限が 5 分間キャッシュされるため、ロールの変更が有効になるまでに最大 5 分かかります。

Firestore IAM の管理

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

条件付きアクセス権限を構成する

IAM Conditions を使用して、条件付きアクセス制御を定義して適用できます。

たとえば、次の条件では、指定した日付までプリンシパルに datastore.user ロールが割り当てられます。

{
  "role": "roles/datastore.user",
  "members": [
    "user:[email protected]"
  ],
  "condition": {
    "title": "Expires_December_1_2023",
    "description": "Expires on December 1, 2023",
    "expression":
      "request.time < timestamp('2023-12-01T00:00:00.000Z')"
  }
}

一時的なアクセス権の IAM Conditions を定義する方法については、一時的なアクセス権を構成するをご覧ください。

1 つ以上のデータベースへのアクセスに IAM Conditions を構成する方法については、データベース アクセス条件を構成するをご覧ください。

次のステップ