Projektzugriffssteuerung

Auf dieser Seite wird beschrieben, wie Sie den Cloud SQL-Projektzugriff und Berechtigungen für Identitäts- und Zugriffsverwaltung (Identity and Access Management – IAM) steuern können.

Übersicht

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 unerwünschten Zugriff auf andere Ressourcen zu verhindern. Auf dieser Seite werden die IAM-Rollen und Berechtigungen für Cloud SQL beschrieben. Eine detaillierte Beschreibung von Google Cloud IAM finden Sie in der IAM-Dokumentation.

Cloud SQL bietet eine Reihe vordefinierter Rollen, mit denen Sie den Zugriff auf Ihre Cloud SQL-Ressourcen steuern können. Sie können auch eigene benutzerdefinierte Rollen erstellen, wenn die vordefinierten Rollen keine Informationen zu den benötigten Gruppen von Berechtigungen enthalten. Zusätzlich stehen Ihnen die einfachen Legacy-Rollen (Bearbeiter, Betrachter und Inhaber) nach wie vor zur Verfügung. Sie bieten aber nicht die gleiche präzisen Steuerungsmöglichkeiten wie die Cloud SQL-Rollen. Insbesondere ermöglichen die einfachen Rollen Zugriff auf Ressourcen in Google Cloud insgesamt und nicht nur für Cloud SQL. Weitere Informationen zu einfachen Rollen finden Sie unter Einfache Rollen.

Sie können eine IAM-Richtlinie auf jeder Ebene der Ressourcenhierarchie festlegen: der Organisationsebene, der Ordnerebene, der Projektebene oder der Ressourcenebene. Ressourcen übernehmen die Richtlinien aller ihrer übergeordneten Ressourcen.

Cloud SQL unterstützt auch IAM Conditions. Damit können Rollen und Berechtigungen auf Ebene einzelner Cloud SQL-Ressourcen wie Instanzen in einem Projekt verfeinert werden. Sie können eine Bedingung als Attribut einer IAM-Richtlinienbindung hinzufügen, um eine Teilmenge der Instanzen anzugeben, auf die Hauptkonten zugreifen können.

Mit IAM Conditions können Sie Rollen anhand einer Vielzahl von Attributen zuweisen. Sie können damit beispielsweise den Zugriff nur zu bestimmten Datumsangaben und Uhrzeiten zulassen oder nur auf Cloud SQL-Ressourcen mit bestimmten Namen zugreifen. Auf dieser Seite finden Sie einige Beispiele für die Verwendung von IAM Conditions mit Cloud SQL. Weitere Informationen zu IAM Conditions finden Sie auf der Seite Übersicht über IAM Conditions.

Berechtigungen und Rollen

In diesem Abschnitt werden die Berechtigungen und Rollen zusammengefasst, die Cloud SQL unterstützt.

Vordefinierte Rollen

Cloud SQL bietet einige vordefinierte Rollen, mit denen Sie den Hauptkonten detailliertere Berechtigungen gewähren können. Die Rolle, die Sie einem Hauptkonto zuweisen, legt fest, welche Aktionen mit dem Hauptkonto ausgeführt werden können. Hauptkonten können Einzelpersonen, Gruppen oder Dienstkonten sein.

Sie können demselben Hauptkonto mehrere Rollen zuweisen und die einem Hauptkonto zugewiesenen Rollen jederzeit ändern, sofern Sie selbst die Berechtigungen dazu haben.

Die Rollen mit höheren Berechtigungen beinhalten die Rollen mit niedrigeren Berechtigungen. Beispielsweise enthält die Rolle "Cloud SQL-Bearbeiter" alle Berechtigungen der Rolle "Cloud SQL-Betrachter" sowie die zusätzlichen Berechtigungen der Rolle "Cloud SQL-Bearbeiter". Entsprechend enthält die Rolle „Cloud SQL-Administrator“ alle Berechtigungen der Rolle „Cloud SQL-Bearbeiter“ sowie zusätzliche Berechtigungen.

