Anleitung und Anforderungen für Lab-Einrichtung
Schützen Sie Ihr Konto und Ihren Fortschritt. Verwenden Sie immer den privaten Modus und Lab-Anmeldedaten, um dieses Lab auszuführen.

Eine Cloud SQL for PostgreSQL-Instanz schützen

Lab 35 Minuten universal_currency_alt 1 Guthabenpunkt show_chart Einsteiger
info Dieses Lab kann KI-Tools enthalten, die den Lernprozess unterstützen.
Dieser Inhalt ist noch nicht für Mobilgeräte optimiert.
Die Lernumgebung funktioniert am besten, wenn Sie auf einem Computer über einen per E‑Mail gesendeten Link darauf zugreifen.

GSP920

Logo: Google Cloud-Labs zum selbstbestimmten Lernen

Übersicht

Mit vom Kunden verwalteten Verschlüsselungsschlüsseln (Customer-Managed Encryption Keys, CMEK) können Sie für ruhende Daten Ihre eigenen kryptografischen Schlüssel in Cloud SQL verwenden. Nachdem Sie vom Kunden verwaltete Verschlüsselungsschlüssel hinzugefügt haben, verwendet Cloud SQL bei jedem API-Aufruf Ihren Schlüssel für den Datenzugriff.

In diesem Lab erfahren Sie Schritt für Schritt, wie Sie eine Cloud SQL for PostgreSQL-Instanz schützen. Zuerst wird eine neue Cloud SQL-Instanz mit einem vom Kunden verwalteten Verschlüsselungsschlüssel (CMEK) erstellt. Nachdem Sie die Cloud SQL for PostgreSQL-Instanz erstellt haben, konfigurieren Sie pgAudit so, dass SQL-Vorgänge, die für diese Instanz ausgeführt werden, selektiv aufgezeichnet und verfolgt werden. Zum Schluss konfigurieren und testen Sie die Cloud SQL-IAM-Datenbankauthentifizierung.

Aufgaben

  • CMEK für Cloud SQL for PostgreSQL einrichten
  • pgAudit in einer Cloud SQL for PostgreSQL-Instanz aktivieren und konfigurieren
  • Cloud SQL for PostgreSQL-IAM-Datenbankauthentifizierung konfigurieren

Zielgruppe

Die Inhalte dieses praxisorientierten Labs sind vor allem für Fachkräfte in der PostgreSQL-Datenbankadministration relevant. Dieses Lab ist darauf ausgelegt, Fachleuten praktische Kenntnisse beim Einrichten und Konfigurieren von Google Cloud-Ressourcen zur Unterstützung von PostgreSQL zu vermitteln.

Einrichtung und Anforderungen

Vor dem Klick auf „Start Lab“ (Lab starten)

Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange Google Cloud-Ressourcen für das Lab verfügbar sind.

In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.

Für dieses Lab benötigen Sie Folgendes:

  • Einen Standardbrowser (empfohlen wird Chrome)
Hinweis: Nutzen Sie den privaten oder Inkognitomodus (empfohlen), um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.
  • Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Hinweis: Verwenden Sie für dieses Lab nur das Teilnehmerkonto. Wenn Sie ein anderes Google Cloud-Konto verwenden, fallen dafür möglicherweise Kosten an.

Lab starten und bei der Google Cloud Console anmelden

  1. Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Dialogfeld geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können. Auf der linken Seite befindet sich der Bereich „Details zum Lab“ mit diesen Informationen:

    • Schaltfläche „Google Cloud Console öffnen“
    • Restzeit
    • Temporäre Anmeldedaten für das Lab
    • Ggf. weitere Informationen für dieses Lab
  2. Klicken Sie auf Google Cloud Console öffnen (oder klicken Sie mit der rechten Maustaste und wählen Sie Link in Inkognitofenster öffnen aus, wenn Sie Chrome verwenden).

    Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite „Anmelden“ geöffnet.

    Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.

    Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden.
  3. Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.

    {{{user_0.username | "Username"}}}

    Sie finden den Nutzernamen auch im Bereich „Details zum Lab“.

  4. Klicken Sie auf Weiter.

  5. Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.

    {{{user_0.password | "Password"}}}

    Sie finden das Passwort auch im Bereich „Details zum Lab“.

  6. Klicken Sie auf Weiter.

    Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos. Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen.
  7. Klicken Sie sich durch die nachfolgenden Seiten:

    • Akzeptieren Sie die Nutzungsbedingungen.
    • Fügen Sie keine Wiederherstellungsoptionen oder Zwei-Faktor-Authentifizierung hinzu (da dies nur ein temporäres Konto ist).
    • Melden Sie sich nicht für kostenlose Testversionen an.

Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.

