Dépannage d'un magasin de clés personnalisé - AWS Key Management Service

Dépannage d'un magasin de clés personnalisé

Les magasins de clés personnalisés sont conçus pour être disponibles et résistants. Cependant, il existe certaines conditions d'erreur que vous pouvez avoir à réparer pour maintenir votre magasin de clés personnalisé opérationnel.

Comment corriger les clés KMS non disponibles

L'état de clé de AWS KMS keys dans un magasin de clés personnalisé est généralement Enabled. Comme toutes les clés KMS, l'état de clé change lorsque vous désactivez les clés KMS dans un magasin de clés personnalisé ou que vous les programmez pour suppression. Toutefois, contrairement à d'autres clés KMS, les clés KMS d'un magasin de clés personnalisé peuvent également avoir un état de clé de Unavailable.

Un état de clé de Unavailable indique que la clé KMS est dans un magasin de clés personnalisé qui a été intentionnellement déconnecté de son cluster AWS CloudHSM et qu'elle tente de le reconnecter, le cas échéant. Lorsqu'une clé KMS n'est pas disponible, vous pouvez afficher et gérer la clé KMS, mais vous ne pouvez pas l'utiliser dans les opérations de chiffrement.

Pour obtenir l'état de clé d'une clé KMS, sur la page Clés gérées par le client, veuillez consulter le champ Status (État) de la clé KMS. Ou, utilisez l'opération DescribeKey et consultez l'élément KeyState de la réponse. Pour plus de détails, veuillez consulter Affichage des clés.

Les clés KMS d'un magasin de clés personnalisé déconnecté possèdent l'état de clé Unavailable ou PendingDeletion. Les clés KMS dont la suppression a été planifiée à partir d'un magasin de clés personnalisé ont un état de clé Pending Deletion, même si le magasin de clés personnalisé est déconnecté de son cluster AWS CloudHSM. Cela vous permet d'annuler la suppression de clé planifiée sans reconnecter le magasin de clés personnalisé.

Pour corriger une clé KMS indisponible, reconnectez le magasin de clés personnalisé. Une fois le magasin de clés personnalisé reconnecté, l'état de clé des clés KMS du magasin de clés personnalisé est automatiquement restauré à son état précédent, comme Enabled ou Disabled. Les clés KMS qui sont en attente de suppression restent dans l'état PendingDeletion. Toutefois, si le problème persiste, l'activation et la désactivation d'une clé KMS indisponible ne changent pas son état. L'action d'activation ou de désactivation prend effet uniquement lorsque la clé devient disponible.

Pour obtenir de l'aide concernant les connexions ayant échoué, consultez Comment corriger un échec de connexion.

Comment corriger les clés KMS défaillantes

Les problèmes liés à la création et à l'utilisation des clés KMS dans les magasins de clés personnalisés peuvent être causés par un problème avec votre magasin de clés personnalisé, son cluster AWS CloudHSM associé, la clé KMS ou ses éléments de clé.

Lorsqu'un magasin de clés personnalisé est déconnecté de son cluster AWS CloudHSM, l'état de clé des clés KMS du magasin de clés personnalisé est Unavailable. Toutes les demandes pour créer des clés KMS dans un magasin de clé personnalisé déconnecté renvoient une exception CustomKeyStoreInvalidStateException. Toutes les demandes pour chiffrer, déchiffrer, rechiffrer ou générer les clés de données renvoient une exception KMSInvalidStateException. Pour corriger le problème, reconnectez le magasin de clés personnalisé.

Toutefois, vos tentatives d'utiliser une clé KMS de magasin de clés personnalisé pour les opérations de chiffrement peuvent échouer même si son état de clé est Enabled et que le statut de connexion du magasin de clés personnalisé est Connected. Cela peut être dû à l'une des conditions suivantes.

Comment corriger un échec de connexion

Si vous essayez de connecter un magasin de clés personnalisé à son cluster AWS CloudHSM cluster, mais que l'opération échoue, l'état de connexion du magasin de clés personnalisé devient FAILED. Pour déterminer l'état d'un magasin de clés personnalisé, consultez la colonne Statut du magasin de clés personnalisé dans AWS Management Console ou l'élément ConnectionState de la réponse DescribeCustomKeyStores.

Sinon, certains tentatives de connexion échouent rapidement en raison d'erreurs de configuration de cluster facilement détectées. Dans ce cas, le Statut ou ConnectionState est toujours DISCONNECTED. Ces échecs renvoient un message d'erreur ou une exception qui explique pourquoi la tentative a échoué. Vérifiez la description de l'exception et les exigences du cluster, corrigez le problème, mettez à jour le magasin de clés personnalisée, si nécessaire, et essayez de vous connecter à nouveau.