Die einfachen Rollen (Inhaber, Bearbeiter, Betrachter) stellen Berechtigungen in Google Cloud insgesamt bereit. Die Rollen für Cloud SQL bieten nur Cloud SQL-Berechtigungen. Dies gilt nicht für die folgenden Google Cloud-Berechtigungen, die für die allgemeine Google Cloud-Nutzung erforderlich sind:

  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.use

In der folgenden Tabelle sind die vordefinierten Rollen, die für Cloud SQL benötigt werden, zusammen mit den jeweiligen Cloud SQL-Berechtigungen aufgelistet:

Rollenname
Beschreibung
Cloud SQL-Berechtigungen
roles/owner
Inhaber (Legacy-Rolle)
Uneingeschränkter Zugriff auf und Kontrolle über alle Google Cloud-Ressourcen; Verwaltung des Nutzerzugriffs

cloudsql.*
roles/editor
Bearbeiter (Legacy-Rolle)
Lese- und Schreibzugriff auf alle Google Cloud- und Cloud SQL-Ressourcen; vollständige Kontrolle mit Ausnahme der Möglichkeit, Berechtigungen zu ändern

Alle cloudsql-Berechtigungen außer für
cloudsql.*.getIamPolicy
cloudsql.*.setIamPolicy
roles/viewer
Betrachter (Legacy-Rolle)
Lesezugriff auf alle Google Cloud-Ressourcen, einschließlich Cloud SQL-Ressourcen

cloudsql.*.export
cloudsql.*.get
cloudsql.*.list
roles/cloudsql.admin
Cloud SQL-Administrator
Uneingeschränkte Kontrolle über Cloud SQL-Ressourcen

cloudsql.*
recommender.cloudsqlInstanceDiskUsageTrendInsights.*
recommender.cloudsqlInstanceOutOfDiskRecommendations.* recommender.cloudsqlInstanceDiskUsageTrendInsights.*
recommender.cloudsqlInstanceOutOfDiskRecommendations.* recommender.cloudsqlInstanceDiskUsageTrendInsights.*
recommender.cloudsqlInstanceOutOfDiskRecommendations.*
recommender.cloudsqlInstanceCpuUsageInsights.*
recommender.cloudsqlInstanceMemoryUsageInsights.*
recommender.cloudsqlOverprovisionedInstanceRecommendations.*
recommender.cloudsqlInstanceActivityInsights.*
recommender.cloudsqlIdleInstanceRecommendations.*
roles/cloudsql.editor
Cloud SQL-Bearbeiter
Verwaltung von Cloud SQL-Ressourcen; Keine Möglichkeit, Berechtigungen zu sehen oder zu ändern sowie Nutzer oder sslCerts zu ändern. Weder die Berechtigung, Daten zu importieren oder von einer Sicherung wiederherzustellen, noch Instanzen zu klonen, zu löschen oder hochzustufen Keine Möglichkeit, Replikate zu starten oder zu stoppen. Keine Möglichkeit, Datenbanken, Replikate oder Sicherungen zu löschen.