Hinweis: Wenn Sie auf Google Cloud-Produkte und ‑Dienste zugreifen möchten, klicken Sie auf das Navigationsmenü oder geben Sie den Namen des Produkts oder Dienstes in das Feld Suchen ein. Symbol für das Navigationsmenü und Suchfeld

Aufgabe 1: Cloud SQL for PostgreSQL-Instanz mit aktiviertem CMEK erstellen

Im Rahmen dieser Aufgabe erstellen Sie eine Cloud SQL for PostgreSQL-Instanz mit aktiviertem CMEK. Es ist unbedingt erforderlich, dass Sie die Schlüssel sicher aufbewahren, da Sie Ihre Datenbank ohne die Schlüssel nicht verwalten können.

Produkt- und projektspezifisches Dienstkonto für Cloud SQL erstellen

Sie können das für den Cloud SQL-CMEK erforderliche Dienstkonto mit dem Befehl gcloud beta services identity create erstellen.

  1. Führen Sie in der Cloud Shell den folgenden Befehl aus, um das Dienstkonto zu erstellen:
export PROJECT_ID=$(gcloud config list --format 'value(core.project)') gcloud beta services identity create \ --service=sqladmin.googleapis.com \ --project=$PROJECT_ID
  1. Klicken Sie auf den Button Autorisieren, wenn Sie dazu aufgefordert werden.

Dadurch wird das Dienstkonto erstellt, das in einem späteren Schritt an den vom Kunden verwalteten Verschlüsselungsschlüssel gebunden wird.

Cloud Key Management Service-Schlüsselbund und Service-Schlüssel erstellen

In diesem Abschnitt erstellen Sie einen Cloud KMS-Schlüsselbund und einen -Schlüssel, die Sie mit einem vom Kunden verwalteten Verschlüsselungsschlüssel verwenden können.

  1. Führen Sie in der Cloud Shell den folgenden Befehl aus, um den Cloud KMS-Schlüsselbund zu erstellen:
export KMS_KEYRING_ID=cloud-sql-keyring export ZONE=$(gcloud compute instances list --filter="NAME=bastion-vm" --format=json | jq -r .[].zone | awk -F "/zones/" '{print $NF}') export REGION=${ZONE::-2} gcloud kms keyrings create $KMS_KEYRING_ID \ --location=$REGION
  1. Führen Sie in der Cloud Shell den folgenden Befehl aus, um den Cloud KMS-Schlüssel zu erstellen:
export KMS_KEY_ID=cloud-sql-key gcloud kms keys create $KMS_KEY_ID \ --location=$REGION \ --keyring=$KMS_KEYRING_ID \ --purpose=encryption
  1. Führen Sie in der Cloud Shell den folgenden Befehl aus, um den Schlüssel an das Dienstkonto zu binden:
export PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} \ --format 'value(projectNumber)') gcloud kms keys add-iam-policy-binding $KMS_KEY_ID \ --location=$REGION \ --keyring=$KMS_KEYRING_ID \ --member=serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-cloud-sql.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Der Name des Dienstkontos ist derselbe Name, der im vorherigen Unterabschnitt über den Befehl gcloud beta services identity create zurückgegeben wurde.

Cloud SQL-Instanz mit aktiviertem CMEK erstellen

