Kubernetes-ETCD mit OVHcloud KMS verschlüsseln
Erfahren Sie, wie Sie Kubernetes konfigurieren, um den ETCD-Speicher mit der KMIP-Schnittstelle von OVHcloud KMS zu verschlüsseln
Ziel
Dieser Leitfaden erläutert, wie Sie den Verschlüsselungsanbieter des kube-apiserver einrichten, damit Kubernetes-Cluster Daten im Ruhezustand über OVHcloud KMS mithilfe des KMIP-Protokolls verschlüsseln und entschlüsseln können.
Voraussetzungen
- Sie verfügen über einen OVHcloud Kunden-Account.
- Sie haben eine OKMS-Domain bestellt.
In der praktischen Anwendung
Installation der Binärdatei
Die Binärdatei kann direkt aus den Go-Paketen installiert werden.
Alternativ können Sie sie aus den Quellen kompilieren.
Konfiguration von OVHcloud KMS (OKMS)
Um OVHcloud KMS als Verschlüsselungsanbieter für Kubernetes zu verwenden, benötigen Sie Folgendes:
- Einen OVHcloud Benutzer und die Berechtigungen zur Verwaltung der OKMS-KMIP-Schlüssel.
- Ein Zugriffszertifikat für Ihre OKMS-Domain.
- Einen KMIP-AES-Schlüssel in Ihrem OKMS.
Benutzer und Zugriffsrechte erstellen
Erstellen Sie einen lokalen IAM-Benutzer mit Zugriffsrechten auf Ihre Domain.
Wenn Sie stattdessen IAM-Richtlinien verwenden, sollte der Benutzer mindestens die folgenden Rechte auf der OKMS-Domain besitzen:
okms:kmip:encryptokms:kmip:decryptokms:kmip:locate
Andernfalls sollte der Benutzer Mitglied einer Gruppe mit der Rolle ADMIN sein.
Alternativ können Sie einen Benutzer mit der OVHcloud CLI erstellen:
Zugriffszertifikat erstellen
Erstellen Sie ein OKMS-Zugriffszertifikat und verknüpfen Sie den zuvor erstellten Benutzer.
Speichern Sie das erzeugte Zertifikat cert.pem und den privaten Schlüssel key.pem, da sie für die Konfiguration des Verschlüsselungsanbieters benötigt werden.
KMIP-AES-Schlüssel erstellen
Um einen KMIP-AES-Schlüssel zu erstellen, können Sie die OKMS CLI verwenden:
Laden Sie zunächst die Binärdatei der neuesten Version herunter oder kompilieren Sie sie aus den Quellen.
Anschließend können Sie einen Schlüssel wie folgt erstellen:
Notieren Sie sich die Key ID des erzeugten Schlüssels. Im weiteren Verlauf dieses Leitfadens verwenden wir die Key ID 70001308-5674-43fe-93dd-6270ecac0710 als Beispiel.
Weitere Informationen zur Verwendung von okms-cli finden Sie im GitHub-Repository.
Konfiguration des Verschlüsselungsanbieters
Der Verschlüsselungsanbieter kann direkt auf den kube-apiserver-Hosts mit der folgenden Befehlszeile ausgeführt werden:
Der Verschlüsselungsanbieter unterstützt die folgenden Optionen:
Konfiguration von Kubernetes
Fügen Sie auf Grundlage des offiziellen Kubernetes-Leitfadens zum Verschlüsseln von Daten mit einem KMS-Anbieter die folgenden Flags zu Ihrem kube-apiserver hinzu:
Stellen Sie sicher, dass Sie das Verzeichnis, das den Unix-Socket enthält, auf dem der KMS-Server lauscht, in den kube-apiserver einbinden.
Ein Beispiel für encryption-config.yaml:
Konfiguration überprüfen
Erstellen Sie ein Secret mit kubectl create secret generic okms-test-secret -n default --from-literal=mykey=mydata und überprüfen Sie anschließend den Inhalt des Secrets im ETCD-Speicher, indem Sie den folgenden Befehl ausführen:
Die Ausgabe sollte unlesbar sein:
Schlüsselrotation einrichten
Um Ihren Schlüssel zu rotieren, müssen Sie zwei Verschlüsselungsanbieter ausführen, die jeweils auf einem unterschiedlichen Unix-Socket lauschen.
Nachfolgend finden Sie ein Beispiel für eine Konfigurationsdatei zur Verschlüsselung für alle API-Server, bevor der neue Schlüssel verwendet wird:
Nachdem alle API-Server neu gestartet wurden und mit dem neuen Schlüssel entschlüsseln können, verschieben Sie den Anbieter mit dem neuen Schlüssel an die oberste Stelle.
Nachdem alle Secrets mit dem neuen Schlüssel neu verschlüsselt wurden, können Sie den alten Verschlüsselungsanbieter entfernen.
Weiterführende Informationen
Treten Sie unserer User Community bei.
Erfahren Sie, wie Sie den Kubernetes External Secrets Operator mit Secret Manager verwenden.