IAM-Authentifizierung

Google Cloud bietet Identity and Access Management (IAM), mit dem Sie den Zugriff auf bestimmte Google Cloud Ressourcen gewähren und unerwünschten Zugriff auf andere Ressourcen verhindern können. Auf dieser Seite wird beschrieben, wie Cloud SQL in IAM eingebunden ist und wie Sie IAM verwenden können, um den Zugriff auf Cloud SQL Ressourcen zu verwalten und die Datenbankauthentifizierung durchzuführen. Eine ausführliche Beschreibung von Google Cloud IAM finden Sie unter 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 insgesamt Google Cloud, und nicht nur für Cloud SQL. Weitere Informationen zu einfachen Google Cloud Rollen finden Sie unter Einfache Rollen.

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

IAM-Referenzen für Cloud SQL

IAM-Authentifizierungskonzepte

Bei Verwendung der IAM-Authentifizierung wird dem Endnutzer die Berechtigung für den Zugriff auf eine Ressource (eine Cloud SQL-Instanz) nicht direkt gewährt. Stattdessen werden Berechtigungen in Rollen gruppiert, die dann Hauptkonten zugewiesen werden. Weitere Informationen finden Sie in der IAM-Übersicht.

Administratoren, bei denen sich Nutzer über die IAM-Datenbankauthentifizierung anmelden, können mit IAM die Zugriffssteuerung für ihre Instanzen zentral über IAM-Richtlinien verwalten.

IAM-Richtlinien umfassen die folgenden Entitäten:

  • Hauptkonten. In Cloud SQL können Sie verschiedene Arten von IAM-Hauptkonten verwenden: Nutzerkonto, Dienstkonto (für Anwendungen) oder Gruppe. Weitere Informationen finden Sie unter Identitätskonzepte.
  • Rollen: Eine Rolle ist eine Sammlung von Berechtigungen. Sie können Hauptkonten Rollen zuweisen, um ihnen die Berechtigungen zu gewähren, die für bestimmte Aufgaben erforderlich sind. Bei der IAM-Datenbankauthentifizierung benötigt ein Hauptkonto beispielsweise die Berechtigung cloudsql.instances.login, um sich bei einer Instanz anzumelden. Diese Berechtigung ist in der Rolle Cloud SQL-Instanznutzer enthalten. Damit der Nutzer diese Berechtigung erhält, binden Sie ihn, das Dienstkonto oder die Gruppe an die vordefinierte Cloud SQL-Rolle oder an eine benutzerdefinierte Rolle, die die Berechtigung umfasst. Weitere Informationen zu IAM-Rollen finden Sie unter Rollen.
  • Ressourcen: Die Ressourcen, auf die Hauptkonten zugreifen, sind Cloud SQL-Instanzen. Standardmäßig werden IAM-Richtlinienbindungen auf Projektebene angewendet, sodass Hauptkonten Rollenberechtigungen für alle Cloud SQL-Instanzen im Projekt erhalten.

Authentifizierung der IAM-Datenbank

