Importer et exporter des clés

Cette page explique comment l'opérateur d'application (AO) peut effectuer des opérations d'importation de clés à partir de systèmes de gestion de clés (KMS) exportés. L'AO effectue les opérations d'importation et d'exportation à l'aide de l'interface de ligne de commande (CLI) kubectl à partir des ressources suivantes :

Pour en savoir plus sur ces ressources, consultez la présentation de l'API KMS.

Consultez la section Clés compatibles de la page Systèmes de gestion des clés (KMS) pour obtenir la liste complète et les détails des clés KMS compatibles.

Avant de commencer

Avant de continuer, assurez-vous de disposer des éléments suivants :

  • La commande kubectl configurée pour accéder au serveur de l'API Management. Pour ce faire, suivez les sections Obtenir un fichier kubeconfig et Interface de ligne de commande (CLI) gdcloud.

  • Les rôles "Administrateur de l'importation de clés KMS" et "Administrateur de l'exportation de clés KMS". Pour obtenir les autorisations nécessaires pour importer une clé exportée, demandez à votre administrateur de plate-forme de vous attribuer les rôles Administrateur d'importation de clés KMS (kms-keyimport-admin) et Administrateur d'exportation de clés KMS (kms-keyexport-admin).

Importer une clé exportée

Pour importer une clé exportée, procédez comme suit :

  1. Créez un fichier YAML et ajoutez la ressource KeyImport comme valeur de l'objet kind :

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

    Remplacez les variables suivantes :

    • KEY_IMPORT_NAME : nom de la ressource KeyImport, par exemple key-import-test.
    • PROJECT : nom de l'espace de noms du projet (par exemple, kms-test1).
    • MECHANISM : mécanisme de partage de clé de la clé, par exemple : `EDCH_P521_AES256` .
  2. Appliquez le contenu du fichier YAML au KMS et créez la ressource KeyImport :

    kubectl apply -f FILENAME.yaml
    

    Remplacez FILENAME par le nom du fichier YAML.

    Avec la clé publique d'une paire de clés générée en interne, KMS met à jour l'état de la ressource KeyImport sur AwaitingKeyToImport. Pour continuer, vous devez afficher l'état de la ressource et obtenir la clé publique générée par KMS.

  3. Pour afficher l'état de la ressource KeyImport et obtenir la clé publique générée par KMS, exécutez la commande suivante :

    kubectl describe keyimport KEY_IMPORT_NAME --namespace PROJECT
    

    Remplacez les variables suivantes :

    • KEY_IMPORT_NAME : nom de la ressource KeyImport, par exemple key-import-test.
    • PROJECT : nom de l'espace de noms du projet (par exemple, kms-test1).

    Une fois la commande exécutée, un résultat semblable aux lignes suivantes s'affiche :

    ...
    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>
    

    La valeur PUBLIC_KEY représente la clé publique générée par KMS. Copiez la clé publique et ajoutez-la à la ressource KeyExport à l'étape suivante.

  4. Créez un autre fichier YAML, ajoutez la ressource KeyExport comme valeur de l'objet kind et le contenu suivant :

    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
    

    Remplacez les variables suivantes :

    • KEY_EXPORT_NAME : nom de la ressource KeyExport, par exemple key-export-test.
    • PROJECT : nom de l'espace de noms du projet (par exemple, kms-test1).

    • MECHANISM : mécanisme de partage de clé de la clé, par exemple : `EDCH_P521_AES256` .

    • PUBLIC_KEY : clé publique de keyImport.Status.PeerContext.PublicKey.

    • KEY_PRIMITIVE : CRD de la clé (par exemple, aeadkey et signingkey).

    • KEY_NAME : nom de la clé, par exemple key-1.

  5. Appliquez le contenu du fichier YAML au KMS et créez la ressource KeyExport :

    kubectl apply -f FILENAME.yaml
    

    Remplacez FILENAME par le nom du fichier YAML.

    Après l'exécution de la commande, le KMS met à jour l'état de la ressource KeyExport et génère une clé exportée. Pour obtenir la clé exportée, consultez l'état de la ressource.

  6. Pour afficher l'état de la ressource, exécutez la commande suivante :

    kubectl describe keyexport KEY_EXPORT_NAME --namespace PROJECT
    

    Remplacez les variables suivantes :

    • KEY_EXPORT_NAME : nom de la ressource KeyExport, par exemple key-export-test.
    • PROJECT : nom de l'espace de noms du projet (par exemple, kms-test1).

    Une fois la commande exécutée, un résultat semblable aux lignes suivantes s'affiche :

    ...
    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 représente les métadonnées de la clé exportée. Copiez le contenu de EXPORTED_KEY pour passer à l'étape suivante.

  7. Modifiez le fichier YAML contenant la ressource KeyImport et ajoutez-y le contenu que vous avez copié à partir de la sortie dans keyexport.status.exportedkey.

    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. Après avoir modifié le fichier YAML, appliquez le contenu au KMS :

    kubectl apply -f FILENAME.yaml
    

    Une fois la commande exécutée, KMS importe la clé exportée que vous avez fournie.

  9. Pour afficher des informations sur la clé importée, exécutez la commande suivante :

    kubectl get keyimport KEY_IMPORT_NAME
    

    Vous obtenez un résultat semblable à celui-ci :

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

    KEY_PRIMITIVE représente le type de clé que vous avez importé, entre les clés AEAD et de signature.