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.

  1. 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::
    
  2. Listen Sie alle Geheimnisse in Ihrem Cluster auf, die vom Typ ibm/ibmc-s3fs sind.

    kubectl get secrets --field-selector type=ibm/ibmc-s3fs
    
  3. Überprüfen Sie den Inhalt jedes ibm/ibmc-s3fs-Geheimnisses und suchen Sie den kp-root-key-crn-Stammschlüssel im Abschnitt data. Beachten Sie alle Geheimnisse mit einem kp-root-key-crn Wert, der die Zeichenfolge hs-crypto enthä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 keine kp-root-key-crn Werte gibt, die hs-crypto enthalten, müssen Sie die Migrationsschritte nicht durchführen.

Voraussetzungen für die Migration

Führen Sie diese Schritte aus, bevor Sie beginnen.

  1. Wenn Sie ein COS-Helmdiagramm auf Ihrem Cluster installiert haben, vergewissern Sie sich, dass es mit der neuesten Version läuft.
  2. 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.
  3. 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.

  1. Listen Sie alle PVCs in Ihrem Cluster oder im entsprechenden Namensraum auf.
    oc get pvc [-n <namespace>]
    
  2. Beschreiben Sie jedes PVC.
    oc describe pvc <pvc-name>
    
  3. Suchen Sie in der PVC-Ausgabe den Abschnitt Anmerkungen und prüfen Sie, ob volume.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fs aufgeführt ist.
  4. Wenn die Anmerkung aufgelistet ist, suchen Sie die Anmerkung ibm.io/secret-name.
  5. Wenn die Anmerkung volume.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fs aufgelistet ist und der Wert ibm.io/secret-name mit einem der Geheimnisse übereinstimmt, für die Sie einen HPCS-Stammschlüssel gefunden haben, muss die PVC migriert werden. Beachten Sie den PVC-Namen.
  6. 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.

  1. Listen Sie alle Pods in Ihrem Cluster oder im entsprechenden Namespace auf.
    oc get pods [-n <namespace>]
    
  2. Beschreiben Sie jede Schale.
    oc describe pod <pod-name>
    
  3. 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.
  4. 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.

  1. 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
    
  2. Holen Sie für jedes Geheimnis, das Sie migrieren müssen, das geheime yaml.

    oc get secret <secret-name> -o yaml
    
  3. Kopieren Sie das yaml in eine Datei, um ein neues Geheimnis zu erstellen. Ändern Sie kp-root-key-crn so, 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.

  4. Wenden Sie das Geheimnis an.

    kubectl apply -f <secret-file-name>
    
  5. 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.

  1. Holen Sie sich für jeden PVC, den Sie migrieren müssen, die PVC yaml.

    oc get PVC <pvc-name> -o yaml
    
  2. Kopieren Sie die yaml in eine Datei, um eine neue PVC zu erstellen. Ändern Sie die Vermerke ibm.io/secret-name und ibm.io/secret-namespace so, 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.

  3. Bringen Sie das neue PVC an.

    oc apply -f <pvc-file-name>
    
  4. Informieren Sie sich über die Einzelheiten des PVC und überprüfen Sie, ob es sich im Zustand "Bound" befindet.

    oc get PVC <pvc>
    
  5. 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.

  1. 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>
    
  2. Befolgen Sie die Aktualisierungsstrategien auf der Grundlage der in diesem ownerReferences abschnitt.

Manuelles Wiederherstellen des Pods

  1. Holen Sie sich die pod yaml.

    oc describe <resource-type> <resource-name> -o yaml
    
  2. 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.

  3. Übernehmen Sie die neue yaml-Datei.

    oc apply -f <pod-yaml-file>
    
  4. Stellen Sie sicher, dass der Pod ausgeführt wird.

    oc get pods
    
  5. Wiederholen Sie diese Schritte für jeden Pod, der manuell migriert werden muss.