Sicherheit für Server-Clientbibliotheken

Wenn Sie die Server-Clientbibliotheken für Firestore verwenden, steuern Sie den Zugriff auf Ihre Ressourcen mit der Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM). Mit IAM gewähren Sie detaillierteren Zugriff auf bestimmte Google Cloud Platform-Ressourcen und verhindern unerwünschten Zugriff auf andere Ressourcen. Auf dieser Seite werden die IAM-Berechtigungen und -Rollen für Firestore beschrieben. Eine genaue Beschreibung von Cloud IAM finden Sie in der Dokumentation zu Cloud Identity and Access Management.

Durch IAM haben Sie die Möglichkeit, das Prinzip der geringsten Berechtigung anzuwenden und somit nur den notwendigen Zugriff auf Ihre Ressourcen zu gewähren.

Durch das Festlegen von IAM-Richtlinien können Sie steuern, wer (Nutzer) welche (Rolle) Berechtigungen für welche Ressourcen hat. IAM-Richtlinien gewähren einem Nutzer eine oder mehrere Rollen und dadurch bestimmte Berechtigungen. Sie können beispielsweise einem Nutzer die Rolle datastore.indexAdmin zuweisen, wodurch der Nutzer Indexe erstellen, ändern, löschen, auflisten oder ansehen kann.

Berechtigungen und Rollen

In diesem Abschnitt werden die Berechtigungen und Rollen zusammengefasst, die von Firestore unterstützt werden.

Erforderliche Berechtigungen

In der folgenden Tabelle sind die Berechtigungen aufgeführt, die der Aufrufer zur Ausführung der einzelnen Aktionen benötigt:

Methode Erforderliche Berechtigung
projects.databases.documents
batchGet datastore.entities.get
beginTransaction datastore.databases.get
commit-Aktualisieren oder -Transformieren, wobei exists-Vorbedingung false ist datastore.entities.create
commit-Aktualisieren oder -Transformieren, wobei exists-Vorbedingung true istdatastore.entities.update
commit-Aktualisieren oder -Transformieren ohne Vorbedingungdatastore.entities.create
datastore.entities.update
commit-Löschung 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
write (RPC)-Aktualisieren oder -Transformieren, wobei exists-Vorbedingung false ist datastore.entities.create
write (RPC)-Aktualisieren oder -Transformieren, wobei exists-Vorbedingung true ist datastore.entities.update
write (RPC)-Aktualisieren oder -Transformieren ohne Vorbedingung datastore.entities.create
datastore.entities.update
write (RPC)-Löschen datastore.entities.delete
projects.databases.indexes
create datastore.indexes.create
delete datastore.indexes.delete
get datastore.indexes.get
list datastore.indexes.list

Rollen

Bei IAM erfordert jede API-Methode in Firestore, dass das Konto, das die API-Anfrage durchführt, die entsprechenden Berechtigungen zur Verwendung der Ressource hat. Berechtigungen werden durch die Festlegung von Richtlinien gewährt, die wiederum einem Nutzer, einer Gruppe oder einem Dienstkonto Rollen zuweist. Zusätzlich zu den einfachen Rollen "Inhaber", "Bearbeiter" und "Betrachter" können Sie den Nutzern Ihres Projekts Firestore-Rollen zuweisen.

In der folgenden Tabelle sind die Firestore-IAM-Rollen aufgeführt. Sie können einem Nutzer, einer Gruppe oder einem Dienstkonto mehrere Rollen zuweisen.

Rolle Berechtigungen Beschreibung
roles/datastore.owner appengine.applications.get

datastore.*

resourcemanager.projects.get
resourcemanager.projects.list
Vollzugriff auf 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
Lese- und Schreibzugriff auf Daten in einer Firestore-Datenbank. Für Anwendungsentwickler und Dienstkonten bestimmt.
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
Lesezugriff auf alle Firestore-Ressourcen.
roles/datastore.indexAdmin appengine.applications.get

datastore.indexes.*

resourcemanager.projects.get
resourcemanager.projects.list
Vollzugriff zur Verwaltung von Indexdefinitionen.

Berechtigungen

In der folgenden Tabelle sind die von Firestore unterstützten Berechtigungen aufgeführt.

Name der Datenbankberechtigung Beschreibung
datastore.databases.get Transaktion beginnen oder Rollback einer Transaktion durchführen.
Metadaten aus einer Datenbank lesen.
Name der Entitätsberechtigung Beschreibung
datastore.entities.create Dokument erstellen.
datastore.entities.delete Dokument löschen.
datastore.entities.get Dokument lesen.
datastore.entities.list Namen der Dokumente in einem Projekt auflisten.
(datastore.entities.get ist für den Zugriff auf Dokumentdaten erforderlich.)
datastore.entities.update Dokument aktualisieren.
Name der Indexberechtigung Beschreibung
datastore.indexes.create Index erstellen.
datastore.indexes.delete Index löschen.
datastore.indexes.get Metadaten aus einem Index lesen.
datastore.indexes.list Indexe in einem Projekt auflisten.
datastore.indexes.update Index aktualisieren.
Name der Projektberechtigung Beschreibung
resourcemanager.projects.get Ressourcen im Projekt durchsuchen.
resourcemanager.projects.list Eigene Projekte auflisten.

Latenz der Rollenänderung

Firestore speichert IAM-Berechtigungen fünf Minuten lang im Cache. Es dauert also bis zu fünf Minuten, bis eine Rollenänderung wirksam wird.

Firestore-IAM verwalten

Sie können IAM-Richtlinien mithilfe der Google Cloud Console, der IAM API oder des gcloud-Befehlszeilentools abrufen und festlegen. Weitere Informationen finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen.

Abhängigkeiten von Sicherheitsregeln in IAM

Die Firestore-Sicherheitsregeln für mobile Clients oder Webclients hängen vom folgenden Dienstkonto und der folgenden IAM-Bindung ab:

Dienstkonto IAM-Rolle
service-project_number@firebase-rules.iam.gserviceaccount.com roles/firebaserules.system

Firebase richtet dieses Dienstkonto automatisch für Sie ein. Wenn Sie die Rolle firebaserules.system aus diesem Dienstkonto entfernen, lehnen Ihre Sicherheitsregeln alle Anfragen ab. Mit dem folgenden gcloud-Tool-Befehl stellen Sie diese IAM-Bindung wieder her:

gcloud projects add-iam-policy-binding project_id \
--member=serviceAccount:service-project_number@firebase-rules.iam.gserviceaccount.com \
--role=roles/firebaserules.system

Informationen zum Ermitteln von project_id und project_number finden Sie unter Projekte identifizieren.

Verwenden Sie das Befehlszeilentool gcloud anstelle der Cloud Console, da die Rolle firebaserules.system in der Console standardmäßig ausgeblendet ist.

Weitere Informationen