Comment puis-je résoudre les problèmes liés à l'accès à un code secret crypté d'AWS Secrets Manager ?

Lecture de 5 minute(s)
0

Je souhaite récupérer un secret AWS Secrets Manager ou y accéder, mais je reçois un message d'erreur.

Résolution

Si vous ne parvenez pas à récupérer un secret du Gestionnaire de secrets ou à y accéder, l'une des erreurs suivantes peut s'afficher :

  • « Vous ne pouvez pas accéder à un secret depuis un autre compte AWS si vous le chiffrez avec la clé de service KMS par défaut ».
  • « L'accès à KMS n'est pas autorisé »
  • « Défaillance interne »
  • « Une erreur inconnue s'est produite »
  • « L'accès à KMS n'est pas autorisé. Cette version du secret n'est pas cryptée avec la clé KMS actuelle ».

Pour résoudre l'une de ces erreurs, procédez comme suit.

Remarque : Si des erreurs surviennent lors de l’exécution des commandes de l’interface de la ligne de commande AWS CLI, vérifiez que vous utilisez la version la plus récente d’AWS CLI.

Vérifiez que le secret n'est pas chiffré à l'aide d'une clé gérée par AWS KMS lorsque vous accédez à un secret d'un autre compte.

Les politiques relatives aux clés gérées par AWS ne peuvent pas être modifiées car elles sont en lecture seule. Vous pouvez toutefois consulter les politiques relatives aux clés gérées par AWS Key Management Service (AWS KMS) et aux clés gérées par le client. Étant donné que les politiques relatives aux clés gérées par AWS KMS ne peuvent pas être modifiées, il n'est pas possible d'accorder des autorisations entre comptes pour ces politiques clés. Les secrets de Secrets Manager qui sont chiffrés à l'aide d'une clé gérée par AWS KMS ne sont pas accessibles par d'autres comptes AWS.

Pour les comptes croisés, vérifiez que la politique basée sur l'identité et la politique basée sur les ressources autorisent le principal à accéder à la clé AWS KMS.

La politique d'identité doit permettre au principal d'accéder à la clé AWS KMS, de la manière suivante :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "arn:aws:kms:Region:AccountID:key/EncryptionKey"
    }
  ]
}

La politique basée sur les ressources doit permettre au principal d'accéder à la clé AWS KMS, de la manière suivante :

{
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:iam::AccountID:user/UserName",
      "arn:aws:iam::AccountID:role/RoleName"
    ]
  },
  "Action": [
    "kms:Decrypt",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}

Une fois la clé AWS KMS mise à jour, vérifiez que le secret est chiffré avec la nouvelle clé AWS KMS.

La mise à jour de la clé AWS KMS associée à un secret Secrets Manager à l'aide de l'interface de ligne de commande AWS ne rechiffre pas les versions actuelles ou précédentes du secret avec la nouvelle clé KMS. Cela signifie que les comptes externes, également appelés comptes croisés, ne peuvent pas accéder au secret car celui-ci n'a pas été rechiffré avec la nouvelle clé AWS KMS. Vous devez rechiffrer le secret à l'aide de la nouvelle clé AWS KMS pour récupérer la valeur du secret depuis le compte croisé.

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

Chiffrez à nouveau le secret à l'aide de la nouvelle clé AWS KMS.

Suivez ces étapes pour crypter à nouveau le secret avec la nouvelle clé AWS KMS à l'aide de la console de gestion AWS ou de l'interface de ligne de commande AWS.

Console de gestion AWS

1.    Ouvrez la console Secrets Manager.

2.    Dans Nom secret, choisissez votre secret.

3.    Choisissez Actions, puis choisissez la liste déroulante, sélectionnez la clé AWS KMS, cochez la case Créer une nouvelle version du secret avec une nouvelle clé de chiffrement, puis choisissez Enregistrer.

AWS CLI

Procédez comme suit à partir du compte source sur lequel se trouve le secret.

1.    Exécutez la commande get-secret-value de l'AWS CLI de la manière suivante :

$ 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 update-secret de l'AWS CLI pour crypter à nouveau la clé de chiffrement de la manière suivante :

.    Remarque : Si vous utilisez une clé gérée par le client, vous devez également disposer des autorisations kms:GenerateDataKey et kms:Decrypt sur la clé.

$ 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 get-secret-value de l'AWS CLI à partir du compte croisé de la manière suivante :

$ aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --version-stage AWSCURRENT --profile

    {"CrossAccount":"DefaultEncryption"}

Informations connexes

Comment utiliser les politiques basées sur les ressources dans la console AWS Secrets Manager pour accéder en toute sécurité aux secrets des comptes AWS

Comment partager les secrets d'AWS Secrets Manager entre des comptes AWS ?

Autorisations relatives aux secrets d'AWS Secrets Manager pour les utilisateurs d'un autre compte

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an