Come posso risolvere l'errore che ricevo quando utilizzo AWS CloudFormation per creare una chiave AWS KMS?
Quando creo una chiave Servizio AWS di gestione delle chiavi (AWS KMS) e definisco una policy AWS KMS per la chiave tramite AWS CloudFormation, la creazione della chiave non riesce. e ricevo il seguente messaggio di errore: “The new key policy will not allow you to update the key policy in the future.”
Breve descrizione
AWS KMS esegue controlli di sicurezza quando applichi una policy alla tua chiave. Un controllo di sicurezza conferma che l’amministratore principale della policy della chiave dispone delle autorizzazioni necessarie per eseguire le operazioni API CreateKey e PutKeyPolicy. Questo controllo assicura che la chiave AWS KMS rimanga gestibile.
Importante: assicurati che la policy della chiave creata consenta a un amministratore principale Identity and Access Management (IAM) AWS appropriato di amministrare la chiave AWS KMS.
Risoluzione
Nota: quando crei uno stack AWS CloudFormation, viene utilizzato un utente o un ruolo IAM per eseguire l'operazione API CreateStack. L’utente viene anche utilizzato per creare risorse specificate nel modello di AWS CloudFormation.
Crea una chiave AWS KMS
Completa i seguenti passaggi:
- Usa AWS CloudFormation per creare una chiave AWS KMS.
- Scegli un utente o un ruolo IAM appropriato da utilizzare per gestire la tua chiave in futuro.
- Utilizza il parametro di risorsa BypassPolicyLockoutSafetyCheck dopo aver incluso un amministratore principale valido nelle istruzioni Allow con l'azione kms:PutKeyPolicy.
Nell'esempio seguente, lo stack AWS CloudFormation viene creato dall'utente IAM arn:aws:iam::123456789012:user/Alice. Il ruolo KeyAdmin è designato amministratore della chiave. Il ruolo IAM KeyAdmin è autorizzato a modificare la policy della chiave quando la chiave viene creata con una policy nel seguente formato:
{ "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": "*" } ] } } }
Importante: se nella tua policy non è specificato un amministratore principale valido, BypassPolicyLockoutSafetyCheck potrebbe risultare in una chiave non gestibile. Assicurati di utilizzare un amministratore principale valido nelle tue policy.
Imposta l'amministratore principale della chiave
Per impostare l'amministratore principale della chiave del tuo provider di identità federato, utilizza il nome della risorsa Amazon (ARN) della sessione del ruolo. Puoi anche utilizzare la sessione di assunzione del ruolo di un utente amministratore specifico del tuo provider di identità esterno come amministratore principale per la gestione delle chiavi.
Esempio:
"Principal": { "AWS": "arn:aws:sts::123456789012:assumed-role/FederatedAccess/FederatedUsername" }
nell'esempio precedente, il nome del ruolo IAM è FederatedAccess e il nome dell'utente federato è FederatedUserName. Ciò consente a più utenti di utilizzare lo stesso ruolo mentre solo gli utenti attendibili possono modificare la policy della chiave.
Quando utilizzi il ruolo del servizio AWS CloudFormation per creare lo stack, puoi impostare l’amministratore principale come ARN del ruolo del servizio per evitare l'errore.
Esempio:
"Principal": { "AWS": "arn:aws:iam::123456789012:role/ServiceRoleName" }
Nell'esempio precedente, il nome del ruolo del servizio AWS CloudFormation è ServiceRoleName.
Per impostare l'utente root dell'account AWS come amministratore principale della chiave, esegui il seguente comando:
"Principal": { "AWS": "arn:aws:iam::123456789012:root" }
Nota: se l'amministratore principale della chiave è impostato sull'ARN root, assicurati di disporre delle autorizzazioni corrette. Il ruolo, il ruolo del servizio o l’utente IAM che crea lo stack AWS CloudFormation deve disporre delle autorizzazioni IAM per eseguire le operazioni API CreateKey e PutKeyPolicy.
Importante: Quando imposti l'amministratore principale della chiave sull'ARN root, qualsiasi amministratore principale nell'account con autorizzazioni IAM sufficienti può modificare la chiave, non solo l'utente root.
Dopo aver ottenuto l'autorizzazione kms:PutKeyPolicy nella policy della chiave, puoi usare AWS CloudFormation per creare la tua chiave AWS KMS. Utilizza la proprietà BypassPolicyLockoutSafetyCheck nel tuo modello di AWS CloudFormation.
Esempio:
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
Informazioni correlate
Video correlati


Contenuto pertinente
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata 2 anni fa