Im Rahmen dieses Abschnitts erstellen Sie eine Cloud SQL for PostgreSQL-Instanz mit aktiviertem CMEK. Es ist nicht möglich, eine vorhandene Instanz zu patchen, um einen CMEK zu aktivieren. Dies sollten Sie berücksichtigen, wenn Sie einen CMEK zum Verschlüsseln Ihrer Daten verwenden möchten.

Wenn Sie von externen Entwicklungs- oder Anwendungsumgebungen auf Ihre Cloud SQL-Instanz zugreifen möchten, können Sie die Cloud SQL-Instanz mit einer öffentlichen IP-Adresse konfigurieren und den Zugriff steuern, indem Sie die IP-Adresse dieser Umgebungen auf die Zulassungsliste setzen. Dadurch wird der Zugriff auf die öffentliche Oberfläche auf die von Ihnen angegebenen Adressbereiche beschränkt.

Sie behandeln die Compute Engine-VM-Instanz im Lab als Entwicklungsumgebung und müssen daher die externe IP-Adresse dieser Instanz auf die Zulassungsliste setzen. Außerdem fügen Sie die externe IP-Adresse der Cloud Shell der Zulassungsliste hinzu, um die Ausführung der Aufgaben später im Lab zu vereinfachen.

  1. Führen Sie in der Cloud Shell den folgenden Befehl aus, um die externe IP-Adresse der VM-Instanz bastion-vm zu ermitteln:
export AUTHORIZED_IP=$(gcloud compute instances describe bastion-vm \ --zone=$ZONE \ --format 'value(networkInterfaces[0].accessConfigs.natIP)') echo Authorized IP: $AUTHORIZED_IP
  1. Führen Sie in der Cloud Shell den folgenden Befehl aus, um die externe IP-Adresse der Cloud Shell zu ermitteln:
export CLOUD_SHELL_IP=$(curl ifconfig.me) echo Cloud Shell IP: $CLOUD_SHELL_IP
  1. Führen Sie in der Cloud Shell den folgenden Befehl aus, um Ihre Cloud SQL for PostgreSQL-Instanz zu erstellen:
export KEY_NAME=$(gcloud kms keys describe $KMS_KEY_ID \ --keyring=$KMS_KEYRING_ID --location=$REGION \ --format 'value(name)') export CLOUDSQL_INSTANCE=postgres-orders gcloud sql instances create $CLOUDSQL_INSTANCE \ --project=$PROJECT_ID \ --authorized-networks=${AUTHORIZED_IP}/32,$CLOUD_SHELL_IP/32 \ --disk-encryption-key=$KEY_NAME \ --database-version=POSTGRES_13 \ --cpu=1 \ --memory=3840MB \ --region=$REGION \ --root-password=supersecret!
  1. Geben Sie bei Aufforderung nach der Eingabe des Befehls „y“ ein.
Eine Cloud SQL-Instanz mit einem aktivierten CMEK erstellen

Aufgabe 2: pgAudit in einer Cloud SQL for PostgreSQL-Datenbank aktivieren und konfigurieren

Im Rahmen dieser Aufgabe aktivieren und konfigurieren Sie die pgAudit-Datenbankerweiterung, mit der Sie das Logging aller Arten von Datenbankaktivitäten detailgenau steuern können.

  1. Führen Sie in der Cloud Shell den folgenden Befehl aus, um die pgAudit-Datenbank-Flags Ihrer Cloud SQL-Instanz hinzuzufügen:
gcloud sql instances patch $CLOUDSQL_INSTANCE \ --database-flags cloudsql.enable_pgaudit=on,pgaudit.log=all
  1. Geben Sie „y“ ein, wenn Sie zur Bestätigung aufgefordert werden, und fahren Sie fort.