cloudsql.instances.addServerCa
cloudsql.instances.connect
cloudsql.instances.export
cloudsql.instances.failover
cloudsql.instances.get
cloudsql.instances.list
cloudsql.instances.listServerCas
cloudsql.instances.restart
cloudsql.instances.rotateServerCa
cloudsql.instances.truncateLog
cloudsql.instances.update
cloudsql.databases.create
cloudsql.databases.get
cloudsql.databases.list
cloudsql.databases.update
cloudsql.backupRuns.create
cloudsql.backupRuns.get
cloudsql.backupRuns.list
cloudsql.sslCerts.get
cloudsql.sslCerts.list
cloudsql.users.list
recommender.cloudsqlInstanceDiskUsageTrendInsights.get
recommender.cloudsqlInstanceDiskUsageTrendInsights.list
recommender.cloudsqlInstanceDiskUsageTrendInsights.update
recommender.cloudsqlInstanceOutOfDiskRecommendations.get
recommender.cloudsqlInstanceOutOfDiskRecommendations.list
recommender.cloudsqlInstanceOutOfDiskRecommendations.update
recommender.cloudsqlInstanceCpuUsageInsights.get
recommender.cloudsqlInstanceCpuUsageInsights.list
recommender.cloudsqlInstanceCpuUsageInsights.update
recommender.cloudsqlInstanceMemoryUsageInsights.get
recommender.cloudsqlInstanceMemoryUsageInsights.list
recommender.cloudsqlInstanceMemoryUsageInsights.update
recommender.cloudsqlOverprovisionedInstanceRecommendations.get
recommender.cloudsqlOverprovisionedInstanceRecommendations.list
recommender.cloudsqlOverprovisionedInstanceRecommendations.update
recommender.cloudsqlInstanceActivityInsights.get
recommender.cloudsqlInstanceActivityInsights.list
recommender.cloudsqlInstanceActivityInsights.update
recommender.cloudsqlIdleInstanceRecommendations.get
recommender.cloudsqlIdleInstanceRecommendations.list
recommender.cloudsqlIdleInstanceRecommendations.update
roles/cloudsql.viewer
Cloud SQL-Betrachter
Schreibgeschützter Zugriff auf alle Cloud SQL-Ressourcen

cloudsql.*.export
cloudsql.*.get
cloudsql.*.list
cloudsql.instances.listServerCa
recommender.cloudsqlInstanceOutOfDiskRecommendations.get
recommender.cloudsqlInstanceOutOfDiskRecommendations.list
recommender.cloudsqlInstanceDiskUsageTrendInsights.get
recommender.cloudsqlInstanceDiskUsageTrendInsights.list
recommender.cloudsqlInstanceCpuUsageInsights.get
recommender.cloudsqlInstanceCpuUsageInsights.list
recommender.cloudsqlInstanceMemoryUsageInsights.get
recommender.cloudsqlInstanceMemoryUsageInsights.list
recommender.cloudsqlOverprovisionedInstanceRecommendations.get
recommender.cloudsqlOverprovisionedInstanceRecommendations.list
recommender.cloudsqlInstanceActivityInsights.get
recommender.cloudsqlInstanceActivityInsights.list
recommender.cloudsqlIdleInstanceRecommendations.get
recommender.cloudsqlIdleInstanceRecommendations.list
roles/cloudsql.client
Cloud SQL Client
Verbindungszugriff auf Cloud SQL-Instanzen von App Engine und dem Cloud SQL Auth-Proxy. Nicht für den Zugriff über IP-Adressen auf eine Instanz erforderlich.

cloudsql.instances.connect
cloudsql.instances.get
roles/cloudsql.instanceUser
Cloud SQL-Instanznutzer
Rolle für den Zugriff auf eine Cloud SQL-Instanz.

cloudsql.instances.get
cloudsql.instances.login

Benutzerdefinierte Rollen

Wenn die vordefinierten Rollen Ihren speziellen Geschäftsanforderungen nicht gerecht werden, können Sie Ihre eigenen benutzerdefinierten Rollen mit Berechtigungen definieren, die Sie angeben. IAM bietet benutzerdefinierte Rollen an, um dies zu unterstützen.

Wenn Sie benutzerdefinierte Rollen für Cloud SQL erstellen, müssen Sie bei der Angabe von cloudsql.instances.list oder cloudsql.instances.get darauf achten, dass beide Berechtigungen angegeben werden. Andernfalls funktioniert die Cloud Console für Cloud SQL nicht ordnungsgemäß.

Erforderliche Berechtigungen für allgemeine Aufgaben in der Cloud Console