Lorsque la connexion a pour statut FAILED, exécutez l'opération DescribeCustomKeyStores et consultez l'élément ConnectionErrorCode de la réponse.

Note

Si le statut de connexion du magasin de clés personnalisé est FAILED, vous devez déconnecter le magasin de clés personnalisé avant de le reconnecter. Vous ne pouvez pas connecter un magasin de clés personnalisé avec un statut de connexion FAILED.

Comment répondre à un échec d'opération de chiffrement

Une opération de chiffrement qui utilise une clé KMS dans un magasin de clés personnalisé peut échouer avec une erreur telle que la suivante.

KMSInvalidStateException: KMS cannot communicate with your CloudHSM cluster

Bien qu'il s'agisse d'une erreur HTTPS 400, elle peut résulter de problèmes réseau transitoires. Pour répondre, commencez par relancer la demande. Toutefois, si elle continue d'échouer, examinez la configuration de vos composants réseau. Cette erreur est probablement causée par une mauvaise configuration d'un composant réseau, telle qu'une règle de pare-feu ou une règle de groupe de sécurité VPC qui bloque le trafic sortant.

Comment corriger les informations d'identification kmsuser non valides

Lorsque vous connectez un magasin de clés personnalisé, AWS KMS se connecte au cluster AWS CloudHSM associé en tant qu'utilisateur de chiffrement kmsuser (CU). Il reste connecté jusqu'à ce que le magasin de clés personnalisé soit déconnecté. La réponse DescribeCustomKeyStores affiche une valeur pour ConnectionState égale à FAILED et pour ConnectionErrorCode égale à INVALID_CREDENTIALS, comme illustré dans l'exemple suivant.

Si vous déconnectez le magasin de clés personnalisé et modifiez le mot de passe kmsuser, AWS KMS peut pas se connecter au cluster AWS CloudHSM avec les informations d'identification du compte CU kmsuser. Par conséquent, toutes les tentatives pour connecter le magasin de clés personnalisé échouent. La réponse DescribeCustomKeyStores réponse affiche pour ConnectionState la valeur FAILED et pour ConnectionErrorCode la valeur INVALID_CREDENTIALS, comme indiqué dans l'exemple suivant.

