AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Wie behebe ich den Fehler, den ich erhalte, wenn ich AWS CloudFormation verwende, um einen AWS-KMS-Schlüssel zu erstellen?
Wenn ich einen AWS Key Management Service (AWS KMS)-Schlüssel erstelle und eine AWS-KMS-Schlüsselrichtlinie über AWS CloudFormation definiere, schlägt die Schlüsselerstellung fehl.
Kurzbeschreibung
Wenn du versuchst, einen Schlüssel zu erstellen und zu definieren, wird möglicherweise die folgende Fehlermeldung angezeigt:
„The new key policy will not allow you to update the key policy in the future.“
Der Prinzipal, den du in der Schlüsselrichtlinie angegeben hast, muss über die erforderlichen Berechtigungen verfügen, um die API-Operationen CreateKey und PutKeyPolicy auszuführen.
Wichtig: Stelle sicher, dass die von dir erstellte Schlüsselrichtlinie einem geeigneten AWS Identity and Access Management (IAM)-Prinzipal die Verwaltung des AWS-KMS-Schlüssels ermöglicht.
Lösung
Hinweis: Wenn du einen CloudFormation-Stack erstellst, übernimmt CloudFormation eine IAM-Rolle, um den CreateStack-API-Vorgang auszuführen. CloudFormation verwendet die Rolle auch, um die Ressourcen zu erstellen, die du in der CloudFormation-Vorlage angegeben hast.
Einen AWS-KMS-Schlüssel erstellen
Gehe wie folgt vor:
- Öffne die CloudFormation-Konsole.
- Verwende die Ressource AWS::KMS::Key resource, um den AWS-KMS-Schlüssel zu erstellen.
- Wähle eine(n) IAM-Benutzer:in oder eine IAM-Rolle, mit dem/der du den Schlüssel verwalten kannst.
- Füge mit der Aktion kms:PutKeyPolicy einen administrativen Prinzipal in die Allow-Anweisungen ein.
- Verwende den Ressourcenparameter BypassPolicyLockoutSafetyCheck.
Im folgenden Beispiel kann die KeyAdmin-Rolle die Schlüsselrichtlinie ändern, wenn die Richtlinie das folgende Format hat:
{ "Type": "AWS::KMS::Key", "Properties": { "Description": "A sample key", "KeyPolicy": { "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Allow access for Key Administrators", "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": "*" } ] } } }
Wichtig: Wenn in der Richtlinie kein gültiger Prinzipal angegeben ist, führt der BypassPolicyLockoutSafetyCheck möglicherweise zu einem nicht verwaltbaren Schlüssel. Stelle sicher, dass du in den Richtlinien einen gültigen Prinzipal verwendest.
Den Prinzipalschlüsseladministrator einstellen
Verwende den Amazon-Ressourcennamen (ARN) der Rollensitzung, um den Prinzipalschlüsseladministrator deines Verbundidentitätsanbieters festzulegen. Du kannst auch die Sitzung der übernommenen Rolle eines bestimmten Administratorbenutzers von deinem externen Identitätsanbieter als Prinzipal für die Schlüsselverwaltung verwenden.
Beispiel für eine Richtlinienanweisung:
"Principal": { "AWS": "arn:aws:sts::123456789012:assumed-role/FederatedAccess/FederatedUsername" }
Hinweis: Ersetze FederatedAccess durch deine IAM-Rolle und FederatedUsername durch deinen Benutzernamen.
Wenn du die CloudFormation-Servicerolle verwendest, um den Stack zu erstellen, lege den Prinzipal als Servicerollen-ARN fest.
Beispiel für eine Richtlinienanweisung:
"Principal": { "AWS": "arn:aws:iam::123456789012:role/ServiceRoleName" }
Hinweis: Ersetze ServiceRoleName durch deine Servicerolle.
Nimm die folgende Anweisung in deine Richtlinie auf, um den/die Root-Benutzer:in des AWS-Kontos als Prinzipalschlüsseladministrator:in festzulegen:
"Principal": { "AWS": "arn:aws:iam::123456789012:root" }
Hinweis: Wenn du den/die Prinzipalschlüsseladministrator:in auf den Root-ARN setzt, kann jeder Prinzipal im Konto mit ausreichenden IAM-Berechtigungen den Schlüssel ändern.
Wenn es einen Prinzipal mit der Berechtigung kms:PutKeyPolicy in der Schlüsselrichtlinie gibt, kannst du CloudFormation verwenden, um den AWS-KMS-Schlüssel zu erstellen. Setze die Eigenschaft BypassPolicyLockoutSafetyCheck in der CloudFormation-Vorlage auf true (wahr).
Beispielvorlage:
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 access for Key Administrators 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
Ähnliche Informationen
- Themen
- Management & Governance
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor einem Jahr
AWS OFFICIALAktualisiert vor 10 Monaten