Secrets in Cloud SQL mit Secret Manager verwalten

Überblick

Die korrekte Verwaltung vertraulicher Informationen ist ein wesentlicher Bestandteil der Erstellung eines sicheren Entwicklungsworkflows. Für Cloud SQL empfehlen wir, dass Sie Ihre vertraulichen Informationen als Secrets speichern, die Sie in Secret Manager erstellen. Secrets umfassen API-Schlüssel, Passwörter, vertrauliche Informationen oder Anmeldedaten, mit denen Sie auf ein vertrauliches System zugreifen können.

Secret Manager ist praktisch und verbessert die Sicherheit. Sie können auch die Versionsverwaltung für Ihre Secrets anwenden und sie im gesamten Team teilen. Weitere Informationen zum Freigeben von Secrets für Ihr Team finden Sie unter Zugriffssteuerung (IAM)

Auf dieser Seite werden vier Anwendungsfälle für die Verwendung von Secret Manager zum Verwalten von Secrets mit Cloud SQL beschrieben:

Hinweis

Bevor Sie Secret Manager für die Verarbeitung von Secrets in Cloud SQL verwenden:

Nutzernamen und Passwörter

Wenn Sie Nutzernamen und Passwörter Ihrer Cloud SQL-Nutzerkonten als Secrets speichern, können Sie diese vertraulichen Informationen sicher und zuverlässig verwalten.

Zuerst müssen Sie einen Nutzer in Cloud SQL erstellen. Beim Erstellen dieses Nutzers müssen Sie einen Nutzernamen und ein Passwort angeben. Weitere Informationen zum Erstellen eines Nutzers in Cloud SQL finden Sie unter Nutzer mit integrierter Authentifizierung verwalten.

Erstellen Sie nach der Erstellung des Nutzers ein Secret im Secret Manager, um den Nutzernamen und das Passwort zu speichern. Dadurch wird sichergestellt, dass diese vertraulichen Informationen nicht verloren gehen. Weitere Informationen zum Erstellen und Zugreifen auf Secrets in Secret Manager finden Sie unter Secrets erstellen und aufrufen.

Cloud SQL-Instanzen

Wenn Sie eine Verbindung zu Ihrer Cloud SQL-Instanz herstellen, können Sie mithilfe von Secret Manager Secrets verwalten, um einen sicheren Entwicklungsworkflow zu erstellen.

Stellen Sie zuerst eine Verbindung zu Ihrer Cloud SQL-Instanz von Ihrem lokalen Computer aus her. Nachdem die Instanz ausgeführt wurde, können Sie mit Umgebungsvariablen eine Verbindung herstellen. Einige der mit den Variablen verknüpften Werte sind empfindlicher, beispielsweise der Name der Instanzverbindung. Für jeden Wert können Sie ein Secret in Secret Manager erstellen, um diese Informationen zu speichern und zu verwalten. Weitere Informationen zum Verwenden von Umgebungsvariablen, um eine Verbindung zu Ihrer Cloud SQL-Instanz herzustellen, finden Sie unter Beispielanwendung konfigurieren und ausführen.

Sie können den Instanzverbindungsnamen, der als Secret gespeichert ist, direkt aus Secret Manager abrufen. So erhalten Sie einen flexiblen Workflow, mit dem Ihr Team diese vertraulichen Informationen auf mehrere Anwendungen verteilen und von einem zentralen Ort aus verwalten kann. Weitere Informationen zum Abrufen von Secrets aus Secret Manager finden Sie unter Secret mit Secret Manager erstellen.

Eine Anwendung benötigt die Informationen in den Secrets, um zu starten. Diese Informationen enthalten die Werte, die den Umgebungsvariablen zugeordnet sind, die für die Verbindung mit der Anwendung verwendet werden. Ihre Anwendung greift beim Start auf die Secrets zu und verwendet dann die Secrets, um eine Verbindung zu Cloud SQL zu konfigurieren. Wenn relevante Secrets in Secret Manager aktualisiert werden, müssen Sie die Anwendung möglicherweise neu starten.

