Comment puis-je résoudre l'erreur qui s’affiche lorsque j'utilise AWS CloudFormation pour créer une clé AWS KMS ?
Lorsque je crée une clé AWS Key Management Service (AWS KMS) et que je définis une stratégie de clé AWS KMS via AWS CloudFormation, la création de la clé échoue. Ensuite, j'obtiens le message d'erreur suivant : « The new key policy will not allow you to update the key policy in the future. »
Brève description
AWS KMS effectue des contrôles de sécurité lorsque vous appliquez une stratégie de clé à votre clé. Un contrôle de sécurité confirme que le principal de la stratégie de clé dispose des autorisations nécessaires pour effectuer les opérations d’API CreateKey et PutKeyPolicy. Cette vérification permet de s'assurer que la clé AWS KMS demeure gérable.
Important : Assurez-vous que la stratégie de clé que vous créez permet à un principal AWS Identity and Access Management (IAM) approprié d'administrer la clé AWS KMS.
Résolution
Remarque : Lorsque vous créez une pile AWS CloudFormation, un utilisateur ou un rôle IAM est utilisé pour effectuer l'opération d'API CreateStack. Cet utilisateur est également utilisé pour créer les ressources spécifiées dans le modèle AWS CloudFormation.
Créer une clé AWS KMS
Procédez comme suit :
- Utilisez AWS CloudFormation pour créer une clé AWS KMS.
- Choisissez un utilisateur ou un rôle IAM approprié que vous pouvez utiliser pour gérer votre clé à l'avenir.
- Utilisez le paramètre de ressource BypassPolicyLockoutSafetyCheck après avoir inclus un principal administratif valide dans les instructions Allow avec l'action kms:PutKeyPolicy.
Dans l'exemple suivant, la pile AWS CloudFormation est créée par l'utilisateur IAM arn:aws:iam::123456789012:user/Alice. Le rôle KeyAdmin est désigné comme administrateur de clés. Le rôle IAM KeyAdmin est autorisé à modifier la stratégie de clé lorsque la clé est créée avec une stratégie de clé au format suivant :
{ "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:role/KeyAdmin" }, "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:role/KeyUser" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" } ] } } }
Important : Si aucun principal valide n'est spécifié dans votre stratégie, le contrôle BypassPolicyLockoutSafetyCheck peut générer une clé ingérable. Assurez-vous d'utiliser un principal valide dans vos stratégies.
Définir l'administrateur de clés principal
Pour définir l'administrateur de clés principal à partir de votre fournisseur d'identité fédéré, utilisez l’Amazon Resource Name (ARN) de la session de rôle. Vous pouvez également utiliser une session de rôle endossé par un utilisateur administratif spécifique de votre fournisseur d'identité externe en tant que principal de gestion des clés.
Exemple :
"Principal": { "AWS": "arn:aws:sts::123456789012:assumed-role/FederatedAccess/FederatedUsername" }
Dans l'exemple précédent, le nom du rôle IAM est FederatedAccess et le nom de l'utilisateur fédéré est FederatedUsername. Cela permet à plusieurs utilisateurs d'utiliser le même rôle, tandis que seuls les utilisateurs de confiance peuvent modifier la stratégie de clé.
Lorsque vous utilisez le rôle de service AWS CloudFormation pour créer la pile, vous pouvez définir le principal comme ARN du rôle de service afin d'éviter l'erreur.
Exemple :
"Principal": { "AWS": "arn:aws:iam::123456789012:role/ServiceRoleName" }
Dans l'exemple précédent, le nom du rôle de service AWS CloudFormation est ServiceRoleName.
Pour définir l'utilisateur racine du compte AWS comme administrateur de clés principal, exécutez la commande suivante :
"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 opérations d'API CreateKey et PutKeyPolicy.
Important : Lorsque vous définissez l'administrateur de clés principal sur l'ARN racine, tout responsable du compte disposant d'autorisations IAM suffisantes peut modifier la clé, pas seulement l'utilisateur racine.
Une fois que vous avez défini un principal avec l'autorisation kms:PutKeyPolicy dans la stratégie de clé, vous pouvez utiliser AWS CloudFormation pour créer votre clé AWS KMS. Utilisez la propriété BypassPolicyLockoutSafetyCheck dans votre modèle AWS CloudFormation.
Exemple :
myKMSKey: Type: 'AWS::KMS::Key' Properties: Description: This key is managed by the KeyAdmin role BypassPolicyLockoutSafetyCheck: true KeyPolicy: Version: 2012-10-17 Id: key-policy-1 Statement: - Sid: Allow administration of the key Effect: Allow Principal: AWS: 'arn:aws:iam::123456789012:role/KeyAdmin' 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:role/KeyUser' Action: - 'kms:DescribeKey' - 'kms:Encrypt' - 'kms:Decrypt' - 'kms:ReEncrypt*' - 'kms:GenerateDataKey' - 'kms:GenerateDataKeyWithoutPlaintext' Resource: '*' EnableKeyRotation: true PendingWindowInDays: 30
Informations connexes
- Sujets
- Management & Governance
- Balises
- AWS CloudFormation
- Langue
- Français

Contenus pertinents
- demandé il y a 8 mois
- demandé il y a 3 ans
- demandé il y a 2 ans
AWS OFFICIELA mis à jour il y a 2 mois