Secrets zum Speichern sensibler Daten verwenden


Mit einem Secret können Sie vertrauliche Konfigurationsinformationen wie Passwörter und Zugriffsschlüssel in Ihrem GKE-Cluster speichern. Auf dieser Seite wird beschrieben, wie Config Connector Secret-Werte beim Konfigurieren Ihrer Google Cloud-Ressourcen verwendet.

Überblick

Dieser Abschnitt bietet eine Übersicht über die Verwendung von Secrets mit Config Connector.

Secret beim Erstellen einer Ressource verwenden

Wenn Sie eine Ressource erstellen, können Sie die Daten eines Secrets nutzen. Im Abschnitt Secret an eine Ressource übergeben wird ein Secret erstellt, das ein Passwort enthält, und dann auf das Secret eines Nutzers in einer Cloud SQL-Datenbank verwiesen.

Secrets aktualisieren

Wenn Sie ein Update auf ein Secret anwenden, aktualisiert der Config Connector die Ressource, wenn er das nächste Mal Ihren gewünschten Status abgleicht. Wenn Sie beispielsweise das Secret aktualisieren, auf das als Passwort für einen SQLUser verwiesen wird, aktualisiert Config Connector das Passwort des Nutzers.

Secrets löschen

Wenn Sie ein Secret löschen, das von einer Ressource verwendet wird, wird der Verweis der Ressource auf das Secret von Config Connector nicht entfernt. Beispiel: Wenn Sie einen SQLUser mit einem Passwort erstellen, das auf ein Secret verweist, und das Secret dann löschen, bleibt das Passwort für den SQLUser erhalten.

Fehlerbehebung

Wenn Sie eine Ressource erstellen, die auf ein nicht vorhandenes Secret verweist, erstellt Config Connector ein DependencyNotFound- oder DependencyInvalid- Ereignis.

Secrets und Kubernetes-Namespaces

Da Kubernetes keinen Zugriff auf Secrets über Namespaces hinweg zulässt, müssen Sie Secrets in jedem Namespace anwenden, wenn Sie für Ressourcen aus verschiedenen Namespaces denselben Secret-Wert verwenden.

Secret an eine Ressource weitergeben

In diesem Abschnitt erstellen Sie einen Cloud SQL-Server und legen das Passwort des Standardnutzers mit einem Secret fest.

Hinweise

Für diese Schritte ist Folgendes erforderlich:

  • Config Connector muss auf einem Kubernetes-Cluster installiert sein.
  • Die Cloud SQL Admin API muss in Ihrem Projekt aktiviert sein. Zum Prüfen, ob die API aktiviert ist, führen Sie den folgenden gcloud-Befehl aus:

    gcloud services list --filter=sqladmin.googleapis.com
    

    Wenn durch den Befehl Listed 0 items. ausgegeben wird, müssen Sie die API aktivieren. Sie können die API mit Config Connector und der Resource Manager API oder mit einem gcloud-Befehl aktivieren.

Service Usage API

  1. Config Connector verwendet die Service Usage API, um Dienst-APIs zu aktivieren. Für diese Schritte müssen Sie die Service Usage API aktivieren. Sie können diese API über die Google Cloud CLI aktivieren:
    gcloud services enable serviceusage.googleapis.com
  2. Kopieren Sie die folgende YAML-Datei in eine Datei mit dem Namen enable-sql.yaml

    apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
    kind: Service
    metadata:
      name: sqladmin.googleapis.com
    
  3. Wenden Sie enable-sql.yaml mit kubectl auf Ihren Cluster an:

    kubectl apply -f enable-sql.yaml --namespace CC_NAMESPACE
    

    Ersetzen Sie dabei CC_NAMESPACE durch den Namespace, von dem aus Config Connector Ressourcen verwaltet.

gcloud

Führen Sie den folgenden Befehl aus, um die SQL Admin API mit der Google Cloud CLI zu aktivieren:

gcloud services enable sqladmin.googleapis.com

Cloud SQL-Server erstellen

  1. Kopieren Sie das unten aufgeführte YAML-Manifest in eine Datei mit dem Namen sql-server-example.yaml. Damit werden ein Cloud SQL-Server namens sqlserver-1 und ein Nutzer mit dem Namen sqluser-sample erstellt. Das Passwort für sqluser-sample wird durch eine Ressourcenreferenz auf ein Secret namens secret-1 festgelegt.

    apiVersion: sql.cnrm.cloud.google.com/v1beta1
    kind: SQLInstance
    metadata:
      labels:
        label-one: "sql-server-example"
      name: sqlserver-1
    spec:
      region: us-central1
      databaseVersion: MYSQL_5_7
      settings:
        tier: db-g1-small
    ---
    apiVersion: sql.cnrm.cloud.google.com/v1beta1
    kind: SQLUser
    metadata:
      name: sqluser-sample
    spec:
      instanceRef:
        name: sqlserver-1
      host: "%"
      password:
        valueFrom:
          secretKeyRef:
            name: secret-1  # Name of the Secret object to extract a value from
            key: password   # Key that identifies the value to be extracted
    
  2. Kopieren Sie das unten aufgeführte YAML-Manifest in eine Datei mit dem Namen example-secret.yaml. Bearbeiten Sie vor dem Speichern den Wert für password. Damit wird secret-1, auf das im vorherigen Abschnitt verwiesen wurde, deklariert.

    apiVersion: v1
    kind: Secret
    metadata:
      name:  secret-1
    stringData:
      password: PASSWORD
    
  3. Wenden Sie die Konfigurationen auf Ihren Cluster an:

    kubectl apply -n CC_NAMESPACE -f example-secret.yaml
    kubectl apply -n CC_NAMESPACE -f sql-server-example.yaml
    

    Ersetzen Sie dabei CC_NAMESPACE durch den Namespace, von dem aus Config Connector Ressourcen verwaltet.

    Config Connector erstellt die Cloud SQL-Instanz und einen Nutzer mit dem von Ihnen angegebenen Passwort. Dieser Vorgang kann einige Minuten dauern.

  4. Warten Sie einige Minuten und prüfen Sie, ob die Instanz verfügbar ist:

    gcloud sql instances list --filter="name=sqlserver-1"

    Die Ausgabe sollte einen Server mit einem STATUS von RUNNABLE enthalten.

  5. Prüfen Sie, ob Sie eine Verbindung zur SQL-Instanz herstellen können:

    gcloud sql connect sqlserver-1 --user=sqluser-sample

    Sie werden zur Eingabe Ihres Passworts aufgefordert.

Bereinigen

Wenn Sie die Instanz nicht behalten möchten, löschen Sie die Cloud SQL-Instanz, den Nutzer und das Secret mit kubectl.

    kubectl delete -n CC_NAMESPACE -f sql-server-example.yaml
    kubectl delete -n CC_NAMESPACE -f example-secret.yaml

Ersetzen Sie CC_NAMESPACE durch den Namespace Config Connector verwaltet Ressourcen von.

Nächste Schritte