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 éliminer cette erreur ?

Date de la dernière mise à jour : 02/07/2019

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 » ou « An unknown error occurred » (Une erreur inconnue s'est produite).  

Brève description

La modification de la clé de chiffrement associée à un secret Secrets Manager ne rechiffre pas les versions précédentes du secret avec la nouvelle clé de chiffrement. Cela signifie que les comptes externes, également appelés « inter-comptes » ne peuvent pas accéder à la clé, étant donné qu'ils ne disposent pas de la valeur de la clé chiffrée mise à jour. Vous devez rechiffrer le secret à l'aide de la clé modifiée AWS Key Management Service (AWS KMS) pour récupérer la valeur secrète. Pour plus d'informations, consultez Chiffrement et déchiffrement des secrets.

Solution

Suivez les instructions ci-dessous pour rechiffrer la clé de chiffrement.

AWS Management Console

1.    Ouvrez la console Secrets Manager.

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

3.    Dans Secret valeur (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).

Interface de ligne de commande AWS (CLI AWS) :

1.    Créez le fichier JSON creds.json. Dans cet exemple, {"CrossAccount":"DefaultEncryption"} est la valeur secrète.

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

2.    Exécutez la commande d'interface de ligne de commande (CLI) AWS update-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.json
    {
    "ARN": "arn:aws:secretsmanager:us-east-1:123456789012:cross-account",
    "Name": "cross-account",
    "VersionId": "f68246e8-1cfb-4c3b-952b-17c9298d3462"
    }

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

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