Mit Identity and Access Management (IAM) können Sie den Nutzer- und Gruppenzugriff auf Spanner-Ressourcen auf Projekt-, Spanner-Instanz- und Spanner-Datenbankebene steuern. Sie können beispielsweise festlegen, dass ein Nutzer die volle Kontrolle über eine bestimmte Datenbank in einer bestimmten Instanz in Ihrem Projekt hat, aber keine Instanzen in Ihrem Projekt erstellen, ändern oder löschen kann. Mit der Zugriffssteuerung über IAM können Sie einem Nutzer oder einer Gruppe eine Berechtigung erteilen, ohne jede Spanner-Instanz oder Datenbankberechtigung einzeln ändern zu müssen.
In diesem Dokument werden die für Spanner relevanten IAM-Berechtigungen und die IAM-Rollen beschrieben, mit denen diese Berechtigungen gewährt werden. Eine detaillierte Beschreibung zu IAM und seinen Funktionen finden Sie im Entwicklerhandbuch zu IAM. Lesen Sie insbesondere den Abschnitt zur Verwaltung von IAM-Richtlinien.
Berechtigungen
Mit Berechtigungen werden Nutzer autorisiert, bestimmte Aktionen in Spanner-Ressourcen auszuführen. Mit der Berechtigung spanner.databases.read kann ein Nutzer beispielsweise über die Lese-API von Spanner aus einer Datenbank lesen, während spanner.databases.select es einem Nutzer ermöglicht, eine SQL-Select-Anweisung für eine Datenbank auszuführen. Sie erteilen den Nutzern die Berechtigungen nicht direkt, sondern Sie weisen ihnen vordefinierte Rollen oder benutzerdefinierte Rollen zu, die eine oder mehrere Berechtigungen enthalten.
In den folgenden Tabellen sind die IAM-Berechtigungen aufgeführt, die mit Cloud Spanner verknüpft sind.
Instanzkonfigurationen
Die folgenden Berechtigungen gelten für Spanner-Instanzkonfigurationen. Weitere Informationen finden Sie in den Referenzen zur Instanzkonfiguration für REST- und RPC-APIs.
| Name der Berechtigung für Instanzkonfigurationen | Beschreibung |
|---|---|
spanner.instanceConfigs.create |
Erstellen Sie eine benutzerdefinierte Instanzkonfiguration. |
spanner.instanceConfigs.delete |
Benutzerdefinierte Instanzkonfiguration löschen. |
spanner.instanceConfigs.get |
Instanzkonfiguration abrufen. |
spanner.instanceConfigs.list |
Instanzkonfigurationen auflisten. |
spanner.instanceConfigs.update |
Benutzerdefinierte Instanzkonfiguration aktualisieren. |
Vorgänge für die Instanzkonfiguration
Die folgenden Berechtigungen gelten für Vorgänge zur Konfiguration von Spanner-Instanzen. Weitere Informationen finden Sie in den Instanzreferenzen für REST- und RPC-APIs.
| Name der Berechtigung für Instanzkonfigurationsvorgänge | Beschreibung |
|---|---|
spanner.instanceConfigOperations.cancel |
Vorgang zur Instanzkonfiguration abbrechen. |
spanner.instanceConfigOperations.delete |
Vorgang zum Löschen einer Instanzkonfiguration. |
spanner.instanceConfigOperations.get |
Instanzkonfigurationsvorgang abrufen. |
spanner.instanceConfigOperations.list |
Vorgänge zur Instanzkonfiguration auflisten |
Instanzen
Die folgenden Berechtigungen gelten für Spanner-Instanzen. Weitere Informationen finden Sie in den Instanzreferenzen für REST- und RPC-APIs.
| Name der Instanzberechtigung | Beschreibung |
|---|---|
spanner.instances.create |
Instanz erstellen. |
spanner.instances.delete |
Instanz löschen |
spanner.instances.get |
Konfiguration einer bestimmten Instanz abrufen. |
spanner.instances.getIamPolicy |
IAM-Richtlinie einer Instanz abrufen. |
spanner.instances.list |
Instanzen auflisten. |
spanner.instances.setIamPolicy |
IAM-Richtlinie einer Instanz festlegen. |
spanner.instances.update |
Instanz aktualisieren. |
Instanzvorgänge
Die folgenden Berechtigungen gelten für Spanner-Instanzvorgänge. Weitere Informationen finden Sie in den Instanzreferenzen für REST- und RPC-APIs.
| Name der Berechtigung für Instanzvorgänge | Beschreibung |
|---|---|
spanner.instanceOperations.cancel |
Instanzvorgang abbrechen. |
spanner.instanceOperations.delete |
Instanzvorgang löschen. |
spanner.instanceOperations.get |
Bestimmten Instanzvorgang abrufen. |
spanner.instanceOperations.list |
Instanzvorgänge auflisten. |
Instanzpartitionen
Die folgenden Berechtigungen gelten für Cloud Spanner-Instanzpartitionen. Weitere Informationen finden Sie in den Referenzen zu Instanzpartitionen für REST- und RPC-APIs.
| Name der Instanzberechtigung | Beschreibung |
|---|---|
spanner.instancePartitions.create |
Erstellen Sie eine Instanzpartition. |
spanner.instancePartitions.delete |
Instanzpartition löschen |
spanner.instancePartitions.get |
Konfiguration einer bestimmten Instanzpartition abrufen. |
spanner.instancePartitions.list |
Instanzpartitionen auflisten. |
spanner.instancePartitions.update |
Instanzpartition aktualisieren |
Instanzpartitionsvorgänge
Die folgenden Berechtigungen gelten für Vorgänge mit Spanner-Instanzpartitionen. Weitere Informationen finden Sie in den Referenzen zu Instanzpartitionen für REST- und RPC-APIs.
| Name der Berechtigung für Instanzpartitionsvorgänge | Beschreibung |
|---|---|
spanner.instancePartitionOperations.cancel |
Vorgang für eine Instanzpartition abbrechen. |
spanner.instancePartitionOperations.delete |
Instanzpartitionsvorgang löschen. |
spanner.instancePartitionOperations.get |
Einen bestimmten Instanzpartitionsvorgang abrufen. |
spanner.instancePartitionOperations.list |
Instanzpartitionsvorgänge auflisten |
Datenbanken
Die folgenden Berechtigungen gelten für Cloud Spanner-Datenbanken. Weitere Informationen finden Sie in den Datenbankreferenzen für REST- und RPC-APIs.
| Name der Datenbankberechtigung | Beschreibung |
|---|---|
spanner.databases.adapt |
Ermöglicht der Spanner Adapter API, direkt mit Spanner zu interagieren. |
spanner.databases.beginOrRollbackReadWriteTransaction |
Lese-/Schreibtransaktion in einer Spanner-Datenbank starten oder zurücksetzen. |
spanner.databases.beginPartitionedDmlTransaction |
Führt eine instanzpartitionierte DML-Anweisung (Data Manipulation Language) aus. Weitere Informationen zu instanzpartitionierten Abfragen finden Sie unter Daten parallel lesen. |
spanner.databases.beginReadOnlyTransaction |
Starten Sie eine schreibgeschützte Transaktion in einer Spanner-Datenbank. |
spanner.databases.create |
Datenbank erstellen |
spanner.databases.createBackup |
Erstellen Sie eine Sicherung aus der Datenbank. Außerdem ist spanner.backups.create erforderlich, um die Sicherungsressource zu erstellen. |
spanner.databases.drop |
Datenbank löschen. |
spanner.databases.get |
Metadaten einer Datenbank abrufen. |
spanner.databases.getDdl |
Schema einer Datenbank abrufen. |
spanner.databases.getIamPolicy |
IAM-Richtlinie einer Datenbank abrufen. |
spanner.databases.list |
Datenbanken auflisten. |
spanner.databases.read |
Daten über die Lese-API aus einer Datenbank auslesen. |
spanner.databases.select |
SQL-SELECT-Anweisung für eine Datenbank ausführen. |
spanner.databases.setIamPolicy |
IAM-Richtlinie einer Datenbank festlegen. |
spanner.databases.update |
Metadaten einer Datenbank aktualisieren. |
spanner.databases.updateDdl |
Schema einer Datenbank aktualisieren. |
spanner.databases.useDataBoost |
Verwenden Sie die Rechenressourcen von Spanner Data Boost, um instanzpartitionierte Abfragen zu verarbeiten. |
spanner.databases.useRoleBasedAccess |
Verwenden Sie die detaillierte Zugriffssteuerung. |
spanner.databases.write |
In eine Datenbank schreiben. |
Datenbankrollen
Die folgenden Berechtigungen gelten für Spanner-Datenbankrollen. Weitere Informationen finden Sie in den Datenbankreferenzen für REST- und RPC-APIs.
| Name der Berechtigung für die Datenbankrolle | Beschreibung |
|---|---|
spanner.databaseRoles.list |
Datenbankrollen auflisten. |
spanner.databaseRoles.use |
Verwenden Sie eine bestimmte Datenbankrolle. |
Datenbankvorgänge
Die folgenden Berechtigungen gelten für Spanner-Datenbankvorgänge. Weitere Informationen finden Sie in den Datenbankreferenzen für REST- und RPC-APIs.
| Name der Berechtigung für Datenbankvorgänge | Beschreibung |
|---|---|
spanner.databaseOperations.cancel |
Datenbankvorgang abbrechen. |
spanner.databaseOperations.get |
Bestimmten Datenbankvorgang abrufen. |
spanner.databaseOperations.list |
Datenbankvorgänge auflisten und Datenbankvorgänge wiederherstellen. |
Sicherungen
Die folgenden Berechtigungen gelten für Spanner-Sicherungen. Weitere Informationen finden Sie in den Sicherungsreferenzen für die REST- und RPC-APIs.
| Name der Sicherungsberechtigung | Beschreibung |
|---|---|
spanner.backups.create |
Eine Sicherung erstellen. Erfordert außerdem spanner.databases.createBackup für die Quelldatenbank. |
spanner.backups.delete |
Eine Sicherung löschen. |
spanner.backups.get |
Eine Sicherung abrufen. |
spanner.backups.getIamPolicy |
Rufen Sie die IAM-Richtlinie einer Sicherung ab. |
spanner.backups.list |
Sicherungen auflisten. |
spanner.backups.restoreDatabase |
Datenbank aus einer Sicherung wiederherstellen. Erfordert außerdem spanner.databases.create, um die wiederhergestellte Datenbank auf der Zielinstanz zu erstellen. |
spanner.backups.setIamPolicy |
Legen Sie die IAM-Richtlinie einer Sicherung fest. |
spanner.backups.update |
Eine Sicherung aktualisieren. |
Sicherungsvorgänge
Die folgenden Berechtigungen gelten für Spanner-Sicherungsvorgänge. Weitere Informationen finden Sie in den Datenbankreferenzen für REST- und RPC-APIs.
| Berechtigungsname für den Sicherungsvorgang | Beschreibung |
|---|---|
spanner.backupOperations.cancel |
Einen Sicherungsvorgang abbrechen. |
spanner.backupOperations.get |
Einen bestimmten Sicherungsvorgang abrufen. |
spanner.backupOperations.list |
Sicherungsvorgänge auflisten. |
Sicherungszeitpläne
Die folgenden Berechtigungen gelten für Spanner-Sicherungszeitpläne. Weitere Informationen finden Sie in den Datenbankreferenzen für die REST und RPC APIs.
| Name der Berechtigung für den Sicherungszeitplan | Beschreibung |
|---|---|
spanner.backupSchedules.create |
Sicherungszeitplan erstellen Erfordert außerdem spanner.databases.createBackup für die Quelldatenbank. |
spanner.backupSchedules.delete |
Sicherungszeitplan löschen |
spanner.backupSchedules.get |
Sicherungszeitplan abrufen. |
spanner.backupSchedules.list |
Sicherungszeitpläne auflisten. |
spanner.backupSchedules.update |
Sicherungszeitplan aktualisieren |
Sitzungen
Die folgenden Berechtigungen gelten für Spanner-Sitzungen. Weitere Informationen finden Sie in den Datenbankreferenzen für REST- und RPC-APIs.
| Name der Sitzungsberechtigung | Beschreibung |
|---|---|
spanner.sessions.create |
Sitzung erstellen. |
spanner.sessions.delete |
Sitzung löschen. |
spanner.sessions.get |
Sitzung abrufen. |
spanner.sessions.list |
Sitzungen auflisten. |
Vordefinierte Rollen
Eine vordefinierte Rolle ist ein Bündel aus einer oder mehreren Berechtigungen. Die vordefinierte Rolle roles/spanner.databaseUser enthält beispielsweise die Berechtigungen spanner.databases.read und spanner.databases.write. Es gibt zwei Arten von vordefinierten Rollen für Spanner:
- Personenrollen: Werden Nutzern oder Gruppen zugewiesen, damit sie Aktionen für die Ressourcen in Ihrem Projekt ausführen können.
- Computerbezogene Rollen: werden Dienstkonten erteilt, damit Computer, die unter diesen Dienstkonten ausgeführt werden, Aktionen für die Ressourcen in einem Projekt ausführen können.
In der folgenden Tabelle sind die vordefinierten IAM-Rollen für die Zugriffssteuerung aufgeführt, einschließlich einer Liste der Berechtigungen, die mit jeder Rolle verknüpft sind:
| Role | Permissions |
|---|---|
Cloud Spanner Admin( Has complete access to all Spanner resources in a Google Cloud project. A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Editor( Editor role for Cloud Spanner |
|
Cloud Spanner Viewer( A principal with this role can:
For example, you can combine this role with the This role is recommended at the Google Cloud project level for users interacting with Cloud Spanner resources in the Google Cloud console. Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Backup Admin( A principal with this role can:
This role cannot restore a database from a backup. Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Backup Writer( This role is intended to be used by scripts that automate backup creation. A principal with this role can create backups, but cannot update or delete them. Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Database Admin( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Database Reader( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Database Reader with DataBoost( Includes all permissions in the spanner.databaseReader role enabling access to read and/or query a Cloud Spanner database using instance resources, as well as the permission to access the database with Data Boost, a fully managed serverless service that provides independent compute resources. Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Database Role User( In conjunction with the IAM role Cloud Spanner Fine-grained Access User, grants permissions to individual Spanner database roles. Add a condition for each desired Spanner database role that includes the resource type of `spanner.googleapis.com/DatabaseRole` and the resource name ending with `/YOUR_SPANNER_DATABASE_ROLE`. Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Database User( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Fine-grained Access User( Grants permissions to use Spanner's fine-grained access control framework. To grant access to specific database roles, also add the `roles/spanner.databaseRoleUser` IAM role and its necessary conditions. Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Database Graph Intelligence features user( Access to Graph Intelligence features. |
|
Cloud Spanner Restore Admin( A principal with this role can restore databases from backups. If you need to restore a backup to a different instance, apply this role at the project level or to both instances. This role cannot create backups. Lowest-level resources where you can grant this role:
|
|
Service agent roles
Service agent roles should only be granted to service agents.
| Role | Permissions |
|---|---|
Cloud Spanner API Service Agent( Cloud Spanner API Service Agent |
|
Einfache Rollen
Einfache Rollen sind Rollen auf Projektebene aus der Zeit vor IAM. Weitere Informationen finden Sie unter Einfache Rollen.
Obwohl Spanner die folgenden einfachen Rollen unterstützt, sollten Sie nach Möglichkeit eine der oben aufgeführten vordefinierten Rollen verwenden. Einfache Rollen umfassen umfassende Berechtigungen, die für alle Ihre Google Cloud -Ressourcen gelten. Die vordefinierten Rollen von Spanner enthalten dagegen detaillierte Berechtigungen, die nur für Spanner gelten.
| Einfache Rolle | Beschreibung |
|---|---|
roles/editor |
Kann alles, was roles/viewer kann. Kann auch Instanzen und Datenbanken erstellen und Daten in eine Datenbank schreiben. |
roles/owner |
Kann alles, was roles/editor tun. Kann auch den Zugriff auf Datenbanken und Instanzen ändern. |
roles/viewer |
Kann die Metadaten von Schemas und Instanzen auflisten und abrufen. Kann auch über SQL Daten aus einer Datenbank auslesen und abfragen. |
Benutzerdefinierte Rollen
Wenn die vordefinierten Rollen für Spanner Ihren geschäftlichen Anforderungen nicht genügen, können Sie eigene benutzerdefinierte Rollen mit von Ihnen festgelegten Berechtigungen definieren.
Bevor Sie eine benutzerdefinierte Rolle erstellen, müssen Sie die Aufgaben identifizieren, die Sie ausführen müssen. Anschließend können Sie die Berechtigungen ermitteln, die für jede Aufgabe erforderlich sind, und diese Berechtigungen der benutzerdefinierten Rolle hinzufügen.
Benutzerdefinierte Rollen für Dienstkontoaufgaben
Für die meisten Aufgaben ist es offensichtlich, welche Berechtigungen Sie Ihrer benutzerdefinierten Rolle hinzufügen müssen. Wenn Sie beispielsweise möchten, dass Ihr Dienstkonto eine Datenbank erstellen kann, fügen Sie der benutzerdefinierten Rolle die Berechtigung spanner.databases.create hinzu.
Wenn Sie jedoch Daten in einer Spanner-Tabelle lesen oder schreiben, müssen Sie Ihrer benutzerdefinierten Rolle mehrere verschiedene Berechtigungen hinzufügen. Die folgende Tabelle zeigt, welche Berechtigungen zum Lesen und Schreiben von Daten benötigt werden.
| Dienstkontoaufgabe | Erforderliche Berechtigungen |
|---|---|
| Sicherung erstellen | spanner.backups.createspanner.databases.createBackup |
| Daten lesen | spanner.databases.selectspanner.sessions.createspanner.sessions.delete |
| Eine Datenbank wiederherstellen | spanner.backups.restoreDatabasespanner.databases.create |
| Daten einfügen, aktualisieren oder löschen | spanner.databases.beginOrRollbackReadWriteTransactionspanner.sessions.createspanner.sessions.deletespanner.databases.write |
Benutzerdefinierte Rollen für Aufgaben in der Google Cloud Console
Wenn Sie die Liste der Berechtigungen ermitteln möchten, die Sie für eine bestimmte Aufgabe in derGoogle Cloud Console benötigen, bestimmen Sie den Workflow für diese Aufgabe und stellen die Berechtigungen für diesen Workflow zusammen. Wenn Sie sich beispielsweise die Daten in einer Tabelle ansehen möchten, gehen Sie in der Google Cloud Console so vor:
| Schritt | Berechtigungen |
|---|---|
| 1. Auf das Projekt zugreifen | resourcemanager.projects.get |
| 2. Liste der Instanzen aufrufen | spanner.instances.list |
| 3. Instanz auswählen | spanner.instances.get |
| 4. Liste der Datenbanken aufrufen | spanner.databases.list |
| 5. Datenbank und Tabelle auswählen | spanner.databases.getDdl |
| 6. Daten in einer Tabelle aufrufen | spanner.databases.select, spanner.sessions.create, spanner.sessions.delete |
In diesem Beispiel benötigen Sie folgende Berechtigungen:
resourcemanager.projects.getspanner.databases.getDdlspanner.databases.listspanner.databases.selectspanner.instances.getspanner.instances.listspanner.sessions.createspanner.sessions.delete
In der folgenden Tabelle sind die Berechtigungen aufgeführt, die für Aktionen in derGoogle Cloud Console erforderlich sind.
| Berechtigungen | Aktion |
|---|---|
spanner.databases.setIamPolicy |
Hauptkonten auf dem Tab "Berechtigungen" der Seite "Datenbankdetails" einfügen |
spanner.instances.setIamPolicy |
Hauptkonten auf dem Tab "Berechtigungen" der Seite "Instanz" einfügen |
spanner.backups.createspanner.databases.createBackupspanner.databases.list1spanner.backupOperations.list1 |
Sicherung erstellen |
spanner.backupSchedules.createspanner.databases.createBackup |
Sicherungszeitplan erstellen |
spanner.databases.create |
Datenbank erstellen |
spanner.instancePartitions.listspanner.instancePartitionOperations.getspanner.instancePartitions.create |
Instanzpartition erstellen |
spanner.databaseOperations.getspanner.databaseOperations.listspanner.databases.updateDdl |
Tabelle erstellen Tabellenschema aktualisieren |
spanner.instanceConfigs.listspanner.instanceOperations.getspanner.instances.create |
Instanz erstellen |
spanner.backups.delete |
Sicherung löschen |
spanner.backupSchedules.delete |
Sicherungszeitplan löschen |
spanner.databases.drop |
Datenbank löschen |
spanner.instancePartitions.delete |
Instanzpartition löschen |
spanner.instances.delete |
Instanz löschen |
spanner.instancePartitionOperations.getspanner.instancePartitions.update |
Instanzpartition ändern |
spanner.instanceOperations.getspanner.instances.update |
Instanz ändern |
spanner.databases.beginOrRollbackReadWriteTransactionspanner.databases.selectspanner.databases.writespanner.sessions.createspanner.sessions.delete |
Daten in einer Tabelle ändern |
spanner.instanceConfigs.listspanner.instances.getspanner.backups.getspanner.backups.restoreDatabasespanner.instances.listspanner.databases.create |
Datenbank aus einer Sicherung wiederherstellen |
spanner.databases.getspanner.databases.getDdl |
Datenbank aus der Datenbankliste auswählen und das Schema auf der Seite "Datenbankdetails" aufrufen |
spanner.instances.get |
Instanz aus der Instanzliste auswählen, um die Seite "Instanzdetails" aufzurufen |
spanner.backups.update |
Sicherung aktualisieren |
spanner.backupSchedules.update |
Sicherungszeitplan aktualisieren |
spanner.databases.selectspanner.sessions.createspanner.sessions.delete |
Daten auf dem Tab „Daten“ der Datenbank-Detailseite ansehen Abfrage erstellen und ausführen |
spanner.backups.listspanner.backups.get |
Seite „Sicherung/Wiederherstellung“ aufrufen |
monitoring.metricDescriptors.getmonitoring.metricDescriptors.listmonitoring.timeSeries.listspanner.instances.get |
Grafiken auf dem Tab "Überwachen" der Seite "Instanzdetails" oder der Seite "Datenbankdetails" aufrufen |
spanner.backupOperations.list |
Liste der Sicherungsvorgänge aufrufen |
spanner.databases.list |
Liste der Datenbanken auf der Seite "Instanzdetails" aufrufen |
resourcemanager.projects.getspanner.instances.list |
Liste der Instanzen auf der Seite "Instanzen" aufrufen |
spanner.databaseOperations.list |
Liste der Wiederherstellungsvorgänge anzeigen |
spanner.databases.getIamPolicy |
Liste auf dem Tab "Berechtigungen" der Seite "Datenbankdetails" aufrufen |
spanner.instances.getIamPolicy |
Liste auf dem Tab "Berechtigungen" der Seite "Instanz" aufrufen |
Spanner-IAM-Richtlinienverwaltung
Sie können IAM-Richtlinien mithilfe der REST- oder RPC-APIs für Spanner-Instanz-, Datenbank- und Sicherungsressourcen abrufen, festlegen und testen.
Instanzen
| REST-API | RPC API |
|---|---|
projects.instances.getIamPolicy |
GetIamPolicy |
projects.instances.setIamPolicy |
SetIamPolicy |
projects.instances.testIamPermissions |
TestIamPermissions |
Datenbanken
| REST-API | RPC API |
|---|---|
projects.instances.databases.getIamPolicy |
GetIamPolicy |
projects.instances.databases.setIamPolicy |
SetIamPolicy |
projects.instances.databases.testIamPermissions |
TestIamPermissions |
Sicherungen
| REST API | RPC API |
|---|---|
projects.instances.backups.getIamPolicy |
GetIamPolicy |
projects.instances.backups.setIamPolicy |
SetIamPolicy |
projects.instances.backups.testIamPermissions |
TestIamPermissions |