サーバー クライアント ライブラリのセキュリティ

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

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

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

権限と役割

このセクションでは、Cloud Firestore でサポートされている権限と役割をまとめます。

必要な権限

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

メソッド 必要な権限
projects.databases.documents
batchGet datastore.entities.get
beginTransaction datastore.databases.get
commitexists 前提条件false に設定した更新または変換) datastore.entities.create
commitexists 前提条件true に設定した更新または変換)datastore.entities.update
commit前提条件なしの更新または変換)datastore.entities.create
datastore.entities.update
commit(削除) datastore.entities.delete
createDocument datastore.entities.create
delete datastore.entities.delete
get datastore.entities.get
list datastore.entities.get
datastore.entities.list
listCollectionIds datastore.entities.list
patch datastore.entities.update
rollback datastore.databases.get
runQuery datastore.entities.get
datastore.entities.list
writeexists 前提条件false に設定した更新または変換) datastore.entities.create
writeexists 前提条件true に設定した更新または変換) datastore.entities.update
write前提条件なしの更新または変換) datastore.entities.create
datastore.entities.update
write(削除)datastore.entities.delete
projects.databases.indexes
create datastore.indexes.create
delete datastore.indexes.delete
get datastore.indexes.get
list datastore.indexes.list

役割

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.entities.*
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list

resourcemanager.projects.get
resourcemanager.projects.list
Cloud Firestore データベース内のデータへの読み取り / 書き込みアクセス権。アプリケーション デベロッパーとサービス アカウント向け。
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
Cloud Firestore の全リソースに対する読み取りアクセス権。
roles/datastore.indexAdmin appengine.applications.get

datastore.indexes.*

resourcemanager.projects.get
resourcemanager.projects.list
インデックスの定義を管理するためのフルアクセス権。

権限

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

データベースの権限名 説明
datastore.databases.get トランザクションを開始またはロールバックします。
データベースからメタデータを読み取ります。
エンティティの権限名 説明
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 インデックスを更新します。
プロジェクトの権限名 説明
resourcemanager.projects.get プロジェクト内のリソースを参照します。
resourcemanager.projects.list 所有するプロジェクトをリスト表示します。

役割変更の適用遅延

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

Cloud Firestore IAM の管理

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

次のステップ