$ aws kms describe-custom-key-stores --custom-key-store-name ExampleKeyStore { "CustomKeyStores": [ "CloudHsmClusterId": "cluster-1a23b4cdefg", "ConnectionErrorCode": "INVALID_CREDENTIALS" "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "FAILED" ], }

De plus, au bout de cinq tentatives de connexion au cluster ayant échoué avec un mot de passe incorrect, AWS CloudHSM verrouille le compte utilisateur. Pour se connecter au cluster, vous devez modifier le mot de passe du compte.

S'il AWS KMS obtient une réponse de verrouillage lorsqu'il tente de se connecter au cluster en tant que CU kmsuser, la demande de connexion au magasin de clés personnalisé échoue. La réponse DescribeCustomKeyStores inclut pour ConnectionState la valeur FAILED et pour ConnectionErrorCode la valeur USER_LOCKED_OUT, comme illustré dans l'exemple suivant.

$ aws kms describe-custom-key-stores --custom-key-store-name ExampleKeyStore { "CustomKeyStores": [ "CloudHsmClusterId": "cluster-1a23b4cdefg", "ConnectionErrorCode": "USER_LOCKED_OUT" "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "FAILED" ], }

Pour réparer l'une ou l'autre de ces conditions, utilisez la procédure suivante.

  1. Déconnectez le magasin de clés personnalisé.

  2. Exécutez l'opération DescribeCustomKeyStores et affichez la valeur de l'élément ConnectionErrorCode dans la réponse.

    • Si la valeur de ConnectionErrorCode est INVALID_CREDENTIALS, déterminez le mot de passe actuel pour le compte kmsuser. Si nécessaire, utilisez la commande changePswd dans cloudhsm_mgmt_util afin de définir le mot de passe pour une valeur connue.

    • Si la valeur de ConnectionErrorCode est USER_LOCKED_OUT, vous devez utiliser la commande changePswd dans cloudhsm_mgmt_util pour modifier le mot de passe kmsuser.

  3. Modifiez le mot de passe actuel de kmsuser afin qu'il corresponde au mot de passe actuel de kmsuser dans le cluster. Cette action indique à AWS KMS le mot de passe à utiliser pour se connecter au cluster. Elle ne change pas le mot de passe de kmsuser dans le cluster.

  4. Connectez le magasin de clés personnalisé.

Comment supprimer les éléments de clé orphelins

Une fois planifiée la suppression d'une clé KMS à partir d'un magasin de clés personnalisé, il se peut que vous ayez besoin de supprimer manuellement la clé correspondante du cluster AWS CloudHSM associé.

Lorsque vous créez une clé KMS dans un magasin de clés personnalisé, AWS KMS crée les métadonnées de la clé KMS dans AWS KMS et génère les éléments de clé dans le cluster AWS CloudHSM associé. Lorsque vous planifiez la suppression d'une clé KMS dans un magasin de clés personnalisé, après la période d'attente, AWS KMS supprime les métadonnées de la clé KMS. Ensuite, AWS KMS met tout en œuvre pour supprimer les éléments de clé correspondants du cluster AWS CloudHSM. La tentative peut échouer si AWS KMS ne peut pas accéder au cluster, par exemple, lorsqu'il est déconnecté du magasin de clés personnalisé ou que le mot de passe kmsuser change. AWS KMS ne tente pas de supprimer les éléments de clé des sauvegardes de cluster.

AWS KMS consigne les résultats de sa tentative de suppression des éléments de clé du cluster dans l'entrée d'événement DeleteKey de vos journaux AWS CloudTrail. Ils apparaissent dans l'élément backingKeysDeletionStatus de l'élément additionalEventData, comme illustré dans l'exemple d'entrée suivant. L'entrée inclut également l'ARN de clé KMS, l'ID de cluster AWS CloudHSM et le descripteur de clé des éléments de clé (backing-key-id).

{ "eventVersion": "1.08", "userIdentity": { "accountId": "111122223333", "invokedBy": "AWS Internal" }, "eventTime": "2021-12-10T14:23:51Z", "eventSource": "kms.amazonaws.com", "eventName": "DeleteKey", "awsRegion": "eu-west-1", "sourceIPAddress": "&AWS; Internal", "userAgent": "AWS Internal", "requestParameters": null, "responseElements": null, "additionalEventData": { "customKeyStoreId": "cks-1234567890abcdef0", "clusterId": "cluster-1a23b4cdefg", "backingKeys": "[{\"keyHandle\":\"01\",\"backingKeyId\":\"backing-key-id\"}]", "backingKeysDeletionStatus": "[{\"keyHandle\":\"16\",\"backingKeyId\":\"backing-key-id\",\"deletionStatus\":\"FAILURE\"}]" }, "eventID": "c21f1f47-f52b-4ffe-bff0-6d994403cf40", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsServiceEvent", "recipientAccountId": "111122223333", "managementEvent": true, "eventCategory": "Management" }

Pour supprimer les éléments de clé du cluster AWS CloudHSM associé, utilisez une procédure comme celle qui suit. Cet exemple utilise les outils de ligne de commande AWS CLI et AWS CloudHSM, mais vous pouvez utiliser AWS Management Console au lieu de la CLI.

  1. Déconnectez le magasin de clés personnalisé, s'il n'est pas déjà déconnecté, puis connectez-vous à key_mgmt_util, comme expliqué dans Comment se déconnecter et se connecter.

  2. Utilisez la commande deleteKey dans key_mgmt_util pour supprimer la clé à partir des modules HSM du cluster.

    Par exemple, cette commande supprime la clé 262162 à partir des modules HSM du cluster. Le descripteur de clé est répertorié dans l'entrée de journal CloudTrail.

    Command: deleteKey -k 262162 Cfm3DeleteKey returned: 0x00 : HSM Return: SUCCESS Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 2 and err state 0x00000000 : HSM Return: SUCCESS
  3. Déconnectez-vous de key_mgmt_util et reconnectez le magasin de clés personnalisé comme expliqué dans Comment se déconnecter et se reconnecter.

Comment récupérer les éléments de clé supprimés pour une clé KMS

Si les éléments d'une AWS KMS key sont supprimés, la clé KMS est inutilisable et tout le texte chiffré qui l'a été sous la clé KMS ne peut pas être déchiffré. Cela peut se produire si les éléments de clé d'une clé KMS d'un magasin de clés personnalisé sont supprimés du cluster AWS CloudHSM associé. Toutefois, il peut être possible de récupérer les clés.

Lorsque vous créez une AWS KMS key (clé KMS) dans un magasin de clés personnalisé, AWS KMS se connecte au cluster AWS CloudHSM associé et crée les éléments de clé de la clé KMS. Il change également le mot de passe en une valeur que lui seul connaît et reste connecté tant que le magasin de clés personnalisé est connecté. Etant donné que seul le propriétaire des clés, à savoir, le CU qui a créé une clé, peut supprimer la clé, il est peu probable que la clé soit supprimé des modules HSM accidentellement.

Toutefois, si les éléments de clé d'une clé KMS sont supprimés des HSM dans un cluster, l'état de la clé KMS devient alors UNAVAILABLE. Si vous essayez d'utiliser la clé KMS pour une opération de chiffrement, l'opération échoue avec une exception KMSInvalidStateException. Et surtout, toutes les données chiffrées à l'aide de la clé KMS ne peuvent pas être déchiffrées.

Dans certains cas, vous pouvez récupérer les clés supprimés par en créant un cluster à partir d'une sauvegarde qui contient les clés. Cette stratégie fonctionne uniquement lorsqu'au moins une sauvegarde a été créée, tandis que la clé existait et avant qu'elle n'ait été supprimée.

Utilisez la procédure suivante pour récupérer les éléments de clé.

  1. Recherchez une sauvegarde de cluster qui contient les éléments de clé. La sauvegarde doit également contenir tous les utilisateurs et toutes les clés dont vous avez besoin pour prendre en charge le cluster et ses données chiffrées.

    Utilisez l'opération DescribeBackups pour répertorier les sauvegardes d'un cluster. Utilisez ensuite l'horodatage de la sauvegarde afin de vous aider à sélectionner une sauvegarde. Pour limiter la sortie au cluster associé au magasin de clés personnalisé, utilisez le paramètre Filters, comme illustré dans l'exemple suivant.

    $ aws cloudhsmv2 describe-backups --filters clusterIds=<cluster ID> { "Backups": [ { "ClusterId": "cluster-1a23b4cdefg", "BackupId": "backup-9g87f6edcba", "CreateTimestamp": 1536667238.328, "BackupState": "READY" }, ... ] }
  2. Créez un cluster à partir de la sauvegarde sélectionnée. Vérifiez que la sauvegarde contient la clé supprimée et les clés que le cluster nécessite.

  3. Déconnectez le magasin de clés personnalisé afin que vous puissiez modifier ses propriétés.

  4. Modifiez l'ID de cluster du magasin de clés personnalisé. Entrez l'ID du cluster que vous avez créé à partir de la sauvegarde. Étant donné que le cluster partage un historique des sauvegardes avec le cluster d'origine, le nouvel ID de cluster doit être valide.

  5. Reconnectez le magasin de clés personnalisé.

Comment se connecter en tant que kmsuser

Pour créer et gérer les clés dans le cluster AWS CloudHSM de votre magasin de clés personnalisé, AWS KMS utilise le compte utilisateur crypto kmsuser (CU). Vous créez le compte CU kmsuser dans votre cluster et fournissez son mot de passe à AWS KMS lorsque vous créez votre magasin de clés personnalisé.

En général, AWS KMS gère le compte kmsuser. Toutefois, pour certaines tâches, vous devez vous déconnecter du magasin de clés personnalisé, vous connecter au cluster en tant que CU kmsuser et utiliser les outils de ligne de commande cloudhsm_mgmt_util et key_mgmt_util.

Note

Même si un magasin de clés personnalisé est déconnecté, toutes les tentatives de création de clés KMS dans le magasin de clés personnalisé ou d'utilisation des clés KMS existantes dans les opérations de chiffrement échouent. Cette action peut empêcher les utilisateurs de stocker et d'accéder à des données sensibles.

Cette rubrique explique comment déconnecter votre magasin de clés personnalisé et vous connecter comme kmsuser, exécuter l'outil de ligne de AWS CloudHSM et déconnecter et reconnecter votre magasin de clés personnalisé.

Comment se déconnecter et se connecter

Utilisez la procédure suivante pour chaque fois que nécessaire pour vous connecter à un cluster associé en tant que CU kmsuser.

  1. Déconnectez le magasin de clés personnalisé, s'il n'est pas déjà déconnecté. Vous pouvez utiliser AWS Management Console ou l'API AWS KMS.

    Même si votre clé personnalisée est connectée, AWS KMS est connecté en tant que kmsuser. Cela vous empêche de vous connecter comme kmsuser ou de modifier le mot de passe kmsuser.

    Par exemple, cette commande utilise DisconnectCustomKeyStore pour déconnecter un exemple de magasin de clés. Remplacez l'exemple d'ID de magasin de clés personnalisé par un ID valide.

    $ aws kms disconnect-custom-key-store --custom-key-store-id cks-1234567890abcdef0
  2. Démarrez l'outil cloudhsm_mgmt_util. Utilisez la procédure décrite dans la section Préparation pour exécuter la commande cloudhsm_mgmt_util du Guide de l'utilisateur AWS CloudHSM.

  3. Connectez-vous à cloudhsm_mgmt_util sur le cluster AWS CloudHSM comme responsable de chiffrement (CO).

    Par exemple, la commande suivante se connecte en tant qu'CO nommé admin. Remplacez l'exemple de nom d'utilisateur CO et le mot de passe par des valeurs valides.

    aws-cloudhsm>loginHSM CO admin <password> loginHSM success on server 0(10.0.2.9) loginHSM success on server 1(10.0.3.11) loginHSM success on server 2(10.0.1.12)
  4. Utilisez la commande changePswd pour modifier le mot de passe du compte kmsuser en une valeur que vous connaissez. (AWS KMS effectue une rotation du mot de passe lorsque vous connectez votre magasin de clés personnalisé.) Le mot de passe doit contenir entre 7 et 32 caractères alphanumériques. Il est sensible à la casse et ne peut contenir aucun des caractères spéciaux.

    Par exemple, cette commande modifie le mot de passe de kmsuser en tempPassword.

    aws-cloudhsm>changePswd CU kmsuser tempPassword *************************CAUTION******************************** This is a CRITICAL operation, should be done on all nodes in the cluster. Cav server does NOT synchronize these changes with the nodes on which this operation is not executed or failed, please ensure this operation is executed on all nodes in the cluster. **************************************************************** Do you want to continue(y/n)?y Changing password for kmsuser(CU) on 3 nodes
  5. Connectez-vous à l'outil key_mgmt_util ou cloudhsm_mgmt_util comme kmsuser à l'aide du mot de passe que vous avez défini. Pour obtenir des instructions détaillées, consultez la section Mise en route avec cloudhsm_mgmt_util et Mise en route avec l'outil key_mgmt_util. L'outil que vous choisissez dépend de votre tâche.

    Par exemple, cette commande se connecte à key_mgmt_util.

    Command: loginHSM -u CU -s kmsuser -p tempPassword Cfm3LoginHSM returned: 0x00 : HSM Return: SUCCESS Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

Comment se déconnecter et se reconnecter

  1. Exécutez la tâche, puis déconnectez-vous de l'outil de ligne de commande. Si vous ne vous déconnectez pas, les tentatives de reconnecter votre magasin de clés personnalisé échoueront.

    Command: logoutHSM Cfm3LogoutHSM returned: 0x00 : HSM Return: SUCCESS Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
  2. Modifiez le paramètre de mot de passe de kmsuser pour le magasin de clés personnalisé.

    Cela indique à AWS KMS le mot de passe actuel pour kmsuser dans le cluster. Si vous omettez cette étape, ne AWS KMS sera pas en mesure de se connecter au cluster comme kmsuser et toutes les tentatives de reconnecter votre magasin de clés personnalisé échoueront. Vous pouvez utiliser AWS Management Console ou le paramètre KeyStorePassword de l'opération UpdateCustomKeyStore.

    Par exemple, cette commande indique à AWS KMS que le mot de passe actuel est tempPassword. Remplacez l'exemple de mot de passe par le mot de passe réel.

    $ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 --key-store-password tempPassword
  3. Reconnectez le magasin de clés personnalisé à AWS KMS. Remplacez l'exemple d'ID de magasin de clés personnalisé par un ID valide. Pendant le processus de connexion, AWS KMS modifie le mot de passe de kmsuser par une valeur que lui seul connaît.

    L'opération ConnectCustomKeyStore renvoie rapidement, mais le processus de connexion peut prendre un temps assez long. Cependant, cette réponse initiale n'indique pas que la connexion a réussi.

    $ aws kms connect-custom-key-store --custom-key-store-id cks-1234567890abcdef0
  4. Utilisez l'opération DescribeCustomKeyStores pour vérifier que le magasin de clés personnalisé est connecté. Remplacez l'exemple d'ID de magasin de clés personnalisé par un ID valide.

    Dans cet exemple, le champ de l'état de connexion montre que le magasin de clés personnalisé est désormais connecté.

    $ aws kms describe-custom-key-stores --custom-key-store-id cks-1234567890abcdef0 { "CustomKeyStores": [ "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "CloudHsmClusterId": "cluster-1a23b4cdefg", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "CONNECTED" ], }