L'accès depuis un autre compte KMS ne me permet pas d'accéder à un secret AWS Secrets Manager après la mise à jour de la clé de chiffrement, et je reçois un message d'erreur. Comment résoudre ce problème ?

Dernière mise à jour : 08-01-2021

J'ai essayé de récupérer un secret AWS Secrets Manager ou d'y accéder et j'ai reçu une erreur similaire à l'une des erreurs ci-dessous :

« Access to KMS is not allowed » (L'accès à KMS n'est pas autorisé), « InternalFailure » (Échec interne) ou « An unknown error occurred » (Une erreur inconnue s'est produite).

-ou-

« Access to KMS is not allowed. This version of secret is not encrypted with the current KMS key. » (L'accès à KMS n'est pas autorisé. Cette version de secret n'est pas chiffrée avec la clé KMS actuelle).

Brève description

La modification de la clé de chiffrement associée à un secret Secrets Manager ne chiffre pas de nouveau les versions actuelles ou précédentes du secret avec la nouvelle clé de chiffrement utilisant AWS Command Line Interface (AWS CLI). Cela signifie que les comptes externes, également appelés comptes croisés, ne peuvent pas accéder au secret, car le secret n'a pas été chiffré de nouveau avec la nouvelle clé KMS. Vous devez chiffrer de nouveau le secret à l'aide de la nouvelle clé AWS Key Management Service (AWS KMS) pour récupérer la valeur secrète à partir de l’inter-compte.

Remarque : l'utilisation de la console Secrets Manager pour modifier la clé de chiffrement associée à un secret crée une nouvelle version du secret et la chiffre avec la nouvelle clé de chiffrement. Pour plus d'informations, consultez la section Chiffrement et déchiffrement des secrets.

Résolution

Suivez ces instructions pour chiffrer à nouveau le secret à l'aide de la nouvelle clé KMS.

Remarque : si vous recevez des erreurs lors de l'exécution des commandes AWS CLI, assurez-vous d'utiliser leur version la plus récente.

AWS Management Console

1.    Ouvrez la console Secrets Manager.

2.    Dans Secret name (Nom du secret), choisissez votre secret.

3.    Dans Secret value (Valeur du secret), choisissez Retrieve secret value (Récupérer la valeur secrète), Edit (Modifier), puis Save (Enregistrer).

Vous recevez le message « Your secret value has been successfully edited » (Votre valeur secrète a été modifiée avec succès).

AWS CLI

Suivez ces étapes à partir du compte source où réside le secret.

1.    Exécutez la commande d'interface de ligne de commande (CLI) AWS get-secret-value (obtenir la valeur du secret) comme dans l'exemple ci-dessous :

$ aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --query SecretString --output text

    {"CrossAccount":"DefaultEncryption"}

2.    Créez un fichier nommé creds.txt.

$ cat creds.txt
         
    {"CrossAccount":"DefaultEncryption"}

3.    Exécutez la commande d'interface de ligne de commande (CLI) AWS update-secret (mettre à jour le secret) pour rechiffrer la clé de chiffrement comme dans l'exemple suivant :

$ aws secretsmanager update-secret --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --secret-string file://creds.txt
    {
    "ARN": "arn:aws:secretsmanager:us-east-1:123456789012:cross-account",
    "Name": "cross-account",
    "VersionId": "f68246e8-1cfb-4c3b-952b-17c9298d3462"
    }
4.    Exécutez la commande d'interface de ligne de commande (CLI) AWS get-secret-value à partir de l’inter-compte comme dans l'exemple suivant :
$ aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --version-stage AWSCURRENT --profile cross-account-user --region us-east-1 --query SecretString --output text

    {"CrossAccount":"DefaultEncryption"}