Mit der Identitäts- und Zugriffsverwaltung (IAM) können Sie den Nutzer- und Gruppenzugriff auf Spanner-Ressourcen auf Projekt-, Spanner-Instanz- und Spanner-Datenbankebene steuern. Sie können beispielsweise angeben, dass ein Nutzer uneingeschränkten Zugriff auf eine bestimmte Datenbank in einer bestimmten Instanz in einem Projekt hat, jedoch keine Instanzen in dem Projekt erstellen, ändern oder löschen kann. Mithilfe der Zugriffssteuerung mit IAM können Sie einem Nutzer oder einer Gruppe eine Berechtigung gewähren, 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 von IAM und seinen Funktionen finden Sie im Entwicklerhandbuch zu Identity and Access Management. Besonders im Abschnitt IAM-Richtlinien verwalten finden Sie relevante Informationen.
Berechtigungen
Mit Berechtigungen können Nutzer bestimmte Aktionen für Spanner-Ressourcen ausführen. Mit der Berechtigung spanner.databases.read
kann ein Nutzer beispielsweise mithilfe der Lese-API von Spanner aus einer Datenbank lesen, während er mit spanner.databases.select
eine SQL-SELECT-Anweisung für eine Datenbank ausführen kann. 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 Spanner verknüpft sind.
Instanzkonfigurationen
Die folgenden Berechtigungen gelten für Spanner-Instanzkonfigurationen. Weitere Informationen finden Sie in den Referenzen zur Instanzkonfiguration für die REST API und die RPC API.
Name der Berechtigung für Instanzkonfigurationen | Beschreibung |
---|---|
spanner.instanceConfigs.create |
Erstellen Sie eine benutzerdefinierte Instanzkonfiguration. |
spanner.instanceConfigs.delete |
Löschen Sie eine benutzerdefinierte Instanzkonfiguration. |
spanner.instanceConfigs.get |
Instanzkonfiguration abrufen. |
spanner.instanceConfigs.list |
Instanzkonfigurationen auflisten. |
spanner.instanceConfigs.update |
Benutzerdefinierte Instanzkonfiguration aktualisieren. |
Vorgänge zur Instanzkonfiguration
Die folgenden Berechtigungen gelten für Vorgänge zum Konfigurieren von Spanner-Instanzen. Weitere Informationen finden Sie in den Instanzreferenzen für die REST API und die RPC API.
Name der Berechtigung für den Instanzkonfigurationsvorgang | Beschreibung |
---|---|
spanner.instanceConfigOperations.list |
Instanzkonfigurationsvorgänge auflisten. |
spanner.instanceConfigOperations.get |
Einen bestimmten Instanzkonfigurationsvorgang abrufen. |
spanner.instanceConfigOperations.cancel |
Instanzkonfigurationsvorgang abbrechen. |
spanner.instanceConfigOperations.delete |
Instanzkonfigurationsvorgang löschen. |
Instanzen
Die folgenden Berechtigungen gelten für Spanner-Instanzen. Weitere Informationen finden Sie in den Instanzreferenzen für die REST API und die RPC API.
Name der Instanzberechtigung | Beschreibung |
---|---|
spanner.instances.create |
Instanz erstellen. |
spanner.instances.list |
Instanzen auflisten. |
spanner.instances.get |
Konfiguration einer bestimmten Instanz abrufen. |
spanner.instances.getIamPolicy |
IAM-Richtlinie einer Instanz abrufen. |
spanner.instances.update |
Instanz aktualisieren. |
spanner.instances.setIamPolicy |
IAM-Richtlinie einer Instanz festlegen. |
spanner.instances.delete |
Instanz löschen. |
Instanzvorgänge
Die folgenden Berechtigungen gelten für Spanner-Instanzvorgänge. Weitere Informationen finden Sie in den Instanzreferenzen für die REST API und die RPC API.
Name der Berechtigung für Instanzvorgänge | Beschreibung |
---|---|
spanner.instanceOperations.list |
Instanzvorgänge auflisten. |
spanner.instanceOperations.get |
Bestimmten Instanzvorgang abrufen. |
spanner.instanceOperations.cancel |
Instanzvorgang abbrechen. |
spanner.instanceOperations.delete |
Instanzvorgang löschen. |
Datenbanken
Die folgenden Berechtigungen gelten für Spanner-Datenbanken. Weitere Informationen finden Sie in den Datenbankreferenzen für die REST API und die RPC API.
Name der Datenbankberechtigung | Beschreibung |
---|---|
spanner.databases.beginPartitionedDmlTransaction |
Partitionierte DML-Anweisung (Partitioned Data Manipulation Language) ausführen |
spanner.databases.create |
Datenbank erstellen |
spanner.databases.createBackup |
Erstellen Sie eine Sicherung aus der Datenbank. Erfordert auch spanner.backups.create , um die Sicherungsressource zu erstellen. |
spanner.databases.list |
Datenbanken auflisten. |
spanner.databases.update |
Metadaten einer Datenbank aktualisieren. |
spanner.databases.updateDdl |
Schema einer Datenbank aktualisieren. |
spanner.databases.get |
Metadaten einer Datenbank abrufen. |
spanner.databases.getDdl |
Schema einer Datenbank abrufen. |
spanner.databases.getIamPolicy |
IAM-Richtlinie einer Datenbank abrufen. |
spanner.databases.setIamPolicy |
IAM-Richtlinie einer Datenbank festlegen. |
spanner.databases.beginReadOnlyTransaction |
Schreibgeschützte Transaktion für eine Spanner-Datenbank starten. |
spanner.databases.beginOrRollbackReadWriteTransaction |
Lese-Schreib-Transaktion für eine Spanner-Datenbank starten oder ein Rollback dafür durchführen. |
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.write |
In eine Datenbank schreiben. |
spanner.databases.drop |
Datenbank löschen. |
spanner.databases.useRoleBasedAccess |
Verwenden Sie die detaillierte Zugriffssteuerung. |
spanner.databases.useDataBoost |
Verwenden Sie die Rechenressourcen von Spanner Data Boost, um partitionierte Abfragen zu verarbeiten. |
Datenbankrollen
Die folgenden Berechtigungen gelten für Spanner-Datenbankrollen. Weitere Informationen finden Sie in den Datenbankreferenzen für die REST API und die RPC API.
Name der Berechtigung für die Datenbankrolle | Beschreibung |
---|---|
spanner.databaseRoles.list |
Datenbankrollen auflisten. |
spanner.databaseRoles.use |
Verwenden Sie eine angegebene Datenbankrolle. |
Datenbankvorgänge
Die folgenden Berechtigungen gelten für Spanner-Datenbankvorgänge. Weitere Informationen finden Sie in den Datenbankreferenzen für die REST API und die RPC API.
Name der Berechtigung für Datenbankvorgänge | Beschreibung |
---|---|
spanner.databaseOperations.list |
Datenbankvorgänge auflisten und Datenbankvorgänge wiederherstellen. |
spanner.databaseOperations.get |
Bestimmten Datenbankvorgang abrufen. |
spanner.databaseOperations.cancel |
Datenbankvorgang abbrechen. |
Sicherungen
Die folgenden Berechtigungen gelten für Spanner-Sicherungen. Weitere Informationen finden Sie in den Sicherungsreferenzen für die REST API und die RPC API.
Name der Sicherungsberechtigung | Beschreibung |
---|---|
spanner.backups.create |
Eine Sicherung erstellen. Erfordert außerdem spanner.databases.createBackup für die Quelldatenbank. |
spanner.backups.get |
Eine Sicherung abrufen. |
spanner.backups.update |
Eine Sicherung aktualisieren. |
spanner.backups.delete |
Eine Sicherung löschen. |
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.getIamPolicy |
Rufen Sie die IAM-Richtlinie einer Sicherung ab. |
spanner.backups.setIamPolicy |
Legen Sie die IAM-Richtlinie einer Sicherung fest. |
Sicherungsvorgänge
Die folgenden Berechtigungen gelten für Spanner-Sicherungsvorgänge. Weitere Informationen finden Sie in den Datenbankreferenzen für die REST API und die RPC API.
Berechtigungsname für den Sicherungsvorgang | Beschreibung |
---|---|
spanner.backupOperations.list |
Sicherungsvorgänge auflisten. |
spanner.backupOperations.get |
Einen bestimmten Sicherungsvorgang abrufen. |
spanner.backupOperations.cancel |
Einen Sicherungsvorgang abbrechen. |
Sitzungen
Die folgenden Berechtigungen gelten für Spanner-Sitzungen. Weitere Informationen finden Sie in den Datenbankreferenzen für die REST API und die RPC API.
Name der Sitzungsberechtigung | Beschreibung |
---|---|
spanner.sessions.create |
Sitzung erstellen. |
spanner.sessions.get |
Sitzung abrufen. |
spanner.sessions.delete |
Sitzung löschen. |
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
. Für Spanner gibt es zwei Arten vordefinierter Rollen:
- Personenbezogene Rollen: werden Nutzern oder Gruppen erteilt, damit diese Aktionen für die Ressourcen in einem 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 ist die Zugriffssteuerung mit vordefinierten IAM-Rollen 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:
|
monitoring.timeSeries.list resourcemanager.projects.get resourcemanager.projects.list spanner.*
|
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:
|
monitoring.timeSeries.list resourcemanager.projects.get resourcemanager.projects.list spanner.backupOperations.*
spanner.backups.copy spanner.backups.create spanner.backups.delete spanner.backups.get spanner.backups.getIamPolicy spanner.backups.list spanner.backups.setIamPolicy spanner.backups.update spanner.databases.createBackup spanner.databases.get spanner.databases.list spanner. spanner. spanner.instances.get spanner.instances.list spanner. spanner. |
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:
|
spanner.backupOperations.get spanner.backupOperations.list spanner.backups.copy spanner.backups.create spanner.backups.get spanner.backups.list spanner.databases.createBackup spanner.databases.get spanner.databases.list spanner.instances.get |
Cloud Spanner Database Admin( A principal with this role can:
Lowest-level resources where you can grant this role:
|
monitoring.timeSeries.list resourcemanager.projects.get resourcemanager.projects.list spanner.databaseOperations.*
spanner.databaseRoles.*
spanner. spanner. spanner. spanner.databases.create spanner.databases.drop spanner.databases.get spanner.databases.getDdl spanner.databases.getIamPolicy spanner.databases.list spanner. spanner. spanner.databases.read spanner.databases.select spanner.databases.setIamPolicy spanner.databases.update spanner.databases.updateDdl spanner.databases.updateTag spanner.databases.useDataBoost spanner. spanner.databases.write spanner. spanner. spanner.instances.get spanner.instances.getIamPolicy spanner.instances.list spanner. spanner. spanner.sessions.*
|
Cloud Spanner Database Reader( A principal with this role can:
Lowest-level resources where you can grant this role:
|
spanner. spanner.databases.getDdl spanner. spanner. spanner.databases.read spanner.databases.select spanner.instances.get spanner.sessions.*
|
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`. |
spanner.databaseRoles.use |
Cloud Spanner Database User( A principal with this role can:
Lowest-level resources where you can grant this role:
|
spanner.databaseOperations.*
spanner. spanner. spanner. spanner.databases.getDdl spanner. spanner. spanner.databases.read spanner.databases.select spanner.databases.updateDdl spanner.databases.updateTag spanner.databases.write spanner.instances.get spanner.sessions.*
|
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. |
spanner.databaseRoles.list spanner. |
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:
|
monitoring.timeSeries.list resourcemanager.projects.get resourcemanager.projects.list spanner.backups.get spanner.backups.list spanner. spanner. spanner.databaseOperations.get spanner. spanner.databases.create spanner.databases.get spanner.databases.list spanner. spanner. spanner.instances.get spanner.instances.list spanner. 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:
|
monitoring.timeSeries.list resourcemanager.projects.get resourcemanager.projects.list spanner.databases.list spanner.instanceConfigs.get spanner.instanceConfigs.list spanner.instances.get spanner.instances.list spanner. spanner. |
Einfache Rollen
Einfache Rollen sind Rollen auf Projektebene aus der Zeit vor IAM. Weitere Informationen finden Sie unter Einfache Rollen.
Spanner unterstützt zwar die folgenden einfachen Rollen, aber Sie sollten nach Möglichkeit eine der vordefinierten Rollen verwenden, die oben aufgeführt sind. Einfache Rollen umfassen umfassende Berechtigungen, die für alle Ihre Google Cloud-Ressourcen gelten. Im Gegensatz dazu enthalten die vordefinierten Rollen von Spanner detaillierte Berechtigungen, die nur für Spanner gelten.
Einfache Rolle | Beschreibung |
---|---|
roles/viewer |
Kann die Metadaten von Schemas und Instanzen auflisten und abrufen. Kann auch über SQL Daten aus einer Datenbank auslesen und abfragen. |
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. |
Benutzerdefinierte Rollen
Wenn die vordefinierten Rollen für Spanner Ihren Geschäftsanforderungen nicht gerecht werden, können Sie eigene benutzerdefinierte Rollen mit den von Ihnen angegebenen Berechtigungen definieren.
Bevor Sie eine benutzerdefinierte Rolle erstellen, müssen Sie festlegen, welche Aufgaben damit auszuführen sind. Anschließend bestimmen Sie die Berechtigungen, die für die einzelnen Aufgaben erforderlich sind, und nehmen diese in die benutzerdefinierte Rolle auf.
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 |
---|---|
Daten lesen |
spanner.databases.select
|
Daten einfügen, aktualisieren oder löschen |
spanner.databases.beginOrRollbackReadWriteTransaction
|
Sicherung erstellen |
spanner.backups.create
|
Eine Datenbank wiederherstellen |
spanner.databases.create
|
Benutzerdefinierte Rollen für Aufgaben in der Google Cloud Console
Um die Liste der Berechtigungen zu ermitteln, die Sie für eine bestimmte Aufgabe in der Google Cloud Console benötigen, legen Sie den Workflow für diese Aufgabe fest und stellen die Berechtigungen für diesen Workflow zusammen. Wenn Sie beispielsweise die Daten in einer Tabelle ansehen möchten, führen Sie in der Google Cloud Console die folgenden Schritte aus:
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.get
spanner.databases.getDdl
spanner.databases.list
spanner.databases.select
spanner.instances.get
spanner.instances.list
spanner.sessions.create
spanner.sessions.delete
In der folgenden Tabelle sind die Berechtigungen aufgeführt, die für Aktionen in der Google Cloud Console erforderlich sind.
Aktion | Berechtigungen |
---|---|
Liste der Instanzen auf der Seite "Instanzen" aufrufen |
|
Liste auf dem Tab "Berechtigungen" der Seite "Instanz" aufrufen |
|
Hauptkonten auf dem Tab "Berechtigungen" der Seite "Instanz" einfügen |
|
Instanz aus der Instanzliste auswählen, um die Seite "Instanzdetails" aufzurufen |
|
Instanz erstellen |
|
Instanz löschen |
|
Instanz ändern |
|
Grafiken auf dem Tab "Überwachen" der Seite "Instanzdetails" oder der Seite "Datenbankdetails" aufrufen |
|
Liste der Datenbanken auf der Seite "Instanzdetails" aufrufen |
|
Liste auf dem Tab "Berechtigungen" der Seite "Datenbankdetails" aufrufen |
|
Hauptkonten auf dem Tab "Berechtigungen" der Seite "Datenbankdetails" einfügen |
|
Datenbank aus der Datenbankliste auswählen und das Schema auf der Seite "Datenbankdetails" aufrufen |
|
Datenbank erstellen |
|
Datenbank löschen |
|
Tabelle erstellen Tabellenschema aktualisieren |
|
Daten auf dem Tab "Daten" der Seite "Datenbankdetails" aufrufen Abfrage erstellen und ausführen |
|
Daten in einer Tabelle ändern |
|
Seite „Sicherung/Wiederherstellung“ aufrufen |
|
Liste der Sicherungsvorgänge aufrufen |
|
Liste der Wiederherstellungsvorgänge anzeigen |
|
Sicherung erstellen |
|
Datenbank aus einer Sicherung wiederherstellen |
|
Sicherung aktualisieren |
|
Sicherung löschen |
|
Spanner-IAM-Richtlinienverwaltung
Sie können IAM-Richtlinien mit der REST API oder der RPC API 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 |
Nächste Schritte
- Identitäts- und Zugriffsverwaltung
- IAM-Rollen für eine Spanner-Datenbank, -Instanz oder ein Google Cloud-Projekt anwenden
- Zugriff auf Google Cloud-Ressourcen, einschließlich Spanner, über das Internet steuern