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 Kundeninhalte, die im Ruhezustand gespeichert sind,
einschließlich Geheimnisse. GKE übernimmt und verwaltet diese Standardverschlü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 Geheimnisse, die für den
Betrieb des Clusters erforderlich sind, wie z. B. Dienstkontoschlüssel, die alle in
etcd gespeichert werden.
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 es schaffen, Zugriff auf etcd zu erlangen.
![]() |
HinweisStandardmäß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 Verschlüsseln/Entschlüsseln'
innehaben.
Prüfung
Verwendung der Google Cloud Console:
- Gehen Sie zur Kubernetes Engine-Website.
- Wählen Sie aus der Liste der Cluster jeden Cluster aus, um das Detailfenster aufzurufen, und stellen Sie sicher, dass die Verschlüsselung von Anwendungsschicht-Geheimnissen auf 'Aktiviert' gesetzt ist.
Verwendung der Befehlszeile:
gcloud container clusters describe $CLUSTER_NAME --zone $COMPUTE_ZONE -- format json | jq '.databaseEncryption'
Wenn korrekt konfiguriert, gibt die Ausgabe des Befehls eine Antwort mit den folgenden
Details zurück:
keyName=projects/<key_project_id>/locations/<location>/keyRings/<ring_name>/ cryptoKeys/<key_name>] state=ENCRYPTED { "currentState": "CURRENT_STATE_ENCRYPTED", "keyName": "projects/<key_project_id>/locations/us- central1/keyRings/<ring_name>/cryptoKeys/<key_name>", "state": "ENCRYPTED" }
Wiederherstellung
Um die Verschlüsselung von Geheimnissen auf Anwendungsebene zu aktivieren, sind mehrere
Konfigurationselemente erforderlich. Dazu gehören:
- Ein Schlüsselbund
- Ein Schlüssel
- Ein GKE-Dienstkonto mit der Rolle Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler
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:
Einen Schlüssel erstellen:
- Gehen Sie zur Cloud KMS-Website.
- Wählen Sie
CREATE KEY RING
aus. - Geben Sie einen Schlüsselbundnamen und die Region ein, in der die Schlüssel gespeichert werden.
- Klicken Sie auf
CREATE
. - Geben Sie einen Schlüsselnamen und einen geeigneten Rotationszeitraum im Bereich "Schlüssel erstellen" ein.
- Klicken Sie auf
CREATE
.
Um einen neuen Cluster zu aktivieren:
- Gehen Sie zur Kubernetes Engine-Website.
- Klicken Sie auf
CREATE CLUSTER
und wählen Sie den erforderlichen Clustermodus aus. - Unter der Überschrift
Security
, unterCLUSTER
, aktivieren Sie das KontrollkästchenEncrypt secrets at the application layer
. - Wählen Sie den KMS-Schlüssel als kundenverwalteten Schlüssel aus und erteilen Sie, falls aufgefordert, Berechtigungen für das GKE-Dienstkonto.
- Klicken Sie auf
CREATE
.
Um einen vorhandenen Cluster zu aktivieren:
- Gehen Sie zur Kubernetes Engine-Website.
- Wählen Sie den zu aktualisierenden Cluster aus.
- Unter dem Detailbereich, im Abschnitt Sicherheit, klicken Sie auf den Stift mit der Bezeichnung Anwendungsschicht-Geheimnisse-Verschlüsselung.
- Aktivieren Sie
Encrypt secrets at the application layer
und wählen Sie einen KMS-Schlüssel aus. - Klicken Sie auf
SAVE CHANGES
.
Verwendung der Befehlszeile:
Einen Schlüssel erstellen:
Einen Schlüsselbund 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>/cryptoKeys/ <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>/cryptoKeys/ <key_name> --project <cluster_project_id>