Hinweis: Warten Sie, bis der Patch-Befehl abgeschlossen ist, bevor Sie fortfahren. Wenn die Meldung Patching Cloud SQL instance...done angezeigt wird, können Sie mit dem nächsten Schritt fortfahren.
  1. Klicken Sie in der Cloud Console im Navigationsmenü (Symbol für Navigationsmenü) auf SQL.

  2. Klicken Sie auf die Cloud SQL-Instanz mit dem Namen postgres-orders.

  3. Klicken Sie im Cloud SQL-Bereich Übersicht im oberen Menü auf Neu starten, um die Instanz nach dem Patch, den Sie in Schritt 1 ausgeführt haben, neu zu starten.

Wenn Sie noch einmal dazu aufgefordert werden, klicken Sie im Pop-up-Dialogfeld noch einmal auf Neu starten.

Hinweis: Es kann einige Minuten dauern, bis die Cloud SQL for PostgreSQL-Instanz neu gestartet wird. Wenn die Meldung angezeigt wird, dass die Instanz erfolgreich neu gestartet wurde (Restarted postgres-orders), können Sie mit dem nächsten Schritt fortfahren.
  1. Klicken Sie in der Cloud Console im Abschnitt Mit dieser Instanz verbinden auf Cloud Shell öffnen.
Hinweis: Wenn Sie eine Fehlermeldung erhalten und keine Verbindung herstellen können, warten Sie einige Minuten, bis die Instanz nach dem Neustart wieder ansprechbar ist. Wiederholen Sie dann Schritt 6.

In der Cloud Shell wird automatisch ein Befehl zum Herstellen einer Verbindung zur Instanz eingefügt.

  1. Führen Sie diesen Befehl aus und geben Sie das Passwort supersecret! ein, wenn Sie dazu aufgefordert werden.

Eine psql-Sitzung wird in der Cloud Shell gestartet.

  1. Führen Sie in psql den folgenden Befehl aus, um die orders-Datenbank zu erstellen und die pgAudit-Erweiterung zu aktivieren, damit alle Lese- und Schreibvorgänge protokolliert werden:
CREATE DATABASE orders; \c orders;
  1. Geben Sie das Passwort supersecret! erneut ein.

  2. Führen Sie in psql den folgenden Befehl aus, um die Datenbankerweiterung zu erstellen und zu konfigurieren:

CREATE EXTENSION pgaudit; ALTER DATABASE orders SET pgaudit.log = 'read,write';

Audit-Logging in der Cloud Console aktivieren

In diesem Abschnitt aktivieren Sie das Audit-Logging in der Cloud Console.

  1. Klicken Sie in der Cloud Console im Navigationsmenü (Symbol für Navigationsmenü) auf IAM und Verwaltung > Audit-Logs.
Hinweis: Wenn oben auf der Seite die Meldung You don't have permission to view inherited audit logs configuration data for one or more parent resources angezeigt wird, können Sie sie ignorieren und mit dem nächsten Schritt fortfahren.
  1. Geben Sie im Feld Filter unter Konfiguration für Audit-Logs zum Datenzugriff die Option Cloud SQL ein und wählen Sie den Eintrag in der Drop-down-Liste aus.

  2. Aktivieren Sie links das Kästchen für Cloud SQL und dann rechts im Infofeld die folgenden Kästchen:

  • Lesen durch Administrator
  • Daten lesen
  • Daten schreiben
  1. Klicken Sie im Infofeld auf Speichern.

Daten in eine Datenbank in Cloud SQL for PostgreSQL einfügen

In diesem Abschnitt füllen Sie die Datenbank orders mit den bereitgestellten Daten.

  1. Klicken Sie in der Cloud Shell-Titelleiste auf das Symbol +, um einen neuen Tab in der Cloud Shell zu öffnen.

  2. Führen Sie auf dem neuen Tab diesen Befehl aus, um die Daten und Skripts zum Füllen der Datenbank herunterzuladen:

