Identity and Access Management(IAM)

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

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

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

権限とロール

このセクションでは、Cloud 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(upsert のみ)
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
clone datastore.databases.clone データベースのクローンを作成します。

clone リクエストに tags 値が含まれている場合は、次の追加の権限が必要です。

  • datastore.databases.createTagBinding

バインディングを一覧表示してタグ バインディングが正常に設定されているかどうかを確認する場合は、次の追加の権限が必要です。

  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
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

事前定義ロール

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

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

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

datastore.*

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

datastore.databases.getMetadata

datastore.indexes.*

datastore.operations.list
datastore.operations.get
resourcemanager.projects.get
resourcemanager.projects.list
インデックスの定義を管理する完全アクセス権
roles/datastore.backupSchedulesViewer datastore.backupSchedules.get
datastore.backupSchedules.list
Cloud 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
Cloud Firestore データベースのバックアップ スケジュールに対する完全アクセス権。
roles/datastore.backupsViewer datastore.backups.get
datastore.backups.list
Cloud Firestore のロケーション内のバックアップ情報への読み取りアクセス権。
roles/datastore.backupsAdmin datastore.backups.get
datastore.backups.list
datastore.backups.delete
Cloud 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
Cloud Firestore バックアップを新しいデータベースに復元する機能。また、このロールによって、新しいバックアップを作成できるようになります。バックアップから復元する必要はありません。
roles/datastore.cloneAdmin datastore.databases.clone
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.operations.get
Cloud 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
Cloud 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
Cloud Firestore データベース内のユーザー認証情報に対する完全アクセス権。

カスタムロール

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

タグの作成と管理に必要なロール

作成アクションまたは復元アクションでタグが表される場合は、一部のロールが必要です。データベース リソースに関連付ける前にタグの Key-Value ペアを作成する方法については、タグの作成と管理をご覧ください。

次の権限が必要です。

タグを表示
  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
リソースのタグを管理する

タグ値を適用するデータベース リソースには、次の権限が必要です。

  • datastore.databases.createTagBinding

権限

次の表に、Cloud Firestore がサポートする権限を示します。

データベースの権限名 説明
datastore.databases.get トランザクションを開始またはロールバックします。
datastore.databases.getMetadata データベースからメタデータを読み取ります。
datastore.databases.list プロジェクト内のデータベースを一覧表示します。
datastore.databases.create データベースを作成します。
datastore.databases.update データベースを更新します。
datastore.databases.delete データベースを削除します。
datastore.databases.clone データベースのクローンを作成します。
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 ユーザー認証情報を削除します。

役割変更の適用遅延

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

Cloud Firestore IAM の管理

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

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

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

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

{
  "role": "roles/datastore.user",
  "members": [
    "user:travis@example.com"
  ],
  "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 を構成する方法については、データベース アクセス条件を構成するをご覧ください。

次のステップ