Comment importer mes clés dans AWS Key Management Service ?

Date de la dernière mise à jour : 21/08/2020

Je souhaite utiliser mes clés symétriques de 256 bits avec les services AWS. Comment puis-je importer mes clés dans AWS Key Management Service (AWS KMS) ?

Résolution

AWS KMS vous permet d'importer vos éléments de clé au sein d'une clé principale client (CMK) à utiliser avec les services AWS pris en charge par AWS KMS.

Procédez comme suit pour importer vos éléments de clé dans AWS KMS :

1.    Créez une clé CMK sans élément de clé. Notez l'ID de clé de votre clé CMK

Remarque : pour Définir des autorisations d'administration de clé et Définir des autorisations d'utilisation de clé, il est recommandé de séparer l'administrateur de clé et les rôles de la clé afin de limiter l'impact si l'une des informations d'identification venait à être exposée.

2.    Ouvrez un terminal sur votre machine locale ou une instance Amazon Elastic Compute Cloud (Amazon EC2) avec OpenSSL installé.

3.    Exécutez la commande suivante pour générer une clé symétrique de 256 bits :  

openssl rand -out PlaintextKeyMaterial.bin 32

4.    Exécutez ces commandes AWS CLI (Interface de ligne de commande AWS) pour décrire la clé et obtenir les paramètres pour l'importation :

Remarque : les commandes stockent la clé publique et importent les paramètres de jeton dans une variable.  

export KEY=`aws kms --region eu-west-2 get-parameters-for-import --key-id example1-2345-67ab-9123-456789abcdef --wrapping-algorithm RSAES_OAEP_SHA_256 --wrapping-key-spec RSA_2048 --query '{Key:PublicKey,Token:ImportToken}' --output text`

5.    Exécutez ces commandes pour placer la clé publique et le jeton d'importation dans des fichiers distincts codés en base64 :

echo $KEY | awk '{print $1}' > PublicKey.b64
echo $KEY | awk '{print $2}' > ImportToken.b64

6.    Exécutez ces commandes pour convertir le fichier encodé en base64 en fichiers binaires à importer :  

openssl enc -d -base64 -A -in PublicKey.b64 -out PublicKey.bin
openssl enc -d -base64 -A -in ImportToken.b64 -out ImportToken.bin

7.    Exécutez ces commandes pour chiffrer les éléments de clé avec la clé publique qui a été convertie en un fichier binaire :

openssl pkeyutl -in PlaintextKeyMaterial.bin -out EncryptedKeyMaterial.bin -inkey PublicKey.bin -keyform DER -pubin -encrypt -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256

8.    Exécutez ces commandes pour importer le contenu de la clé cryptée dans AWS KMS :

Remarque : dans cet exemple, le contenu de la clé n'expire pas, mais vous pouvez choisir de définir une date d'expiration pour vos éléments de clé. Pour plus d'informations, consultez la section ExpirationModel.

aws kms --region eu-west-2 import-key-material --key-id example1-2345-67ab-9123-456789abcdef --encrypted-key-material fileb://EncryptedKeyMaterial.bin --import-token fileb://ImportToken.bin --expiration-model KEY_MATERIAL_DOES_NOT_EXPIRE

9.    Vérifiez que le statut de la clé importée est défini sur Activé en l'examinant dans la console IAM ou en exécutant l'action d'API DescribeKey.

Si vous ne pouvez pas importer votre clé, vérifiez les causes potentielles suivantes :

  • Vous avez attendu plus de 24 heures et le jeton d'importation a expiré. Résolvez ce problème en téléchargeant l'algorithme d'emballage de la clé et en important à nouveau le jeton pour rechiffrer les éléments de la clé.
  • Il est possible qu'il ne s'agisse pas d'une clé symétrique de 256 bits. Vérifiez la taille du fichier de la clé chiffrée : elle doit être de 32 octets. Exécutez l'une des commandes suivantes pour vérifier la taille du fichier :

Linux

wc -c <filename>.bin

Windows

dir <filename>.bin

Pour plus d'informations, consultez la section Importation des clés dans AWS Key Management Service (AWS KMS).