Umstellung von Hyper Protect Crypto Services auf Key Protect für COS
Migrieren Sie Ihre Hyper Protect Crypto Services (HPCS) Verschlüsselung für das IBM Cloud Object Storage s3fs Plugin und verwenden Sie stattdessen Key Protect (KP).
Vorbereitende Schritte
Bevor Sie beginnen, führen Sie die folgenden Schritte aus, um festzustellen, ob Sie Ihr COS-Plugin auf die Verwendung von Key Protect anstelle von HPCS umstellen müssen.
-
Ermitteln Sie die CRN Ihrer HPCS- und KP-Instanzen. Führen Sie den folgenden Befehl für jede Instanz aus.
ibmcloud resource service-instance <instance-name>Beispielhafte Ausgabe.
Name: my-hpcs-instance ID: crn:v1:bluemix:public:kms:us-south:a/1ab234cd5e678fgh9a0123bc4de567:f89gh01a-bcd2-3456-e789-f0g1234h5ab6:: -
Listen Sie alle Geheimnisse in Ihrem Cluster auf, die vom Typ
ibm/ibmc-s3fssind.kubectl get secrets --field-selector type=ibm/ibmc-s3fs -
Überprüfen Sie den Inhalt jedes
ibm/ibmc-s3fs-Geheimnisses und suchen Sie denkp-root-key-crn-Stammschlüssel im Abschnittdata. Beachten Sie alle Geheimnisse mit einemkp-root-key-crnWert, der die Zeichenfolgehs-cryptoenthält, was bedeutet, dass es sich um einen HPCS-Stammschlüssel handelt und migriert werden muss. Speichern Sie diese Liste der zu migrierenden Geheimnisse. Wenn es keinekp-root-key-crnWerte gibt, diehs-cryptoenthalten, müssen Sie die Migrationsschritte nicht durchführen.
Voraussetzungen für die Migration
Führen Sie diese Schritte aus, bevor Sie beginnen.
- Wenn Sie ein COS-Helmdiagramm auf Ihrem Cluster installiert haben, vergewissern Sie sich, dass es mit der neuesten Version läuft.
- Wenn Sie noch keine haben, erstellen Sie eine neue Key Protect Instanz und einen neuen Satz Key Protect Schlüssel für die Verschlüsselung. Stellen Sie sicher, dass Ihre Key Protect Instanz in der gleichen Region wie Ihr Cluster erstellt wird. Dies ist erforderlich, damit die Instanz Key Protect auf Ihre COS-Ressourcen zugreifen kann.
- Erstellen Sie eine Dienst-zu-Dienst-Autorisierung für Key Protect, um auf Ihre COS-Ressourcen zuzugreifen. Legen Sie den Quelldienst als Key Protect und den Zieldienst als COS fest, und setzen Sie die Zugriffsstufe mindestens auf Reader.
Migrationsschritte
Folgen Sie diesen Schritten, um Ihr COS-Plugin auf Key Protect zu migrieren.
Wenn sich alle Ihre COS-Geheimnisse und PVCs in einem bestimmten Namensraum befinden, können Sie die folgenden Schritte auf diesen Namensraum anwenden. Andernfalls durchsuchen Sie alle Namesapces in Ihrem Cluster.
Schritt 1. Liste der zu migrierenden PVCs
Bestimmen Sie, welche PVCs migriert werden müssen.
- Listen Sie alle PVCs in Ihrem Cluster oder im entsprechenden Namensraum auf.
oc get pvc [-n <namespace>] - Beschreiben Sie jedes PVC.
oc describe pvc <pvc-name> - Suchen Sie in der PVC-Ausgabe den Abschnitt Anmerkungen und prüfen Sie, ob
volume.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fsaufgeführt ist. - Wenn die Anmerkung aufgelistet ist, suchen Sie die Anmerkung
ibm.io/secret-name. - Wenn die Anmerkung
volume.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fsaufgelistet ist und der Wertibm.io/secret-namemit einem der Geheimnisse übereinstimmt, für die Sie einen HPCS-Stammschlüssel gefunden haben, muss die PVC migriert werden. Beachten Sie den PVC-Namen. - Wiederholen Sie diese Schritte für jedes PVC. Speichern Sie die Liste der zu migrierenden PVCs.
Schritt 2. Zu migrierende Pods auflisten
Bestimmen Sie, welche Pods migriert werden müssen.
- Listen Sie alle Pods in Ihrem Cluster oder im entsprechenden Namespace auf.
oc get pods [-n <namespace>] - Beschreiben Sie jede Schale.
oc describe pod <pod-name> - Suchen Sie in der Ausgabe den Abschnitt Volumes und überprüfen Sie die Namen der einzelnen PersistentVolumeClaim. Wenn einer der PVCs in der Ausgabe auch in der Liste der zu migrierenden PVCs enthalten ist, dann muss der Pod migriert werden. Notieren Sie sich den Namen des Pods.
- Wiederholen Sie diese Schritte für jede Hülse. Speichern Sie die Liste der zu migrierenden Pods.
Schritt 3. Neue Geheimnisse erstellen
Erstellen Sie neue Geheimnisse, die den Key Protect Root Key anstelle des HPCS Root Key verwenden.
-
Holen Sie sich die CRN Ihrer Key Protect Instanz und kodieren Sie sie auf base64.
ibmcloud resource service-instance <kp-instance-name>echo -n "<root_key_CRN>" | base64 -
Holen Sie für jedes Geheimnis, das Sie migrieren müssen, das geheime yaml.
oc get secret <secret-name> -o yaml -
Kopieren Sie das yaml in eine Datei, um ein neues Geheimnis zu erstellen. Ändern Sie
kp-root-key-crnso, dass es stattdessen auf die base64 kodierte CRN der Instanz Key Protect verweist. Fügen Sie eine Zeichenkette an das Ende des Geheimnamens an, um das neue Geheimnis vom alten zu unterscheiden.Wenn Sie Ihre PVCs neu erstellen, müssen Sie die neue Kopie des von den PVCs verwendeten Geheimnisses angeben. Achten Sie darauf, dass der Name des neuen Geheimnisses dem alten Geheimnis entspricht, aber dennoch eine Unterscheidung zwischen den beiden ermöglicht.
-
Wenden Sie das Geheimnis an.
kubectl apply -f <secret-file-name> -
Wiederholen Sie diese Schritte für jedes Geheimnis, das migriert werden soll.
Schritt 4. PVCs neu erstellen
Erstellen Sie Ihre PVCs neu, so dass sie auf die neuen Geheimnisse verweisen.
-
Holen Sie sich für jeden PVC, den Sie migrieren müssen, die PVC yaml.
oc get PVC <pvc-name> -o yaml -
Kopieren Sie die yaml in eine Datei, um eine neue PVC zu erstellen. Ändern Sie die Vermerke
ibm.io/secret-nameundibm.io/secret-namespaceso, dass sie auf das neue Geheimnis verweisen, das dem zuvor aufgeführten Geheimnis entspricht. Fügen Sie eine Zeichenkette am Ende des PVC-Namens an, um ihn von dem alten PVC zu unterscheiden. -
Bringen Sie das neue PVC an.
oc apply -f <pvc-file-name> -
Informieren Sie sich über die Einzelheiten des PVC und überprüfen Sie, ob es sich im Zustand "Bound" befindet.
oc get PVC <pvc> -
Wiederholen Sie diese Schritte für jedes PVC, das migriert werden muss.
Schritt 5. Pods aktualisieren
Aktualisieren Sie die Pods so, dass sie auf die neuen PVCs zeigen.
- Bestimmen Sie die Art der verwendeten Ressource. Suchen Sie in der Ausgabe den Abschnitt ownerReferences und notieren Sie die Art der Ressource und den Namen der aufgeführten Ressource.
oc describe pod <pod-name> - Befolgen Sie die Aktualisierungsstrategien auf der Grundlage der in diesem ownerReferences abschnitt.
DaemonSet: Laufende Aktualisierung auf einem DaemonSetDeployment: Aktualisieren einer BereitstellungStatefulSet: Aktualisierungsstrategien für StatefulSets- Keine Ressource aufgeführt: Wenn keine Ressource aufgeführt ist, ist der Pod ein eigenständiger Pod und muss manuell mit dem neuen PVC-Namen neu erstellt werden. Befolgen Sie die Schritte unter Manuelle Neuerstellung des Pods.
Manuelles Wiederherstellen des Pods
-
Holen Sie sich die pod yaml.
oc describe <resource-type> <resource-name> -o yaml -
Kopieren Sie die yaml in eine Datei, um einen neuen Pod zu erstellen. Ändern Sie im Abschnitt volumes der yaml-Datei den Eintrag PersistentVolumeClaim um auf die neue PVC zu verweisen, die der zuvor aufgeführten PVC entspricht. Fügen Sie am Ende des neuen Ressourcennamens eine Zeichenfolge an, um ihn von der alten Ressource zu unterscheiden.
-
Übernehmen Sie die neue yaml-Datei.
oc apply -f <pod-yaml-file> -
Stellen Sie sicher, dass der Pod ausgeführt wird.
oc get pods -
Wiederholen Sie diese Schritte für jeden Pod, der manuell migriert werden muss.