SSL/TLS-Zertifikate

Wenn Sie eine Verbindung zu einer Cloud SQL-Instanz über eine öffentliche oder private IP-Adresse herstellen, sollten Sie ein TLS-Zertifikat (Transport Layer Security) verwenden, das Daten während der Übertragung sichert. Jedes TLS-Zertifikat enthält ein Zertifikat für einen öffentlichen Schlüssel und einen privaten Schlüssel. Weitere Informationen zum Konfigurieren von TLS-Zertifikaten finden Sie unter SSL/TLS-Zertifikate konfigurieren.

Sie können das TLS-Zertifikat, das Zertifikat für den öffentlichen Schlüssel und den privaten Schlüssel als Secrets speichern, um sie sicher zu speichern und für Ihr Team freizugeben. Weitere Informationen zum Erstellen und Zugreifen auf Secrets finden Sie unter Secret mit Secret Manager erstellen. Weitere Informationen zum Freigeben von Secrets finden Sie unter Zugriffssteuerung (IAM).

Szenarien der Notfallwiederherstellung

Wenn eine primäre Instanz in Cloud SQL fehlschlägt, können Sie ein Lesereplikat zur primären Instanz hochstufen. Nachdem das Lesereplikat zur primären Instanz wird, müssen Sie den Namen der Instanzverbindung entsprechend dieser Hochstufung aktualisieren. Wenn der Name der Instanzverbindung in einem Secret gespeichert ist, müssen Sie das Secret mit dem Namen der neuen primären Instanz aktualisieren. Weitere Informationen finden Sie unter Secret bearbeiten.

Eine Möglichkeit, Secret Manager für Failover zu verwenden, besteht darin, den Namen Ihrer primären Instanz in einem Secret zu speichern und den Cloud SQL-Connector so zu konfigurieren, dass bei jeder Aktualisierung des Secrets aktualisiert wird.

Sie können das folgende Bash-Wrapper-Skript mit dem Cloud SQL-Auth-Proxy verwenden, um zu ermitteln, wann der Wert für den Instanzverbindungsnamen aktualisiert wurde, und den Proxy dann mit dem neuen Wert neu zu starten:

#!/bin/bash

SECRET_ID="my-secret-id" # TODO(developer): replace this value
REFRESH_INTERVAL=5
PORT=5432                # TODO(developer): change this port as needed

# Get the latest version of the secret and start the proxy
INSTANCE=$(gcloud secrets versions access "latest" --secret="$SECRET_ID")
cloud_sql_proxy -instances="$INSTANCE"=tcp:"$PORT" &
PID=$!

# Every 5s, get the latest version of the secret. If it's changed, restart the
# proxy with the new value.
while true; do
    sleep $REFRESH_INTERVAL
    NEW=$(gcloud secrets versions access "latest" --secret="$SECRET_ID")
    if [ "$INSTANCE" != "$NEW" ]; then
        INSTANCE=$NEW
        kill $PID
        wait $PID
        cloud_sql_proxy -instances="$INSTANCE"=tcp:"$PORT" &
        PID=$!
    fi
done

Weitere Informationen zum Erstellen eines Secrets und zum Zugriff auf ein Secret, das den Instanzverbindungsnamen des primären Replikats enthält, finden Sie unter Secret mit Secret Manager erstellen. Weitere Informationen zur Verwendung des Cloud SQL-Authentifizierungsproxys finden Sie unter Verbindung zum Cloud SQL-Authentifizierungsproxy herstellen.

Nächste Schritte

  • Sie können Secret Manager in andere Google Cloud-Produkte wie Cloud Run einbinden.
  • Informationen zum Einbinden von Secret Manager in Ihre Entwicklungsumgebung finden Sie in den verschiedenen Beispielen auf der Seite Alle Secret Manager-Codebeispiele.