export SOURCE_BUCKET=gs://spls/gsp920 gsutil -m cp ${SOURCE_BUCKET}/create_orders_db.sql . gsutil -m cp ${SOURCE_BUCKET}/DDL/distribution_centers_data.csv . gsutil -m cp ${SOURCE_BUCKET}/DDL/inventory_items_data.csv . gsutil -m cp ${SOURCE_BUCKET}/DDL/order_items_data.csv . gsutil -m cp ${SOURCE_BUCKET}/DDL/products_data.csv . gsutil -m cp ${SOURCE_BUCKET}/DDL/users_data.csv .
  1. Führen Sie im neuen Tab den folgenden Befehl aus, um die Datenbank zu erstellen und mit Daten zu füllen:
export CLOUDSQL_INSTANCE=postgres-orders export POSTGRESQL_IP=$(gcloud sql instances describe $CLOUDSQL_INSTANCE --format="value(ipAddresses[0].ipAddress)") export PGPASSWORD=supersecret! psql "sslmode=disable user=postgres hostaddr=${POSTGRESQL_IP}" \ -c "\i create_orders_db.sql"
  1. Beenden Sie die Terminalsitzung im neuen Tab:
exit
  1. Kehren Sie zur psql-Sitzung auf dem ursprünglichen Cloud Shell-Tab zurück und führen Sie den folgenden Befehl aus, um alle SELECT-Vorgänge für eine bestimmte Beziehung (z. B. die Tabelle order_items) zu protokollieren:
CREATE ROLE auditor WITH NOLOGIN; ALTER DATABASE orders SET pgaudit.role = 'auditor'; GRANT SELECT ON order_items TO auditor;
  1. Führen Sie die erste SELECT-Abfrage unten aus:
SELECT users.id AS users_id, users.first_name AS users_first_name, users.last_name AS users_last_name, COUNT(DISTINCT order_items.order_id ) AS order_items_order_count, COALESCE(SUM(order_items.sale_price ), 0) AS order_items_total_revenue FROM order_items LEFT JOIN users ON order_items.user_id = users.id GROUP BY 1, 2, 3 ORDER BY 4 DESC LIMIT 500; SELECT products.id AS products_id, products.name AS products_name, products.sku AS products_sku, products.cost AS products_cost, products.retail_price AS products_retail_price, products.distribution_center_id AS products_distribution_center_id, COUNT(DISTINCT order_items.order_id ) AS order_items_order_count, COALESCE(SUM(order_items.sale_price ), 0) AS order_items_total_revenue FROM order_items LEFT JOIN inventory_items ON order_items.inventory_item_id = inventory_items.id LEFT JOIN products ON inventory_items.product_id = products.id GROUP BY 1, 2, 3, 4, 5, 6 ORDER BY 7 DESC LIMIT 500; SELECT order_items.order_id AS order_id, distribution_centers.id AS distribution_centers_id, distribution_centers.name AS distribution_centers_name, distribution_centers.latitude AS distribution_centers_latitude, distribution_centers.longitude AS distribution_centers_longitude FROM order_items LEFT JOIN inventory_items ON order_items.inventory_item_id = inventory_items.id LEFT JOIN products ON inventory_items.product_id = products.id LEFT JOIN distribution_centers ON products.distribution_center_id = distribution_centers.id GROUP BY 1, 2, 3, 4, 5 ORDER BY 2 LIMIT 500;
  1. Die Ausgabe umfasst 500 Zeilen. Sie können q eingeben, um die Ergebnisse zu schließen und zum Prompt orders=> zurückzukehren.

  2. Wiederholen Sie die Schritte 5 und 6 für die beiden anderen Abfrage-Tabs im Codeblock.

  3. Führen Sie folgenden Befehl aus, um psql zu beenden:

\q

pgAudit-Protokolle anzeigen

In diesem Schritt zeigen Sie die Protokollierung Ihrer Datenbankaktualisierungen und ‑abfragen in den pgAudit-Protokollen an.

  1. Klicken Sie in der Cloud Console im Navigationsmenü (Symbol für Navigationsmenü) auf Alle Produkte ansehen. Klicken Sie unter Beobachtbarkeit auf Logging, um die Seite Log-Explorer zu öffnen.

  2. Fügen Sie im Tab Abfrage des Log-Explorers Folgendes ein und klicken Sie auf Abfrage ausführen:

