Schlüssel importieren und exportieren

Auf dieser Seite finden Sie Anleitungen für den Application Operator (AO) zum Ausführen wichtiger Importvorgänge für Schlüssel aus exportierten Key Management Systems (KMS). Der AO führt die Import- und Exportvorgänge mit der kubectl-Befehlszeile (CLI) aus den folgenden Ressourcen aus:

Weitere Informationen zu diesen Ressourcen finden Sie in der KMS API-Übersicht.

Eine vollständige Liste und Details der von KMS unterstützten Schlüssel finden Sie im Abschnitt Unterstützte Schlüssel auf der Seite Key Management Systems (KMS).

Hinweise

Bevor Sie fortfahren, benötigen Sie Folgendes:

  • Der Befehl kubectl ist für den Zugriff auf den Management API-Server konfiguriert. Folgen Sie dazu den Abschnitten kubeconfig-Datei abrufen und gcloud-Befehlszeile (CLI).

  • Die Rollen „KMS Key Import Admin“ und „KMS Key Export Admin“. Bitten Sie Ihren Plattformadministrator, Ihnen die Rollen „KMS Key Import Admin“ (kms-keyimport-admin) und „KMS Key Export Admin“ (kms-keyexport-admin) zuzuweisen, damit Sie die erforderlichen Berechtigungen zum Importieren eines exportierten Schlüssels erhalten.

Exportierten Schlüssel importieren