Aufgabe Zusätzliche erforderliche Berechtigungen
Seite mit der Instanzliste aufrufen cloudsql.instances.list
resourcemanager.projects.get
Instanz erstellen cloudsql.instances.create
cloudsql.instances.get
cloudsql.instances.list
resourcemanager.projects.get
Verbindung zu einer Instanz aus der Cloud Shell herstellen cloudsql.instances.get
cloudsql.instances.list
cloudsql.instances.update
resourcemanager.projects.get
Nutzer erstellen cloudsql.instances.get
cloudsql.instances.list
cloudsql.users.create
cloudsql.users.list
resourcemanager.projects.get
Instanzinformationen aufrufen cloudsql.instances.get
cloudsql.instances.list
cloudsql.users.list
monitoring.timeSeries.list
resourcemanager.projects.get

Erforderliche Berechtigungen für gcloud sql-Befehle

Befehl Erforderliche Berechtigung(en)
gcloud sql backups create cloudsql.backupRuns.create
gcloud sql backups delete cloudsql.backupRuns.delete
gcloud sql backups describe cloudsql.backupRuns.get
gcloud sql backups list cloudsql.backupRuns.list
gcloud sql backups restore cloudsql.backupRuns.get
cloudsql.instances.restoreBackup
gcloud sql connect cloudsql.instances.get
cloudsql.instances.update
gcloud sql databases create cloudsql.databases.create
gcloud sql databases delete cloudsql.databases.delete
gcloud sql databases describe cloudsql.databases.get
gcloud sql databases list cloudsql.databases.list
gcloud sql databases patch cloudsql.databases.get
cloudsql.databases.update
gcloud sql export cloudsql.instances.export
cloudsql.instances.get
gcloud sql flags list
gcloud sql import cloudsql.instances.import
gcloud sql instances clone cloudsql.instances.clone
gcloud sql instances create cloudsql.instances.create
gcloud sql instances delete cloudsql.instances.delete
gcloud sql instances describe cloudsql.instances.get
gcloud sql instances failover cloudsql.instances.failover
gcloud sql instances import cloudsql.instances.import
gcloud sql instances list cloudsql.instances.list
gcloud sql instances patch cloudsql.instances.get
cloudsql.instances.update
gcloud sql instances promote-replica cloudsql.instances.promoteReplica
gcloud sql instances reset-ssl-config cloudsql.instances.resetSslConfig
gcloud sql instances restart cloudsql.instances.restart
gcloud sql instances restore-backup cloudsql.backupRuns.get
cloudsql.instances.restoreBackup
gcloud sql operations describe cloudsql.instances.get
gcloud sql operations list cloudsql.instances.get
gcloud sql operations wait cloudsql.instances.get
gcloud sql ssl client-certs create cloudsql.sslCerts.create
gcloud sql ssl client-certs delete cloudsql.sslCerts.delete
gcloud sql ssl client-certs describe cloudsql.sslCerts.list
gcloud sql ssl client-certs list cloudsql.sslCerts.list
gcloud sql tiers list
gcloud sql users create cloudsql.users.create
gcloud sql users delete cloudsql.users.delete
gcloud sql users list cloudsql.users.list
gcloud sql users set-password cloudsql.users.update

Erforderliche Berechtigungen für API-Methoden

In der folgenden Tabelle sind die Berechtigungen aufgeführt, die der Aufrufer haben muss, um die einzelnen Methoden in der Cloud SQL Admin API aufzurufen oder Aufgaben mit Google Cloud-Tools auszuführen, die die API verwenden (zum Beispiel die Google Cloud Console oder das gcloud-Befehlszeilentool).

Alle Berechtigungen werden auf das Projekt angewendet. Sie können keine abweichenden Berechtigungen anwenden, die auf der Instanz oder einem anderen untergeordneten Objekt basieren.

