Ansichten:
Profilanwendbarkeit: Stufe 2
Verschlüsseln Sie Kubernetes-Geheimnisse, die in etcd gespeichert sind, auf Anwendungsebene mit einem vom Kunden verwalteten Schlüssel in Cloud KMS.
Standardmäßig verschlüsselt GKE die bei Ruhe gespeicherten Kundendaten, einschließlich Geheimnisse. GKE übernimmt und verwaltet diese standardmäßige Verschlüsselung für Sie, ohne dass Sie zusätzliche Maßnahmen ergreifen müssen.
Die Verschlüsselung von Geheimnissen auf Anwendungsebene bietet eine zusätzliche Sicherheitsschicht für sensible Daten, wie benutzerdefinierte Geheimnisse und für den Betrieb des Clusters erforderliche Geheimnisse, wie Dienstkontoschlüssel, die alle in etcd gespeichert sind.
Mit dieser Funktionalität können Sie einen Schlüssel verwenden, den Sie in Cloud KMS verwalten, um Daten auf der Anwendungsebene zu verschlüsseln. Dies schützt vor Angreifern, falls sie Zugriff auf etcd erlangen.
Hinweis
Hinweis
Standardmäßig ist die Verschlüsselung von Geheimnissen auf Anwendungsebene deaktiviert.

Auswirkung

Um den Cloud KMS CryptoKey zum Schutz von etcd im Cluster zu verwenden, muss das Dienstkonto 'Kubernetes Engine Service Agent' die Rolle 'Cloud KMS CryptoKey Encrypter/Decrypter' innehaben.

Prüfung

Verwendung der Google Cloud Console:
  1. Gehen Sie zu Kubernetes Engine, indem Sie die Google Cloud Console Kubernetes Engine-Seite besuchen
  2. Klicken Sie in der Liste der Cluster auf jeden Cluster, um das Detailfenster aufzurufen, und stellen Sie sicher, dass die Verschlüsselung von Anwendungsschicht-Geheimnissen auf 'Aktiviert' gesetzt ist.
  3. Um einen bestehenden Cluster zu überprüfen, definieren Sie zuerst 3 Variablen für Clustername, Standort und Projekt und führen Sie dann den folgenden Befehl aus:
gcloud container clusters describe $CLUSTER_NAME --location $LOCATION -- project $PROJECT_ID --format json | jq '.databaseEncryption' 
Wenn korrekt konfiguriert, gibt die Ausgabe des Befehls eine Antwort mit den folgenden Details zurück:
{ "currentState": "CURRENT_STATE_ENCRYPTED", "state": "ENCRYPTED" }

Wiederherstellung

Um die Verschlüsselung von Geheimnissen auf Anwendungsebene zu aktivieren, sind mehrere Konfigurationselemente erforderlich. Diese umfassen:
  • Ein Schlüsselbund
  • Ein Schlüssel
  • Ein GKE-Dienstkonto mit der Rolle Cloud KMS CryptoKey Encrypter/Decrypter
Sobald diese erstellt sind, kann die Verschlüsselung von Geheimnissen auf Anwendungsebene in einem bestehenden oder neuen Cluster aktiviert werden.
Verwendung der Google Cloud Console:
Schlüssel erstellen:
  1. Gehen Sie zu Cloud KMS, indem Sie die Google Cloud Console Sicherheitsseite besuchen.
  2. Wählen Sie SCHLÜSSELRING ERSTELLEN.
  3. Geben Sie einen Schlüsselbundnamen und die Region ein, in der die Schlüssel gespeichert werden.
  4. Klicken Sie auf ERSTELLEN.
  5. Geben Sie einen Schlüsselnamen und einen geeigneten Rotationszeitraum im Bereich "Schlüssel erstellen" ein.
  6. Klicken Sie auf ERSTELLEN.
Um auf einem neuen Cluster zu aktivieren:
  1. Gehen Sie zu Kubernetes Engine, indem Sie die Google Cloud Console Kubernetes Engine-Seite besuchen.
  2. Klicken Sie auf CLUSTER ERSTELLEN und wählen Sie den erforderlichen Clustermodus aus.
  3. Unter der Überschrift Sicherheit, unter CLUSTER, aktivieren Sie das Kontrollkästchen Verschlüsseln von Geheimnissen auf der Anwendungsebene.
  4. Wählen Sie den KMS Key als vom Kunden verwalteten Schlüssel aus und gewähren Sie, falls dazu aufgefordert, dem GKE-Dienstkonto Berechtigungen.
  5. Klicken Sie auf ERSTELLEN.
Um auf einem bestehenden Cluster zu aktivieren:
  1. Gehen Sie zu Kubernetes Engine, indem Sie die Google Cloud Console Kubernetes Engine-Seite besuchen.
  2. Wählen Sie den zu aktualisierenden Cluster aus.
  3. Unter dem Detailbereich, im Abschnitt Sicherheit, klicken Sie auf den Stift mit der Bezeichnung Anwendungsschicht-Geheimnisse-Verschlüsselung.
  4. Aktivieren Sie Geheimnisse auf Anwendungsebene verschlüsseln und wählen Sie einen KMS Key aus.
  5. Klicken Sie auf ÄNDERUNGEN SPEICHERN.
Verwendung der Befehlszeile:
Um einen Schlüsselbund zu erstellen:
gcloud kms keyrings create <ring_name> --location <location> --project 
<key_project_id> 
Schlüssel erstellen:
gcloud kms keys create <key_name> --location <location> --keyring <ring_name> 
--purpose encryption --project <key_project_id> 
Gewähren Sie dem Dienstkonto des Kubernetes Engine Service Agent die Rolle Cloud KMS CryptoKey Encrypter/Decrypter:
gcloud kms keys add-iam-policy-binding <key_name> --location <location> -- 
keyring <ring_name> --member serviceAccount:<service_account_name> --role 
roles/cloudkms.cryptoKeyEncrypterDecrypter --project <key_project_id> 
Um einen neuen Cluster mit Verschlüsselung von Anwendungsschicht-Geheimnissen zu erstellen:
gcloud container clusters create <cluster_name> --cluster-version=latest -- zone <zone> --database-
encryption-key 
projects/<key_project_id>/locations/<location>/keyRings/<ring_name>/cryptoKey 
s/<key_name> --project <cluster_project_id>
Um auf einem bestehenden Cluster zu aktivieren:
gcloud container clusters update <cluster_name> --zone <zone> --database- 
encryption-key 
projects/<key_project_id>/locations/<location>/keyRings/<ring_name>/cryptoKey 
s/<key_name> --project <cluster_project_id>