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 rechiffre pas les versions actuelles ou précédentes du secret avec la nouvelle clé de chiffrement utilisant l’interface de ligne de commande (AWS CLI). Cela signifie que les comptes externes, également appelés inter-comptes, ne peuvent pas accéder au secret car le secret n'a pas été rechiffré avec la nouvelle clé CMK KMS. Vous devez rechiffrer 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.

Solution

Suivez ces instructions pour rechiffrer le secret avec la nouvelle clé CMK KMS.

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

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"}