Methode Erforderliche Berechtigung(en)
backupRuns.delete cloudsql.backupRuns.delete
backupRuns.get cloudsql.backupRuns.get
backupRuns.insert cloudsql.backupRuns.create
backupRuns.list cloudsql.backupRuns.list
databases.delete cloudsql.databases.delete
databases.get cloudsql.databases.get
databases.insert cloudsql.databases.create
databases.list cloudsql.databases.list
databases.patch cloudsql.databases.update, cloudsql.databases.get
databases.update cloudsql.databases.update
flags.list
instances.clone cloudsql.instances.clone
instances.delete cloudsql.instances.delete
instances.export cloudsql.instances.export
instances.failover cloudsql.instances.failover
instances.get cloudsql.instances.get
instances.import cloudsql.instances.import
instances.insert cloudsql.instances.create
instances.list cloudsql.instances.list
instances.patch cloudsql.instances.get, cloudsql.instances.update
instances.promoteReplica cloudsql.instances.promoteReplica
instances.resetSslConfig cloudsql.instances.resetSslConfig
instances.restart cloudsql.instances.restart
instances.restoreBackup cloudsql.instances.restoreBackup, cloudsql.backupRuns.get
instances.startReplica cloudsql.instances.startReplica
instances.stopReplica cloudsql.instances.stopReplica
instances.truncateLog cloudsql.instances.truncateLog
instances.update cloudsql.instances.update
operations.get cloudsql.instances.get
operations.list cloudsql.instances.get
sslCerts.delete cloudsql.sslCerts.delete
sslCerts.get cloudsql.sslCerts.get
sslCerts.insert cloudsql.sslCerts.create
sslCerts.list cloudsql.sslCerts.list
users.delete cloudsql.users.delete
users.insert cloudsql.users.create
users.list cloudsql.users.list
users.update cloudsql.users.update

Cloud SQL for MySQL-IAM verwalten

Sie können IAM-Richtlinien und -Rollen mit der Google Cloud Console, den IAM-Methoden der API oder dem Cloud SDK abrufen und festlegen. Weitere Informationen finden Sie unter Zugriff gewähren, ändern und widerrufen.

IAM-Bedingungen

Mit IAM Conditions können Sie eine bedingte, attributbasierte Zugriffssteuerung für Google Cloud-Ressourcen einschließlich Cloud SQL-Instanzen definieren und erzwingen. Weitere Informationen zu IAM Conditions finden Sie auf der Seite Übersicht über IAM Conditions.

In Cloud SQL können Sie den bedingten IAM-Zugriff anhand folgender Attribute erzwingen:

  • Datums-/Uhrzeitattribute: Wird verwendet, um den temporären (ablaufenden), geplanten oder zeitlich begrenzten Zugriff auf Cloud SQL-Ressourcen festzulegen. Beispielsweise können Sie einem Nutzer den Zugriff auf eine Datenbankinstanz bis zu einem bestimmten Datum erlauben. Sie können Datums-/Uhrzeitattribute auf jeder Ebene der Ressourcenhierarchie verwenden. Weitere Informationen finden Sie unter Temporären Zugriff konfigurieren.

  • Ressourcenattribute: Dienen zum Konfigurieren des bedingten Zugriffs basierend auf einem Ressourcennamen, einem Ressourcentyp oder einem Ressourcendienstattribut. In Cloud SQL können Sie die Attribute von Datenbankinstanzen verwenden, um den bedingten Zugriff zu konfigurieren. Weitere Informationen finden Sie unter Ressourcenbasierten Zugriff konfigurieren.

Dies ist unter anderem in folgenden Fällen hilfreich:

  • Nutzern den Aufbau einer Verbindung zu bestimmten Instanzen erlauben.
  • Nutzern erlauben, Entwicklungs- und Testinstanzen, aber keine Produktionsinstanzen zu löschen.
  • Nutzern an bestimmten Tagen oder zu bestimmten Zeiten die Ausführung administrativer Vorgänge erlauben.

Nutzern den Aufbau einer Verbindung zu bestimmten Instanzen erlauben