resource.type="cloudsql_database" logName="projects/{{{project_0.project_id|(GCP Project)}}}/logs/cloudaudit.googleapis.com%2Fdata_access" protoPayload.request.@type="type.googleapis.com/google.cloud.sql.audit.v1.PgAuditEntry"
  1. Im angezeigten Histogramm sehen Sie die Audit-Aktivitäten, die mit Ihren DDL-Eingaben und den SELECT-Abfragen verknüpft sind, die Sie zuvor ausgeführt haben.

Beispiel für ein Histogramm mit sieben Balken.

  1. Klicken Sie im Histogramm auf den letzten Balken, der den ausgeführten SELECT-Abfragen entspricht.

Im Bereich Abfrageergebnisse unter dem Histogramm werden die Logeinträge aufgeführt.

  1. Wenn Sie einen Logeintrag maximieren, wird unter protoPayload.request die SELECT-Abfrage angezeigt.
pgAudit in einer Cloud SQL for PostgreSQL-Datenbank aktivieren und konfigurieren

Aufgabe 3: Cloud SQL-IAM-Datenbankauthentifizierung konfigurieren

Im Rahmen dieser Aufgabe konfigurieren Sie die Cloud SQL-IAM-Datenbankauthentifizierung. Für alle Datenbankzugriffs- und Aktualisierungsaufgaben, die Sie bisher ausgeführt haben, wurden integrierte PostgreSQL-Nutzerkonten verwendet. Sie können auch Cloud SQL for PostgreSQL-Nutzer mit Cloud IAM-Konten erstellen. Datenbanknutzerinnen und -nutzer können sich mit Cloud IAM bei Cloud SQL authentifizieren, anstatt integrierte Datenbankkonten zu verwenden. Ihnen können detaillierte Berechtigungen auf Datenbankebene gewährt werden.

Im Rahmen dieser Aufgabe konfigurieren Sie das Lab-Nutzerkonto als Cloud SQL-IAM-Nutzer, gewähren diesem mit dem Administratorkonto postgres Zugriff auf die Datenbanktabelle orders.order_items und testen dann über die Befehlszeile mit dem Befehlszeilentool psql den Zugriff auf die Datenbanktabelle orders.order_items.

Der in dieser Aufgabe verwendete Authentifizierungsprozess wird ausführlich in der IAM-Authentifizierungsdokumentation für Cloud SQL for PostgreSQL beschrieben.

Testen Sie den Datenbankzugriff mit einem Cloud IAM-Nutzer, bevor die Cloud SQL-IAM-Authentifizierung konfiguriert wird.

Sie versuchen, mit einem Cloud IAM-Nutzer auf die Datenbank zuzugreifen, bevor die Cloud SQL-IAM-Authentifizierung aktiviert wurde, um sicherzustellen, dass der Cloud IAM-Nutzer anfangs nicht auf die Daten zugreifen kann. Sie werden feststellen, dass dieser Verbindungsversuch fehlschlägt, bevor Sie mit dem nächsten Abschnitt fortfahren, um das Problem zu beheben.

  • Testen Sie in der Cloud Shell den Zugriff auf die Datenbank orders mit dem Lab-Teilnehmerkonto als Nutzername:
export USERNAME=$(gcloud config list --format="value(core.account)") export CLOUDSQL_INSTANCE=postgres-orders export POSTGRESQL_IP=$(gcloud sql instances describe $CLOUDSQL_INSTANCE --format="value(ipAddresses[0].ipAddress)") export PGPASSWORD=$(gcloud auth print-access-token) psql --host=$POSTGRESQL_IP $USERNAME --dbname=orders

Dieser Verbindungsversuch schlägt fehl und es wird eine Fehlermeldung zur Authentifizierung angezeigt, die der folgenden Meldung ähnelt, da der Cloud SQL-IAM-Nutzer noch nicht erstellt wurde:

