Google Cloud bietet mit der Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM) die Möglichkeit, bestimmten Google Cloud-Ressourcen detaillierte Zugriffsrechte zuzuweisen und den unerwünschten Zugriff auf andere Ressourcen zu verhindern. Auf dieser Seite werden die IAM-Rollen für Firestore im Datastore-Modus beschrieben. Eine genaue Beschreibung von IAM finden Sie in der IAM-Dokumentation.
Mit IAM können Sie außerdem das Sicherheitsprinzip der geringsten Berechtigung anwenden und somit nur den erforderlichen Zugriff auf Ihre Ressourcen gewähren.
Mit IAM steuern Sie, welche Nutzer welche Rollen haben und somit berechtigt sind, auf bestimmte Ressourcen zuzugreifen, indem Sie IAM-Richtlinien festlegen. IAM-Richtlinien gewähren einem Nutzer bestimmte Rollen und dadurch bestimmte Berechtigungen. Sie können einem Nutzer beispielsweise die Rolle datastore.indexAdmin
zuweisen und der Nutzer kann dadurch Indexe erstellen, ändern, löschen, auflisten oder aufrufen.
Berechtigungen und Rollen
In diesem Abschnitt werden die Berechtigungen und Rollen zusammengefasst, die Firestore im Datastore-Modus unterstützt.
Berechtigungen
In der folgenden Tabelle werden die Berechtigungen aufgeführt, die Firestore im Datastore-Modus unterstützt.
Name der Datenbankberechtigung | Beschreibung | |
---|---|---|
datastore.databases.export |
Entitäten aus einer Datenbank exportieren. | |
datastore.databases.get |
Transaktion starten oder Rollback der Transaktion durchführen. Führen Sie mit leeren Mutationen einen Commit durch. |
|
datastore.databases.import |
Entitäten in eine Datenbank importieren. | |
datastore.databases.getMetadata |
Metadaten aus einer Datenbank lesen. | |
datastore.databases.list |
Datenbanken in einem Projekt auflisten | |
datastore.databases.create |
Datenbank erstellen | |
datastore.databases.update |
Datenbank aktualisieren. | |
datastore.databases.delete |
Datenbank löschen | |
datastore.databases.createTagBinding |
Erstellen Sie eine Tag-Bindung für eine Datenbank. | |
datastore.databases.deleteTagBinding |
Löschen Sie eine Tag-Bindung für eine Datenbank. | |
datastore.databases.listTagBindings |
Listen Sie alle Tag-Bindungen für eine Datenbank auf. | |
datastore.databases.listEffectiveTagBindings |
Aktive Tag-Bindungen für eine Datenbank auflisten. | |
Name der Entitätsberechtigungen | Beschreibung | |
datastore.entities.allocateIds |
IDs für Schlüssel mit unvollständigem Schlüsselpfad zuordnen. | |
datastore.entities.create |
Entität erstellen. | |
datastore.entities.delete |
Entität löschen. | |
datastore.entities.get |
Entität lesen. | |
datastore.entities.list |
Schlüssel der Entitäten in einem Projekt auflisten. ( datastore.entities.get ist für den Zugriff auf die Entitätsdaten erforderlich.) |
|
datastore.entities.update |
Entität 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 Namespace-Berechtigung | Beschreibung | |
datastore.namespaces.get |
Metadaten aus einem Namespace abrufen. | |
datastore.namespaces.list |
Namespaces in einem Projekt auflisten. | |
Name der Vorgangsberechtigung | Beschreibung | |
datastore.operations.cancel |
Einen lange laufenden Vorgang abbrechen. | |
datastore.operations.delete |
Einen lange laufenden Vorgang löschen. | |
datastore.operations.get |
Ruft den letzten Status eines lange laufende Vorgangs ab. | |
datastore.operations.list |
Lange laufende Vorgänge auflisten. | |
Name der Projektberechtigung | Beschreibung | |
resourcemanager.projects.get |
Ressourcen im Projekt durchsuchen. | |
resourcemanager.projects.list |
Eigene Projekte auflisten. | |
Name der Statistikberechtigung | Beschreibung | |
datastore.statistics.get |
Statistikentitäten abrufen. | |
datastore.statistics.list |
Schlüssel der Statistikentitäten auflisten. ( datastore.statistics.get ist für den Zugriff auf die Entitätsdaten erforderlich.) |
|
Name der App Engine-Berechtigung | Beschreibung | |
appengine.applications.get |
Lesezugriff auf die gesamte App Engine-Anwendungskonfiguration und die Einstellungen. | |
Name der Standortberechtigung | Beschreibung | |
datastore.locations.get |
Rufen Sie Details zu einem Datenbankspeicherort ab. Dies ist erforderlich zum Erstellen einer neuen Datenbank. | |
datastore.locations.list |
Listen Sie die verfügbaren Datenbankspeicherorte auf. Dies ist erforderlich zum Erstellen einer neuen Datenbank. | |
Name der Berechtigung in Key Visualizer | Beschreibung | |
datastore.keyVisualizerScans.get |
Details zu Key Visualizer-Scans abrufen | |
datastore.keyVisualizerScans.list |
Listet die verfügbaren Key Visualizer-Scans auf. | |
Name der Berechtigung für den Sicherungszeitplan | Beschreibung | |
datastore.backupSchedules.get |
Details zu einem Sicherungszeitplan abrufen | |
datastore.backupSchedules.list |
Listen Sie die verfügbaren Sicherungszeitpläne auf. | |
datastore.backupSchedules.create |
Erstellen Sie einen Sicherungszeitplan. | |
datastore.backupSchedules.update |
Aktualisieren Sie einen Zeitplan für die Sicherung. | |
datastore.backupSchedules.delete |
Löschen Sie einen Sicherungszeitplan. | |
Name der Sicherungsberechtigung | Beschreibung | |
datastore.backups.get |
Details zu einer Sicherung abrufen | |
datastore.backups.list |
Listen Sie die verfügbaren Sicherungen auf. | |
datastore.backups.delete |
Eine Sicherung löschen. | |
datastore.backups.restoreDatabase |
Datenbank aus einer Sicherung wiederherstellen. |
Vordefinierte Rollen
In IAM wird für jede Datastore API-Methode vorausgesetzt, dass das Konto, von dem die API-Anfrage ausgeht, 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 für Firestore im Datastore-Modus Rollen zuweisen.
In der folgenden Tabelle werden die IAM-Rollen von Firestore im Datastore-Modus 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 |
Vollständiger Zugriff auf die Datenbankinstanz. Gewähren Sie dem Hauptkonto für Datenspeicheradministrator-Zugriff die Rolle appengine.appAdmin . |
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 |
Lese-/Schreibzugriff auf Daten in einer Datenbank im Datastore-Modus. Für Anwendungsentwickler und Dienstkonten bestimmt. |
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 |
Lesezugriff auf alle Ressourcen der Datenbank im Datastore-Modus. |
roles/datastore.importExportAdmin |
appengine.applications.get datastore.databases.export datastore.databases.getMetadata datastore.databases.import datastore.operations.cancel datastore.operations.get datastore.operations.list resourcemanager.projects.get resourcemanager.projects.list |
Vollzugriff für die Verwaltung von Importen und Exporten. |
roles/datastore.indexAdmin |
appengine.applications.get datastore.databases.getMetadata datastore.indexes.* resourcemanager.projects.get resourcemanager.projects.list |
Vollzugriff zurVerwaltung von Indexdefinitionen. |
roles/datastore.keyVisualizerViewer |
datastore.databases.getMetadata datastore.keyVisualizerScans.get datastore.keyVisualizerScans.list resourcemanager.projects.get resourcemanager.projects.list |
Vollständiger Zugriff auf Key Visualizer-Scans. |
roles/datastore.backupSchedulesViewer |
datastore.backupSchedules.get datastore.backupSchedules.list |
Lesezugriff auf Zeitpläne für Sicherungen in einer Datenbank im Datastore-Modus. |
roles/datastore.backupSchedulesAdmin |
datastore.backupSchedules.get datastore.backupSchedules.list datastore.backupSchedules.create datastore.backupSchedules.update datastore.backupSchedules.delete datastore.databases.list datastore.databases.getMetadata |
Vollständiger Zugriff auf Sicherungszeitpläne in einer Datenbank im Datastore-Modus. |
roles/datastore.backupsViewer |
datastore.backups.get datastore.backups.list |
Lesezugriff auf Sicherungsinformationen an einem Standort im Datastore-Modus. |
roles/datastore.backupsAdmin |
datastore.backups.get datastore.backups.list datastore.backups.delete |
Vollständiger Zugriff auf Sicherungen an einem Speicherort im Datastore-Modus. |
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 |
Möglichkeit, eine Sicherung im Datastore-Modus in einer neuen Datenbank wiederherzustellen. Diese Rolle gibt auch die Möglichkeit, neue Datenbanken zu erstellen, nicht unbedingt durch Wiederherstellung aus einer Sicherung. |
Benutzerdefinierte Rollen
Wenn die vordefinierten Rollen für Ihre geschäftlichen Anforderungen nicht ausreichen, können Sie eigene benutzerdefinierte Rollen mit selbst definierten Berechtigungen festlegen.
- Erfahren Sie mehr über benutzerdefinierte Rollen.
- Benutzerdefinierte Rollen erstellen und verwalten.
Erforderliche Berechtigungen für API-Methoden
In der folgenden Tabelle sind die Berechtigungen aufgelistet, die der Abfragende haben muss, um eine bestimmte Methode aufzurufen:
Methode | Erforderliche Berechtigungen |
---|---|
allocateIds |
datastore.entities.allocateIds |
beginTransaction |
datastore.databases.get |
commit mit leeren Mutationen |
datastore.databases.get |
commit für Insert-Vorgang |
datastore.entities.create |
commit für Upsert-Vorgang |
datastore.entities.create datastore.entities.update |
commit für Update-Vorgang |
datastore.entities.update |
commit für Delete-Vorgang |
datastore.entities.delete |
commit für Lookup-Vorgang |
datastore.entities.get Informationen zum Nachschlagen von Metadaten oder Statistiken finden Sie unter Erforderliche Berechtigungen für Metadaten und Statistiken. |
commit für eine Abfrage |
datastore.entities.list datastore.entities.get (wenn die Abfrage keine ausschließlich schlüsselbasierte Abfrage ist)Informationen zum Abfragen von Metadaten oder Statistiken finden Sie unter Erforderliche Berechtigungen für Metadaten und Statistiken. |
lookup |
datastore.entities.get Informationen zum Nachschlagen von Metadaten oder Statistiken finden Sie unter Erforderliche Berechtigungen für Metadaten und Statistiken. |
rollback |
datastore.databases.get |
runQuery |
datastore.entities.list datastore.entities.get (wenn die Abfrage keine ausschließlich schlüsselbasierte Abfrage ist)Informationen zum Abfragen von Metadaten oder Statistiken finden Sie unter Erforderliche Berechtigungen für Metadaten und Statistiken. |
runQuery durch eine typlose Abfrage |
datastore.entities.get datastore.entities.list datastore.statistics.get datastore.statistics.list |
Erforderliche Berechtigungen für Metadaten und Statistiken
In der folgenden Tabelle werden die Berechtigungen aufgeführt, die zum Aufrufen der Methoden für Metadaten und Statistiken benötigt werden.
Methode | Erforderliche Berechtigung(en) |
---|---|
lookup von Entitäten mit Artnamen, die mit __Stat_*__ übereinstimmen |
datastore.statistics.get |
runQuery unter Verwendung von Arten mit Namen, die mit __ Stat _*__ übereinstimmen |
datastore.statistics.get datastore.statistics.list |
runQuery unter Verwendung der Art __ Namespace __ |
datastore.namespaces.get datastore.namespaces.list |
Erforderliche Rollen zum Erstellen einer Datenbankinstanz im Datastore-Modus
Zum Erstellen einer neuen Datenbankinstanz im Datastore-Modus benötigen Sie entweder die Rolle Inhaber oder die Rolle Datastore-Inhaber.
Datenbanken im Datastore-Modus erfordern eine aktive App Engine-Anwendung.
Wenn im Projekt keine Anwendung vorhanden ist, erstellt Firestore im Datastore-Modus eine Anwendung für Sie. In diesem Fall ist die Berechtigung appengine.applications.create
der Inhaber-Rolle oder eine benutzerdefinierte IAM-Rolle mit dieser Berechtigung erforderlich.
Latenz der Rollenänderung
Firestore im Datastore-Modus speichert die IAM-Berechtigungen für fünf Minuten im Cache, sodass es bis zu fünf Minuten dauern kann, bis eine Rollenänderung wirksam wird.
IAM verwalten
Sie können IAM-Richtlinien über die Google Cloud Console abrufen und festlegen. IAM-Methoden oder die Google Cloud CLI.
- Weitere Informationen zur Google Cloud Console finden Sie im entsprechenden Abschnitt unter Zugriff auf Ressourcen erteilen, ändern und entziehen.
- Weitere Informationen zu den IAM-Methoden finden Sie in Zugriffssteuerung über die API.
- Informationen zur gcloud CLI finden Sie in Zugriffssteuerung über das gcloud-Tool.
Berechtigungen für den bedingten Zugriff konfigurieren
Mit IAM-Bedingungen können Sie eine bedingte Zugriffssteuerung definieren und erzwingen.
Mit der folgenden Bedingung wird einem Hauptkonto beispielsweise die Rolle datastore.user
bis zu einem bestimmten Datum zugewiesen:
{
"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')"
}
}
Informationen zum Definieren von IAM-Bedingungen für den temporären Zugriff finden Sie unter Temporären Zugriff konfigurieren.
Weitere Informationen zum Konfigurieren von IAM-Bedingungen für den Zugriff auf eine oder mehrere Datenbanken finden Sie unter Konfigurieren Sie Bedingungen für den Datenbankzugriff.