Bei der Datenbankauthentifizierung wird die Identität eines Nutzers überprüft, der versucht, auf Datenbanken zuzugreifen. In Cloud SQL können Sie die folgenden Arten der Datenbankauthentifizierung für Datenbanknutzer verwenden:

  • Die integrierte Authentifizierung der Datenbank verwendet einen Nutzernamen und ein Passwort, um einen Datenbanknutzer zu authentifizieren.
  • Die IAM-Datenbankauthentifizierung verwendet IAM, um einen Nutzer mithilfe eines Zugriffstokens zu authentifizieren.

    Optionen für die Datenbankauthentifizierung vergleichen

    In der folgenden Tabelle werden verschiedene Methoden der Datenbankauthentifizierung für Cloud SQL verglichen.

    Feature Integrierte Datenbankauthentifizierung IAM-Datenbankauthentifizierung (einzeln) IAM-Gruppenauthentifizierung
    Authentifizierungsmethode Passwort Temporäres Authentifizierungstoken Temporäres Authentifizierungstoken
    Verschlüsselung des Netzwerkverkehrs SSL nicht erforderlich SSL erforderlich SSL erforderlich
    Nutzerverwaltung Manuell Zentral über IAM Zentral über IAM und Cloud Identity-Gruppen

    IAM-Gruppenauthentifizierung

    Mit der IAM-Gruppenauthentifizierung können Sie Cloud SQL-Nutzer auf Gruppenebene verwalten. Ein Beispiel für eine Gruppe ist eine Cloud Identity-Gruppe. Dieses Feature vereinfacht die Verwaltung von Datenbanknutzern. Sie können die Cloud SQL-IAM-Rolle oder Berechtigungen für mehrere Konten gleichzeitig verwalten, anstatt jeden Nutzer oder jedes Dienstkonto einzeln aktualisieren zu müssen. Sie können auch die Datenbankberechtigungen für eine Cloud Identity-Gruppe gewähren und widerrufen. Alle neuen Konten, die Sie der Cloud Identity-Gruppe hinzufügen, übernehmen die Berechtigungen dieser Gruppe.

    Mit der IAM-Gruppenauthentifizierung können Sie Folgendes tun:

    • Sie können einen Nutzer einer Gruppe hinzufügen und die IAM-Rollen und Datenbankberechtigungen des Nutzers automatisch übernehmen.
    • Sie können einen Nutzer aus einer Gruppe entfernen, um den Anmeldezugriff und die Datenbankberechtigungen für Cloud SQL-Datenbanken zu entfernen.
    • Sie brauchen Anmelde- oder Datenbankberechtigungen einer Gruppe nur einmal zu erteilen, anstatt sie verschiedenen Nutzern mehrmals erteilen zu müssen.
    • Sie können Anmeldeberechtigungen oder den Zugriff auf ein Datenbankobjekt für eine Gruppe auf einmal entfernen.

    Obwohl IAM-Rollen und -Berechtigungen auf Gruppenebene zugewiesen werden, verwenden Nutzer und Dienstkonten ihre individuellen IAM-Konten und ‑Anmeldedaten und nicht ein gemeinsam genutztes Gruppenkonto, um sich anzumelden. Cloud SQL erstellt nach der ersten Anmeldung ein Datenbankkonto in der Instanz für diesen Nutzer oder dieses Dienstkonto.

    Die einzelnen Anmelde- und Datenbankaktivitäten für jeden Nutzer oder jedes Dienstkonto werden in Audit-Logs angezeigt. Zu Prüfzwecken können Sie sehen, welches Konto welche Aktion in Ihrer Datenbank ausgeführt hat.

    Weitere Informationen zur Verwendung von Cloud Identity-Gruppen finden Sie unter der Cloud Identity – Übersicht.

    Wenn Sie einer Gruppe einen Nutzer oder ein Dienstkonto hinzufügen, ändert sich in Cloud SQL Folgendes:

    • Wenn Sie der Gruppe bereits IAM-Anmeldeberechtigungen erteilt haben, kann sich der Nutzer oder das Dienstkonto bei der Cloud SQL-Instanz anmelden, da er oder es zur Gruppe gehört.
    • Der Nutzer übernimmt automatisch alle Datenbankberechtigungen die der Gruppe erteilt wurden.

    Wenn Sie einen Nutzer oder ein Dienstkonto aus der Gruppe entfernen, ändert sich in Cloud SQL die folgende:

    • Der Nutzer verliert alle Datenbankberechtigungen, die zuvor als Mitglied der Gruppe übernommen wurden.
    • Der Nutzer kann sich möglicherweise weiterhin anmelden, wenn er über andere Gruppenmitgliedschaften IAM-Anmeldeberechtigungen für die Cloud SQL-Instanz erhält. Der Nutzer erhält bei der Anmeldung jedoch keine Datenbankberechtigungen aus seiner früheren Gruppenmitgliedschaft.

    Best Practices für die IAM-Gruppenauthentifizierung

    • Wenn Sie die Anmeldeberechtigung (cloudsql.instances.login) für eine IAM-Gruppe in Cloud Identity widerrufen, müssen Sie die Gruppe auch aus der Cloud SQL-Instanz löschen.
    • Wenn Sie eine Gruppe aus einer Cloud Identity löschen, müssen Sie diese Gruppe auch aus der Cloud SQL-Instanz löschen.
    • Verwenden Sie Gruppen, um die rollenbasierte Zugriffssteuerung in Ihrer Datenbank zu konfigurieren. Erteilen Sie der Gruppe immer nur die mindestens erforderlichen Berechtigungen.
    • Weisen Sie integrierten Nutzern keine IAM-Gruppenauthentifizierungsrollen zu. Wenn Sie beispielsweise einen integrierten Nutzer (user-a) haben und einen Nutzer für die IAM-Gruppenauthentifizierung (user-b@example.com) erstellen, sollten Sie user-a nicht die Rolle user-b@example.com zuweisen.

    Einschränkungen für die IAM-Gruppenauthentifizierung

    • Wenn Sie die IAM-Gruppenauthentifizierung verwenden und eine Cloud SQL-Instanz mit Lesereplikaten haben, müssen Sie sich zuerst in der primären Instanz anmelden, bevor Sie sich in der Lesereplikatinstanz anmelden können. Nach der ersten Anmeldung in der primären Instanz werden die Gruppeninformationen des Nutzers in die Lesereplikate repliziert. Bei nachfolgenden Anmeldungen können Sie sich direkt beim Lese replikat anmelden.
    • Sie können einer Instanz maximal 200 IAM-Gruppen hinzufügen.
    • Sie können derselben Instanz keine einzelnen IAM-Nutzer oder ‑Dienstkonten hinzufügen, die zu einer Gruppe gehören. Mit anderen Worten: Sie können kein Konto mit dem Typ CLOUD_IAM_USER oder CLOUD_IAM_SERVICE_ACCOUNT hinzufügen, wenn bereits ein identisches Konto mit dem Typ CLOUD_IAM_GROUP_USER oder CLOUD_IAM_GROUP_SERVICE_ACCOUNT vorhanden ist.
    • Wenn in einer Instanz bereits ein einzelnes Konto mit dem Typ CLOUD_IAM_USER oder CLOUD_IAM_SERVICE_ACCOUNT, vorhanden ist, kann das Konto nicht für die IAM-Gruppenauthentifizierung verwendet werden. Diese Nutzertypen übernehmen keine IAM-Rollen und Datenbankberechtigungen von einer Gruppe.

      Entfernen Sie den einzelnen IAM-Nutzer oder das Dienstkonto, um dieses Problem zu beheben und das Konto mit der IAM-Gruppenauthentifizierung zu verwenden.

      Weitere Informationen finden Sie unter Ein vorhandener IAM-Nutzer oder ein vorhandenes Dienstkonto übernimmt nicht die Datenbankberechtigungen, die seiner Gruppe gewährt werden.
    • Änderungen an der Cloud Identity-Gruppenmitgliedschaft, z. B. das Hinzufügen eines Kontos, brauchen etwa 15 Minuten, um wirksam zu werden. Diese Zeit kommt zu der Zeit hinzu, die für IAM-Änderungen erforderlich ist.

    Automatische und manuelle IAM-Datenbankauthentifizierung im Vergleich

    Cloud SQL for PostgreSQL bietet zwei Optionen für die IAM-Datenbankauthentifizierung: automatisch und manuell.

    Automatische IAM-Datenbankauthentifizierung

    Mit der automatischen IAM-Datenbankauthentifizierung können Sie das Anfordern und Verwalten von Zugriffstokens an einen Cloud SQL-Connector wie den Cloud SQL-Auth-Proxy oder einen der Cloud SQL Language Connectors übergeben. Bei der automatischen IAM-Datenbankauthentifizierung müssen Nutzer nur den Nutzernamen der IAM-Datenbank in einer Verbindungsanfrage vom Client übergeben. Der Connector sendet die Zugriffstokeninformationen für das Passwortattribut im Namen des Clients.

    Für die automatische IAM-Datenbankauthentifizierung ist ein Cloud SQL-Connector erforderlich. Sie wird vom Cloud SQL Auth-Proxy, dem Go-Connector, dem Java-Connector und dem Python-Connector unterstützt.

    Als sicherste und zuverlässigste Nutzungsmöglichkeit empfehlen wir die Verwendung der automatischen IAM-Datenbankauthentifizierung. Für die IAM-Datenbankauthentifizierung werden OAuth 2.0-Zugriffstokens genutzt. Diese sind nur temporär und lediglich für eine Stunde gültig. Cloud SQL-Connectors können diese Tokens anfordern und aktualisieren, wodurch sichergestellt ist, dass langlebige Prozesse oder Anwendungen, die Verbindungs-Pooling nutzen, auf stabile Verbindungen zurückgreifen können. Die automatische Authentifizierung der IAM-Datenbank wird anstelle der manuellen Authentifizierung dringend empfohlen.

    Weitere Informationen finden Sie unter Mit automatischer IAM-Datenbankauthentifizierung anmelden.

    Manuelle IAM-Datenbankauthentifizierung

    Für die manuelle IAM-Datenbankauthentifizierung muss das IAM-Hauptkonto das Zugriffstoken für das Passwortattribut in der Clientverbindungsanfrage explizit übergeben. Hauptkonten müssen sich zuerst in Google Cloud anmelden und das Zugriffstoken explizit von IAM anfordern.

    Mit der gcloud CLI haben Sie die Möglichkeit, explizit ein OAuth 2.0-Token im Geltungsbereich der Cloud SQL Admin API anzufordern, das für die Anmeldung bei der Datenbank verwendet wird. Wenn Sie sich als Datenbanknutzer mit der IAM-Datenbankauthentifizierung anmelden, verwenden Sie Ihre E-Mail-Adresse als Nutzernamen und das Zugriffstoken als Passwort. Sie können diese Methode entweder mit einer direkten Verbindung zur Datenbank oder mit einem Cloud SQL-Connector verwenden.

    Die Anmeldung mit IAM-Datenbankauthentifizierung kann nur über eine SSL-Verbindung erfolgen.

    Weitere Informationen finden Sie unter Mit manueller IAM-Datenbankauthentifizierung anmelden.

    Kontextsensitiver Zugriff und IAM-Datenbankauthentifizierung

    Wenn Sie in Ihrer IAM-Konfiguration den kontextabhängigen Zugriff verwenden, können Sie keinen Cloud SQL-Connector wie den Cloud SQL Auth-Proxy oder einen der Cloud SQL Language Connectors mit der IAM-Datenbankauthentifizierung verwenden. Versuche, sich manuell oder automatisch mit der IAM-Authentifizierung anzumelden, schlagen fehl. Stellen Sie stattdessen eine direkte Verbindung zur Instanz her.

    Nutzer- und Dienstkontoverwaltung

    Damit Nutzer und Dienstkonten mithilfe der IAM-Datenbankauthentifizierung Zugriff auf Datenbanken in einer Instanz erhalten, müssen Sie sie der Instanz oder einer Gruppe hinzufügen, die Zugriff auf die Instanz hat. Weitere Informationen finden Sie unter Nutzer- oder Dienstkonto mit IAM hinzufügen.

    Wenn Sie über die Google Cloud Console Nutzer oder Dienstkonten hinzufügen, werden Sie von Cloud SQL aufgefordert, dem Nutzer die Rolle „Cloud SQL-Nutzer“ zuzuweisen. Diese Rolle ist erforderlich, damit sich Nutzer bei der Instanz anmelden können.

    Wenn Sie Nutzer mithilfe von gcloud oder der API hinzufügen, müssen Sie manuell Anmeldeberechtigungen gewähren. Verwenden Sie den PostgreSQL-Befehl GRANT, um Datenbankberechtigungen zu gewähren.

    Instanzkonfiguration für die Cloud SQL-IAM-Datenbankauthentifizierung

    Sie können die IAM-Datenbankauthentifizierung für eine Instanz mit dem Flag cloudsql.iam_authentication aktivieren. Wenn Sie dieses Flag aktivieren, ermöglicht die Instanz Anmeldungen von Konten, die für die IAM-Datenbankauthentifizierung konfiguriert sind. Dieses Flag ist standardmäßig aktiviert, wenn Sie die Instanzen über die Console erstellen. Google Cloud

    Dieses Flag ist für die IAM-Gruppenauthentifizierung und die IAM-Datenbankauthentifizierung erforderlich.

    Durch das Festlegen des Flags wird nicht verhindert, dass vorhandene Nicht-IAM-Nutzer ihre Nutzernamen und Passwörter zur Anmeldung verwenden. Wenn Sie allerdings dieses Flag für die Instanz deaktivieren, haben die Nutzer, die Sie zuvor über die IAM-Datenbankauthentifizierung hinzugefügt wurden, keinen Zugriff mehr auf die Instanz. Weitere Informationen finden Sie unter Instanzen für die IAM-Datenbankauthentifizierung konfigurieren.

    Cloud SQL-IAM-Datenbankauthentifizierung für verschiedene Instanzszenarien

    Lesereplikate Die IAM-Datenbankauthentifizierung wird in einem Lesereplikat nicht automatisch aktiviert, auch wenn sie in der primären Instanz aktiviert ist. Nachdem Sie ein Lesereplikat erstellt haben, müssen Sie die IAM-Datenbankauthentifizierung hinzufügen. Weitere Informationen finden Sie unter Lesereplikat-Anmeldungen für die IAM-Datenbankauthentifizierung konfigurieren.
    Wiederhergestellte Instanzen Wenn eine Instanz zuvor gesichert und später in derselben oder einer anderen Instanz im selben Projekt wiederhergestellt wurde, gelten die aktuellen Autorisierungen für die Nutzeranmeldung. Wenn Sie eine Sicherung in einer neuen Instanz in einem anderen Projekt wiederherstellen, müssen Sie die Nutzerautorisierungen für die neue Instanz einrichten. Weitere Informationen finden Sie unter Nutzer- oder Dienstkonto mit IAM-Datenbankauthentifizierung hinzufügen.
    Wiederhergestellte Instanzen zu einem bestimmten Zeitpunkt Wenn Sie eine Wiederherstellung zu einem bestimmten Zeitpunkt im selben Projekt durchführen, gelten die aktuellen Autorisierungen für die Nutzeranmeldung für die Zielinstanz. Wenn Sie eine Instanz zu einem bestimmten Zeitpunkt in einem anderen Projekt wiederherstellen, müssen Sie die Nutzerautorisierungen für die neue Instanz einrichten. Weitere Informationen finden Sie unter Nutzer- oder Dienstkonto mit IAM-Datenbankauthentifizierung hinzufügen.

    Informationen zu IAM Conditions

    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.

    Weitere Informationen zu IAM Conditions finden Sie auf der Seite Übersicht über IAM Conditions. Weitere Informationen zur Verwendung von IAM Conditions mit Cloud SQL, einschließlich Beispielen.

    Mit Cloud-Audit-Logs arbeiten

    Sie können Audit-Logs verwenden, um Datensätze über den Datenzugriff, einschließlich Anmeldungen, aufzubewahren. Cloud-Audit-Logs sind standardmäßig deaktiviert. Sie müssen Audit-Logs zum Datenzugriff für das Tracking von Anmeldungen aktivieren. Die Verwendung von Audit-Logging zu diesem Zweck verursacht Kosten für das Logging von Daten. Weitere Informationen finden Sie unter Audit-Logs, Audit-Logs zum Datenzugriff konfigurieren und den Preisen für das Logging von Daten.

    Leistung auf Instanzen mit gemeinsam genutztem Kern

    Maschinentypen mit gemeinsam genutztem Kern (z. B. db-f1-micro und db-g1-small) verwenden CPU-Bursting, um kurze Aktivitätsspitzen zu bewältigen. Die IAM-Datenbankauthentifizierung ist rechenintensiver als die integrierte Passwortauthentifizierung. Wenn eine Instanz mit gemeinsam genutztem Kern also nicht mehr burstet oder eine hohe CPU-Auslastung aufweist, kann es bei Verbindungen mit IAM-Datenbankauthentifizierung zu hoher Latenz oder Zeitüberschreitungen kommen.

    So sorgen Sie für optimale Verbindungsleistung und Zuverlässigkeit:

    • Beständiges Verbindungs-Pooling implementieren: Konfigurieren Sie clientseitige Verbindungspools (z. B. HikariCP für Java, SQLAlchemy-Verbindungspools für Python oder database/sql Pools für Go), aktivieren Sie das verwaltete Verbindungs-Pooling, oder verwenden Sie den Cloud SQL Auth-Proxy.
    • Zeitüberschreitungen für Clientverbindungen erhöhen: Wenn Ihre Anwendung während Phasen hoher CPU-Aktivität neue Verbindungen herstellen muss, konfigurieren Sie in Ihrem Datenbanktreiber oder Ihrer Clientkonfiguration eine höhere Zeitüberschreitung für Verbindungen (z. B. 10 bis 15 Sekunden).
    • Auf Instanzen mit dediziertem Kern upgraden: Bearbeiten Sie Ihre Instanz um einen Maschinentyp mit dediziertem Kern zu verwenden. Maschinen mit dediziertem Kern bieten uneingeschränkte CPU-Zuweisungen, die für schnellere und konsistentere Verbindungszeiten sorgen.

    Beschränkungen

    1. Die Anmeldung für ein IAM-Datenbankauthentifizierungsnutzerkonto muss in Kleinbuchstaben erfolgen. Beispiel: example-user@example.com Example-User@example.com ist nicht zulässig.
    2. Aus Sicherheitsgründen sind Anmeldungen mit der IAM-Datenbankauthentifizierung nur über eine SSL-Verbindung möglich. Unverschlüsselte Verbindungen werden abgelehnt.
    3. Für jede Instanz gilt ein Anmeldungskontingent pro Minute, das sowohl erfolgreiche als auch fehlgeschlagene Anmeldungen umfasst. Wenn das Kontingent überschritten wird, sind Anmeldungen vorübergehend nicht möglich. Wir empfehlen, häufige Anmeldungen zu vermeiden und Anmeldungen mithilfe von autorisierten Netzwerken einzuschränken. Das Kontingent für die Autorisierung von Anmeldungen beträgt 12.000 pro Minute und Instanz.

    Nächste Schritte