psql --host=$POSTGRESQL_IP $USERNAME --dbname=orders psql: error: connection to server at "35.226.251.234", port 5432 failed: FATAL: password authentication failed for user "student-01-22fa974575e4@qwiklabs.net" connection to server at "35.226.251.234", port 5432 failed: FATAL: password authentication failed for user "student-01-22fa974575e4@qwiklabs.net"

Bei der Cloud SQL-IAM-Datenbankauthentifizierung werden OAuth 2.0-Zugriffstokens als Cloud IAM-Passwort verwendet, die nur eine Stunde lang gültig sind. Sie sollten das Token also jedes Mal neu generieren, wenn Sie sich authentifizieren müssen. Das Zugriffstoken sollte immer über die Umgebungsvariable PGPASSWORD an den Befehl psql übergeben werden, da der Zwischenspeicher für den psql-Passwortparameter zu klein ist, um den OAuth 2.0-Tokenstring aufzunehmen.

Cloud SQL-IAM-Nutzer erstellen

In diesem Abschnitt erstellen Sie einen Cloud SQL-IAM-Nutzer und bestätigen, dass die Cloud SQL-IAM-Nutzerauthentifizierung aktiviert wurde.

  1. Klicken Sie in der Cloud Console im Navigationsmenü (Symbol für Navigationsmenü) auf SQL.

  2. Klicken Sie auf die Cloud SQL-Instanz mit dem Namen postgres-orders.

Beachten Sie, dass im Bereich Konfiguration rechts in der Liste Datenbank-Flags und Parameter nur die Elemente pgAudit.log und cloudsql.enable_pgaudit enthalten sind.

  1. Klicken Sie im SQL-Menü (linker Bereich) unter Primäre Instanz auf Nutzer, um den Bereich Nutzer zu öffnen.

  2. Klicken Sie auf Nutzerkonto hinzufügen.

  3. Wählen Sie Cloud IAM aus.

  4. Geben Sie im Feld Hauptkonto den Namen des Lab-Teilnehmers ein:

  5. Klicken Sie auf Hinzufügen.

Warten Sie, bis der neue Nutzer hinzugefügt wurde.

Auf der Hauptübersichtsseite wird beispielsweise im Bereich Konfiguration rechts das Element cloudsql.iam_authentication der Liste Datenbank-Flags und Parameter hinzugefügt.

Dem Cloud IAM-Nutzer Zugriff auf eine Cloud SQL-Datenbanktabelle gewähren

Jetzt stellen Sie mit dem integrierten Administratorkonto postgres eine Verbindung zur Instanz postgres-orders her und gewähren dem Cloud IAM-Nutzer Zugriff auf die Tabelle orders.order_items.

  1. Klicken Sie auf der Hauptübersichtsseite für die Instanz im Abschnitt Mit dieser Instanz verbinden auf Cloud Shell öffnen.

In der Cloud Shell wird automatisch ein Befehl zum Herstellen einer Verbindung zur Instanz eingefügt.

  1. Führen Sie diesen Befehl aus und geben Sie das Passwort supersecret! ein, wenn Sie dazu aufgefordert werden.

  2. Geben Sie den folgenden SQL-Befehl ein, um zur Datenbank orders zu wechseln:

\c orders

Wenn Sie zur Eingabe eines Passworts aufgefordert werden, geben Sie erneut supersecret! ein.

  1. Geben Sie den folgenden SQL-Befehl ein, um dem Lab-Nutzer alle Berechtigungen für die Tabelle order_items zu gewähren. Der Cloud IAM-Nutzername für das Lab wurde in diese Abfrage eingefügt.
GRANT ALL PRIVILEGES ON TABLE order_items TO "{{{user_0.username|[IAM Username]}}}"; \q

Testen Sie den Datenbankzugriff mit einem Cloud IAM-Nutzer, nachdem die Cloud SQL-IAM-Authentifizierung konfiguriert wurde.

