Comment puis-je résoudre l'erreur « La nouvelle politique de clé ne vous permettra pas de la mettre à jour à l'avenir » lorsque j'essaie de créer une clé AWS KMS à l'aide d'AWS CloudFormation ?

Dernière mise à jour: 01-11-2022

Lorsque je crée une clé AWS KMS et que je définis une politique de clés AWS Key Management Service (AWS KMS) à l'aide d'AWS CloudFormation, la création de la clé AWS KMS échoue. Ensuite, le message d'erreur suivant s'affiche : « La nouvelle politique de clé ne vous permettra pas de la mettre à jour à l'avenir. »

Brève description

AWS KMS effectue des vérifications de sécurité lorsqu'une stratégie de clé est créée. Une vérification de sécurité confirme que le principal dans la politique de clé dispose des autorisations requises pour effectuer l'appel d'API CreateKey et l'appel d'API PutKeyPolicy. Cette vérification élimine la possibilité que la clé AWS KMS devienne ingérable, ce qui signifie que vous ne pouvez pas modifier la politique de clé ni supprimer la clé.

Important : assurez-vous que la politique de clé que vous créez permet à l'utilisateur actuel d'administrer la clé AWS KMS.

Solution

Lorsque vous créez une pile AWS CloudFormation, un utilisateur ou un rôle AWS Identity and Access Management (IAM) est utilisé pour effectuer l'appel d'API CreateStack. Cet utilisateur est également utilisé pour créer des ressources spécifiées dans le modèle AWS CloudFormation.

1.    Lorsque vous créez une clé AWS KMS à l'aide d'AWS CloudFormation, choisissez le même utilisateur ou le même rôle IAM que celui utilisé pour le principal administrateur de clé pour la clé AWS KMS.

Dans l'exemple suivant, la pile AWS CloudFormation est créée par l'utilisateur IAM arn:aws:iam::123456789012:user/Alice. Le mandataire est désigné comme l'administrateur de clé. L'utilisateur IAM « Alice » est désormais autorisé à modifier la stratégie de clé une fois la stratégie de clé créée.

"Type" : "AWS::KMS::Key",
  "Properties" : {
      "Description" : "A sample key",
      "KeyPolicy" : {
          "Version": "2012-10-17",
          "Id": "key-default-1",
          "Statement": [
              {
                  "Sid": "Allow administration of the key",
                  "Effect": "Allow",
                  "Principal": { "AWS": "arn:aws:iam::123456789012:user/Alice" },
                  "Action": [
                      "kms:Create*",
                      "kms:Describe*",
                      "kms:Enable*",
                      "kms:List*",
                      "kms:Put*",
                      "kms:Update*",
                      "kms:Revoke*",
                      "kms:Disable*",
                      "kms:Get*",
                      "kms:Delete*",
                      "kms:ScheduleKeyDeletion",
                      "kms:CancelKeyDeletion"
                  ],
                  "Resource": "*"
              },
              {
                  "Sid": "Allow use of the key",
                  "Effect": "Allow",
                  "Principal": { "AWS": "arn:aws:iam::123456789012:user/Bob" },
                  "Action": [
                      "kms:Encrypt",
                      "kms:Decrypt",
                      "kms:ReEncrypt*",
                      "kms:GenerateDataKey*",
                      "kms:DescribeKey"
                  ], 
                  "Resource": "*"
              }
          ]
      }
    }
  }

2.    Définissez l'administrateur de clé principal ou l'utilisateur racine du compte AWS en tant qu'administrateur de clé principal.

Pour définir l'administrateur de clé principal, utilisez l'Amazon Resource Name (ARN) :

Si votre pile AWS CloudFormation est créée par un SAML ou un compte d'utilisateur fédéré, définissez le principal en tant que rôle assuré par l'utilisateur pour l'Amazon Resource Name (ARN). Par exemple :

"Principal": { "AWS": "arn:aws:sts::123456789012:assumed-role/FederatedAccess/FederatedUsername" }

Remarque : le nom du rôle IAM est FederatedAccess, et le nom de l'utilisateur fédéré est FederatedUsername.

Si le rôle de service AWS CloudFormation est utilisé pour créer la pile, définissez le mandataire comme ARN du rôle de service. Par exemple :

"Principal": { "AWS": "arn:aws:iam::123456789012:role/ServiceRoleName” }

Remarque : le nom du rôle de service AWS CloudFormation est ServiceRoleName.

Pour définir l'utilisateur racine du compte AWS en tant qu'administrateur de clé principal, reportez-vous à l'exemple suivant :

"Principal": { "AWS": "arn:aws:iam::123456789012:root" }

Remarque : Si l'administrateur de clés principal est défini sur l'ARN racine, assurez-vous de disposer des autorisations appropriées. L'utilisateur, le rôle ou le rôle de service IAM qui crée la pile AWS CloudFormation doit disposer des autorisations IAM pour effectuer les appels d'API CreateKey et PutKeyPolicy.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?