Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
AWS KMS policy chiave e autorizzazioni per crittografare i risultati di CloudFormation Hooks a riposo
Questo argomento descrive come impostare la politica AWS KMS chiave e le autorizzazioni necessarie quando si specifica una chiave gestita dal cliente per crittografare i dati delle annotazioni Hooks disponibile dall'API. GetHookResult
Nota
CloudFormation Hooks non necessita di un'autorizzazione aggiuntiva per utilizzare l'impostazione predefinita per Chiave di proprietà di AWS crittografare i dati delle annotazioni nel tuo account.
Argomenti
Panoramica
Quanto segue AWS KMS keys può essere utilizzato per crittografare i dati delle annotazioni Hook:
-
Chiave di proprietà di AWS— Per impostazione predefinita, CloudFormation utilizza an Chiave di proprietà di AWS per crittografare i dati. Non è possibile visualizzare, gestire Chiavi di proprietà di AWS, utilizzare o controllare il loro utilizzo. Tuttavia, non è necessario eseguire una configurazione esplicita per proteggere la chiave utilizzata per crittografare i dati. Chiavi di proprietà di AWS sono forniti gratuitamente (senza canoni mensili o costi di utilizzo). A meno che non sia necessario verificare o controllare la chiave di crittografia che protegge i dati delle annotazioni, an Chiave di proprietà di AWS è una buona scelta.
-
Chiave gestita dal cliente: CloudFormation supporta l'uso di una chiave simmetrica gestita dal cliente che puoi creare, possedere e gestire per aggiungere un secondo livello di crittografia rispetto a quella esistente. Chiave di proprietà di AWS AWS KMS si applicano costi. Per ulteriori informazioni, consulta Creazione di chiavi nella Guida per gli sviluppatori di AWS Key Management Service . Per gestire la tua chiave, usa il AWS Key Management Service (AWS KMS) nella AWS KMS console
AWS CLI, o nell' AWS KMS API. Per ulteriori informazioni, consulta la Guida per gli sviluppatori di AWS Key Management Service.
Puoi configurare le chiavi gestite dal cliente durante la creazione e l'aggiornamento degli Hooks. Quando fornisci la chiave gestita dal cliente, CloudFormation utilizza questa chiave per crittografare i dati delle annotazioni prima di archiviarli. Quando successivamente si accede ai dati delle annotazioni durante l'operazione dell'GetHookResultAPI, li decrittografa CloudFormation automaticamente. Per informazioni sulla configurazione della chiave di crittografia per Hooks, consulta. Riferimento alla sintassi dello schema di configurazione Hook
Importante
Tieni presente che l'KmsKeyIdopzione per specificare una chiave gestita dal cliente è attualmente disponibile solo quando utilizzi AWS CLI per configurare il tuo Hook.
Utilizzo del contesto di crittografia per controllare l'accesso alla chiave gestita dal cliente
CloudFormation Hooks include automaticamente il contesto di crittografia in ogni operazione di memorizzazione e recupero delle annotazioni. Ciò consente di impostare le condizioni del contesto di crittografia nella politica delle chiavi per garantire che la chiave possa essere utilizzata solo per Hook specifici:
-
kms:EncryptionContext:aws:cloudformation:hooks:service— Assicura che la chiave venga utilizzata solo dal servizio CloudFormation Hooks. -
kms:EncryptionContext:aws:cloudformation:account-id— Impedisce l'utilizzo delle chiavi tra account abbinando il tuo Account AWS ID. -
kms:EncryptionContext:aws:cloudformation:arn— Limita l'utilizzo a specifici Hooks utilizzando modelli ARN.
Queste condizioni forniscono una protezione aggiuntiva contro i confusi attacchi secondari collegando crittograficamente i dati crittografati allo specifico contesto Hook.
Policy delle chiavi KMS gestite dal cliente
Quando si crea una chiave gestita dal cliente, è necessario definirne la politica chiave per consentire al servizio CloudFormation Hooks di eseguire le operazioni. AWS KMS Per utilizzare la seguente politica chiave, sostituiscila placeholder values con le tue informazioni.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableIAMUserDescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cloudformation.us-east-1.amazonaws.com" } } }, { "Sid": "EnableIAMUserGenerateDataKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cloudformation.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:account-id": "111122223333" }, "StringLike": { "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:111122223333:hook/*" } } }, { "Sid": "EnableIAMUserDecrypt", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cloudformation.us-east-1.amazonaws.com" } } }, { "Sid": "AllowHooksServiceDescribeKey", "Effect": "Allow", "Principal": { "Service": "hooks.cloudformation.amazonaws.com" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:cloudformation:*:111122223333:hook/*" } } }, { "Sid": "AllowHooksService", "Effect": "Allow", "Principal": { "Service": "hooks.cloudformation.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:account-id": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:cloudformation:*:111122223333:hook/*", "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:111122223333:hook/*" } } } ] }
Questa policy concede le autorizzazioni sia ai ruoli IAM (prime tre istruzioni) che al servizio CloudFormation Hooks (ultime due istruzioni). La chiave di kms:ViaService condizione garantisce che la chiave KMS possa essere utilizzata solo tramite CloudFormation, impedendo chiamate dirette all'API KMS. Le operazioni chiave sono:
-
kms:DescribeKey— Convalida le proprietà chiave e i metadati. Questa operazione è in istruzioni separate perché non può essere utilizzata con le condizioni del contesto di crittografia. -
kms:GenerateDataKey— Genera chiavi di crittografia dei dati per crittografare le annotazioni prima dell'archiviazione. Questa operazione include le condizioni del contesto di crittografia per il controllo degli accessi con ambito. -
kms:Decrypt— Decripta i dati delle annotazioni precedentemente crittografati. Per i ruoli IAM, ciò include la condizione.kms:ViaServicePer il responsabile del servizio, ciò include le condizioni del contesto di crittografia.
Le chiavi aws:SourceAccount e aws:SourceArn condition forniscono la protezione principale contro gli attacchi confusi dei vice. Le condizioni del contesto di crittografia forniscono livelli di convalida aggiuntivi. Per ulteriori informazioni, consulta Using aws:SourceArn or aws:SourceAccount condition keys nella AWS Key Management Service Developer Guide.
Importante
I ruoli di esecuzione degli hook non richiedono AWS KMS autorizzazioni. Il responsabile del servizio CloudFormation Hooks esegue tutte le AWS KMS operazioni.
Autorizzazioni KMS per l'API SetTypeConfiguration
Durante la chiamata SetTypeConfigurationAPI, CloudFormation convalida le autorizzazioni degli utenti per crittografare i dati delle annotazioni con la chiave specificata. AWS KMS Aggiungi la seguente policy IAM all'utente o al ruolo che configurerà la crittografia utilizzando l'API. SetTypeConfiguration Sostituisci con l'ARN della tua chiave gestita dal cliente.arn:aws:kms:us-east-1:123456789012:key/abc-123
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudformation:SetTypeConfiguration", "Resource": "*" }, { "Effect": "Allow", "Action": "kms:DescribeKey", "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123" }, { "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:account-id": "123456789012" }, "StringLike": { "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:123456789012:hook/*" } } } ] }
Autorizzazioni KMS per l'API GetHookResult
GetHookResultPer richiedere Hooks che utilizzano la chiave gestita dal cliente, gli utenti devono disporre kms:Decrypt dell'autorizzazione per tale chiave. Aggiungi la seguente policy IAM all'utente o al ruolo che GetHookResult chiamerà. Sostituisci con l'ARN della tua chiave gestita dal cliente.arn:aws:kms:us-east-1:123456789012:key/abc-123
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudformation:GetHookResult", "Resource": "*" }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123" } ] }