Versuchen Sie nun erneut, mit einem Cloud IAM-Nutzer auf die Datenbank zuzugreifen, nachdem die Cloud SQL-IAM-Authentifizierung aktiviert wurde, um sicherzustellen, dass der Cloud IAM-Nutzer jetzt auf die Daten zugreifen kann.

Sie können den Zugriff auf die Datenbank jetzt noch einmal mit dem Cloud IAM-Nutzer anstelle des integrierten postgres-Nutzers testen:

  1. Führen Sie in der Cloud Shell den folgenden Befehl aus, um mit dem Cloud IAM-Datenbanknutzer eine Verbindung zur Datenbank herzustellen:
export PGPASSWORD=$(gcloud auth print-access-token) psql --host=$POSTGRESQL_IP $USERNAME --dbname=orders

Die Verbindung wird hergestellt und Sie sind jetzt über die Cloud IAM-Nutzerauthentifizierung mit der Instanz verbunden.

  1. Testen Sie Ihre Zugriffsberechtigung, indem Sie diese Abfrage ausführen:
SELECT COUNT(*) FROM order_items;

Es wird nun ein Ergebnis zurückgegeben:

orders=> SELECT COUNT(*) FROM order_items; count -------- 198553 (1 row)
  1. Vergewissern Sie sich mit der folgenden Abfrage, dass Sie keinen Zugriff auf eine der anderen Tabellen haben:
SELECT COUNT(*) FROM users;

Diese Abfrage gibt eine Fehlermeldung als Ergebnis zurück:

orders=> SELECT COUNT(*) FROM users; ERROR: permission denied for table users Cloud SQL-IAM-Datenbankauthentifizierung konfigurieren

Das wars! Sie haben das Lab erfolgreich abgeschlossen.

In diesem Lab haben Sie ruhende Daten in Cloud SQL for PostgreSQL mit einem vom Kunden verwalteten Verschlüsselungsschlüssel geschützt, pgAudit aktiviert und die Cloud SQL-IAM-Datenbanknutzerauthentifizierung konfiguriert.

Google Cloud-Schulungen und -Zertifizierungen

In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.

Anleitung zuletzt am 03. September 2025 aktualisiert

Lab zuletzt am 2. Juli 2025 getestet

© 2026 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.

Vorbereitung

  1. Labs erstellen ein Google Cloud-Projekt und Ressourcen für einen bestimmten Zeitraum
  2. Labs haben ein Zeitlimit und keine Pausenfunktion. Wenn Sie das Lab beenden, müssen Sie von vorne beginnen.
  3. Klicken Sie links oben auf dem Bildschirm auf Lab starten, um zu beginnen

Privates Surfen verwenden

  1. Kopieren Sie den bereitgestellten Nutzernamen und das Passwort für das Lab
  2. Klicken Sie im privaten Modus auf Konsole öffnen

In der Konsole anmelden

  1. Melden Sie sich mit Ihren Lab-Anmeldedaten an. Wenn Sie andere Anmeldedaten verwenden, kann dies zu Fehlern führen oder es fallen Kosten an.
  2. Akzeptieren Sie die Nutzungsbedingungen und überspringen Sie die Seite zur Wiederherstellung der Ressourcen
  3. Klicken Sie erst auf Lab beenden, wenn Sie das Lab abgeschlossen haben oder es neu starten möchten. Andernfalls werden Ihre bisherige Arbeit und das Projekt gelöscht.

Diese Inhalte sind derzeit nicht verfügbar

Bei Verfügbarkeit des Labs benachrichtigen wir Sie per E-Mail

Sehr gut!

Bei Verfügbarkeit kontaktieren wir Sie per E-Mail

Es ist immer nur ein Lab möglich

Bestätigen Sie, dass Sie alle vorhandenen Labs beenden und dieses Lab starten möchten

Privates Surfen für das Lab verwenden

Am besten führen Sie dieses Lab in einem Inkognito- oder privaten Browserfenster aus. So vermeiden Sie Konflikte zwischen Ihrem privaten Konto und dem Teilnehmerkonto, die zusätzliche Kosten für Ihr privates Konto verursachen könnten.