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 :
Créez un fichier YAML et ajoutez la ressource
KeyImport
comme valeur de l'objetkind
: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 exemplekey-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` .
- KEY_IMPORT_NAME : nom de la ressource
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
surAwaitingKeyToImport
. Pour continuer, vous devez afficher l'état de la ressource et obtenir la clé publique générée par KMS.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 exemplekey-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.- KEY_IMPORT_NAME : nom de la ressource
Créez un autre fichier YAML, ajoutez la ressource
KeyExport
comme valeur de l'objetkind
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 exemplekey-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
.
- KEY_EXPORT_NAME : nom de la ressource
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.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 exemplekey-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.
- KEY_EXPORT_NAME : nom de la ressource
Modifiez le fichier YAML contenant la ressource
KeyImport
et ajoutez-y le contenu que vous avez copié à partir de la sortie danskeyexport.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
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.
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.