Führen Sie die folgenden Schritte aus, um einen exportierten Schlüssel zu importieren:

  1. Erstellen Sie eine YAML-Datei und fügen Sie die KeyImport-Ressource als Wert des kind-Objekts hinzu:

    apiVersion: "kms.gdc.goog/v1"
    kind: KeyImport
    metadata:
      name: KEY_IMPORT_NAME
      namespace: PROJECT
    spec:
      context:
        mechanism: MECHANISM
    

    Ersetzen Sie die folgenden Variablen:

    • KEY_IMPORT_NAME: der Name der KeyImport-Ressource, z. B. key-import-test.
    • PROJECT: der Name des Projekt-Namespace, z. B. kms-test1.
    • MECHANISM: Der Mechanismus zur Schlüsselweitergabe des Schlüssels, z. B. `EDCH_P521_AES256` .
  2. Wenden Sie den Inhalt der YAML-Datei auf den KMS an und erstellen Sie die Ressource KeyImport:

    kubectl apply -f FILENAME.yaml
    

    Ersetzen Sie FILENAME durch den Namen der YAML-Datei.

    Mit dem öffentlichen Schlüssel eines intern generierten Schlüsselpaars aktualisiert KMS den Status der KeyImport-Ressource auf AwaitingKeyToImport. Um fortzufahren, müssen Sie den Status der Ressource aufrufen und den von KMS generierten öffentlichen Schlüssel abrufen.

  3. So rufen Sie den Status der KeyImport-Ressource auf und erhalten den von KMS generierten öffentlichen Schlüssel:

    kubectl describe keyimport KEY_IMPORT_NAME --namespace PROJECT
    

    Ersetzen Sie die folgenden Variablen:

    • KEY_IMPORT_NAME: Der KeyImport-Ressourcenname, z. B. key-import-test.
    • PROJECT: der Name des Projekt-Namespace, z. B. kms-test1.

    Nach der Ausführung des Befehls wird eine Ausgabe angezeigt, die in etwa so aussieht:

    ...
    Status:
      Conditions:
        Last Transition Time:  2022-12-14T20:43:50Z
        Message:               waiting for user to provide KeyToImport
        Observed Generation:   1
        Reason:                AwaitingKeyToImport
        Status:                False
        Type:                  Ready
      Imported Key Ref:
        Kind: KeyImport
        Name: key-import-test
      Peer Context:
        Private Key:
        Public Key: PUBLIC_KEY
    Events:           <none>
    

    Der Wert PUBLIC_KEY steht für den von KMS generierten öffentlichen Schlüssel. Kopieren Sie den öffentlichen Schlüssel und fügen Sie ihn im nächsten Schritt der KeyExport-Ressource hinzu.

  4. Erstellen Sie eine weitere YAML-Datei, fügen Sie die KeyExport-Ressource als Wert des kind-Objekts und den folgenden Inhalt hinzu:

    apiVersion: "kms.gdc.goog/v1"
    kind: KeyExport
    metadata:
      name: KEY_EXPORT_NAME
      namespace: PROJECT
    spec:
      context:
        mechanism: MECHANISM
        publicKey: PUBLIC_KEY
      keyToExport:
        kind: KEY_PRIMITIVE
        name: KEY_NAME
    

    Ersetzen Sie die folgenden Variablen:

    • KEY_EXPORT_NAME: der Name der KeyExport-Ressource, z. B. key-export-test.
    • PROJECT: der Name des Projekt-Namespace, z. B. kms-test1.

    • MECHANISM: Der Mechanismus zur Schlüsselweitergabe des Schlüssels, z. B. `EDCH_P521_AES256` .

    • PUBLIC_KEY: Der öffentliche Schlüssel aus keyImport.Status.PeerContext.PublicKey.

    • KEY_PRIMITIVE: Die CRD des Schlüssels, z. B. „aeadkey“ und „signingkey“.

    • KEY_NAME: der Name des Schlüssels, z. B. key-1.

  5. Wenden Sie den Inhalt der YAML-Datei auf den KMS an und erstellen Sie die Ressource KeyExport:

    kubectl apply -f FILENAME.yaml
    

    Ersetzen Sie FILENAME durch den Namen der YAML-Datei.

    Nachdem Sie den Befehl ausgeführt haben, aktualisiert der KMS den Status der KeyExport-Ressource und generiert einen exportierten Schlüssel. Um den exportierten Schlüssel zu erhalten, sehen Sie sich den Status der Ressource an.

  6. Führen Sie Folgendes aus, um den Status der Ressource aufzurufen:

    kubectl describe keyexport KEY_EXPORT_NAME --namespace PROJECT
    

    Ersetzen Sie die folgenden Variablen:

    • KEY_EXPORT_NAME: der Name der KeyExport-Ressource, z. B. key-export-test.
    • PROJECT: der Name des Projekt-Namespace, z. B. kms-test1.

    Nach der Ausführung des Befehls wird eine Ausgabe angezeigt, die in etwa so aussieht:

    ...
    Status:
    Conditions:
    Last Transition Time:  2022-12-14T20:45:57Z
    Message:               key successfully exported
    Observed Generation:   1
    Reason:                KeyExportCompleted
    Status:                True
    Type:                  Ready
    Exported Key: EXPORTED_KEY
    

    EXPORTED_KEY steht für die Metadaten des exportierten Schlüssels. Kopieren Sie den Inhalt von EXPORTED_KEY, um mit dem nächsten Schritt fortzufahren.

  7. Bearbeiten Sie die YAML-Datei, die die KeyImport-Ressource enthält, und fügen Sie den Inhalt ein, den Sie aus der Ausgabe in keyexport.status.exportedkey kopiert haben.

    apiVersion: "kms.gdc.goog/v1"
    kind: KeyImport
    metadata:
      name: key-import-test
      namespace: kms-test1
    spec:
      context:
        mechanism: EDCH_P521_AES256
      keyToImport: EXPORTED_KEY
    
  8. Wenden Sie nach dem Bearbeiten der YAML-Datei den Inhalt auf den KMS an:

    kubectl apply -f FILENAME.yaml
    

    Nach der Ausführung des Befehls importiert KMS den von Ihnen bereitgestellten exportierten Schlüssel.

  9. Führen Sie Folgendes aus, um Details zum importierten Schlüssel aufzurufen:

    kubectl get keyimport KEY_IMPORT_NAME
    

    Die Ausgabe sollte in etwa so aussehen:

    NAMESPACE   NAME             AGE    READY   REASON              KEY KIND
    kms-test1  KEY_IMPORT_NAME   60s    True    KeyImportCompleted  KEY_PRIMITIVE
    

    KEY_PRIMITIVE steht für den Typ des importierten Schlüssels, entweder AEAD- oder Signaturschlüssel.