Angenommen, Sie möchten zulassen, dass ein Dienstkonto nur die Berechtigung hat, eine Verbindung zu einer bestimmten Cloud SQL-Instanz herzustellen. Sie können eine IAM-Bedingung in die IAM-Richtlinienbindung aufnehmen, die diesem Nutzer die Berechtigungen einer Cloud SQL-Rolle gewährt.

Standardmäßig erhalten Hauptkonten der vordefinierten Cloud SQL-Clientrolle (roles/cloudsql.client), die die Berechtigung cloudsql.instances.connect enthält, die Berechtigung, eine Verbindung zu allen Cloud SQL-Instanzen in einem Projekt herzustellen. Durch Einfügen einer IAM-Bedingung in die Richtlinienbindung können Sie die Berechtigung auf eine benannte Instanz beschränken.

Console

Dieses Beispiel zeigt, wie Sie die vorhandene IAM-Bindung für das Projekt ändern, um einem Dienstkonto eine Cloud SQL-Clientrolle für eine bestimmte Instanz zuzuweisen.

In diesem Beispiel werden folgende Variablen verwendet:

  • PROJECT_ID: Ihr Google Cloud-Projekt.
  • INSTANCE_ID: Der Name der Instanz, der Sie Zugriff gewähren möchten.

  1. Öffnen Sie in der Google Cloud Console die Seite IAM.

    IAM

  2. Klicken Sie auf Add.
  3. Geben Sie im Eingabefeld Neue Hauptkonten die E-Mail-Adresse des Dienstkontos ein.
  4. Klicken Sie auf die Drop-down-Liste Rolle und wählen Sie die Rolle Cloud SQL-Client aus.
  5. Klicken Sie auf Bedingung hinzufügen.
  6. Geben Sie einen Titel und eine Beschreibung ein.
  7. Wählen Sie den Tab Bedingungseditor.
  8. Im Abschnitt Bedingungserstellung:
    • Wählen Sie als Bedingungstyp – Ressource – Typ sqladmin.googleapis.com/Instance.
    • Geben Sie für Bedingungstyp – Ressource – Name den Wert projects/PROJECT_ID/instances/INSTANCE_ID ein.
    • Wählen Sie für Bedingungstyp – Ressource – Dienst den Wert sqladmin.googleapis.com.
  9. Klicken Sie auf Speichern, um die Bedingung zu speichern.
  10. Klicken Sie auf Speichern, um die Richtlinie zu speichern.

gcloud

In diesem Beispiel wird gezeigt, wie Sie die vorhandene IAM-Richtlinienbindung für das Projekt ändern, um einem bestimmten Dienstkonto die Rolle "Cloud SQL-Client" nur für eine bestimmte Instanz zuzuweisen.

In diesem Beispiel werden folgende Variablen verwendet:

  • PROJECT_ID: Ihr Google Cloud-Projekt.
  • INSTANCE_ID: Der Name der Instanz, auf die Sie Zugriff gewähren möchten.
  • SERVICE_ACCOUNT_EMAIL: Die vollständige E-Mail-Adresse des Dienstkontos, dessen Zugriff Sie bearbeiten möchten.

  1. Rufen Sie die vorhandenen IAM-Richtlinienbindungen ab und geben Sie sie in die Datei bindings.json aus:
  2. gcloud projects get-iam-policy PROJECT_ID --format=json > bindings.json
    
  3. Fügen Sie der bindings.json-Datei folgende bedingte Rollenbindung hinzu:
    {
      "role": "roles/cloudsql.client",
      "members": [
        "serviceAccount:SERVICE_ACCOUNT_EMAIL"
      ],
      "condition": {
        "expression": "resource.name == 'projects/PROJECT_ID/instances/INSTANCE_ID'
          && resource.type == 'sqladmin.googleapis.com/Instance'"
      }
    }
    
  4. Aktualisieren Sie die IAM-Richtlinie mit der neuen bindings.json-Datei.
    gcloud projects set-iam-policy PROJECT_ID bindings.json
    

Nächste Schritte