Crittografa i dati di registro in CloudWatch Logs utilizzando AWS Key Management Service - CloudWatch Registri Amazon

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à.

Crittografa i dati di registro in CloudWatch Logs utilizzando AWS Key Management Service

I dati dei gruppi di log sono sempre crittografati in CloudWatch Logs. Per impostazione predefinita, CloudWatch Logs utilizza la crittografia lato server con Advanced Encryption Standard Galois/Counter Mode (-) a 256 bit per crittografare i dati di registro inattivi. AES GCM In alternativa, puoi usare AWS Key Management Service per questa crittografia. In tal caso, la crittografia viene eseguita utilizzando un AWS KMS chiave. Crittografia utilizzando AWS KMS è abilitato a livello di gruppo di log, associando una KMS chiave a un gruppo di log, al momento della creazione del gruppo di log o dopo la sua esistenza.

Importante

CloudWatch Logs ora supporta il contesto di crittografia, utilizzando kms:EncryptionContext:aws:logs:arn come chiave e il gruppo ARN di log come valore per quella chiave. Se disponi di gruppi di log che hai già crittografato con una KMS chiave e desideri limitare l'utilizzo della chiave con un singolo account e gruppo di log, dovresti assegnare una nuova KMS chiave che includa una condizione nella IAM policy. Per ulteriori informazioni, consulta AWS KMS chiavi e contesto di crittografia.

Dopo aver associato una KMS chiave a un gruppo di log, tutti i dati appena acquisiti per il gruppo di log vengono crittografati utilizzando questa chiave. Questi dati vengono archiviati in formato crittografato per tutto il periodo di conservazione. CloudWatch I registri decrittografano questi dati ogni volta che vengono richiesti. CloudWatch I log devono disporre delle autorizzazioni per la KMS chiave ogni volta che vengono richiesti dati crittografati.

Se successivamente si dissocia una KMS chiave da un gruppo di log, CloudWatch Logs crittografa i dati appena acquisiti utilizzando il metodo di crittografia predefinito Logs. CloudWatch Tutti i dati precedentemente importati che sono stati crittografati con la chiave rimangono crittografati con la chiave. KMS KMS CloudWatch I log possono comunque restituire quei dati dopo che la KMS chiave è stata dissociata, perché CloudWatch i log possono continuare a fare riferimento alla chiave. Tuttavia, se la chiave viene successivamente disabilitata, CloudWatch Logs non è in grado di leggere i log che sono stati crittografati con quella chiave.

Importante

CloudWatch Logs supporta solo chiavi simmetriche. KMS Non utilizzare una chiave asimmetrica per crittografare i dati nei gruppi di log. Per ulteriori informazioni, consulta la sezione relativa all'uso di chiavi simmetriche e asimmetriche.

Limiti

  • Per eseguire la procedura seguente, devi avere le seguenti autorizzazioni: kms:CreateKey, kms:GetKeyPolicy e kms:PutKeyPolicy.

  • Dopo aver associato o dissociato una chiave da un gruppo di log, possono essere necessari fino a cinque minuti per rendere effettiva l'operazione.

  • Se si revoca l'accesso CloudWatch dei log a una chiave associata o si elimina una chiave associata, i dati crittografati in CloudWatch Logs non possono più essere recuperati. KMS

  • Non è possibile associare una KMS chiave a un gruppo di log utilizzando la console. CloudWatch

Fase 1: Creare un AWS KMS Chiave

Per creare una KMS chiave, usa il seguente comando create-key:

aws kms create-key

L'output contiene l'ID della chiave e Amazon Resource Name (ARN) della chiave. Di seguito è riportato un output di esempio:

{ "KeyMetadata": { "Origin": "AWS_KMS", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "", "KeyManager": "CUSTOMER", "Enabled": true, "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1478910250.94, "Arn": "arn:aws:kms:us-west-2:123456789012:key/6f815f63-e628-448c-8251-e40cb0d29f59", "AWSAccountId": "123456789012", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }

Passaggio 2: imposta le autorizzazioni sulla chiave KMS

Per impostazione predefinita, tutti AWS KMS le chiavi sono private. Solo il proprietario della risorsa può utilizzarla per crittografare e decrittare i dati. Tuttavia, il proprietario della risorsa può concedere le autorizzazioni per accedere alla KMS chiave ad altri utenti e risorse. Con questo passaggio, si CloudWatch concede al servizio Logs l'autorizzazione principale a utilizzare la chiave. Il principale del servizio deve essere lo stesso AWS Regione in cui è memorizzata la KMS chiave.

Come procedura ottimale, si consiglia di limitare l'uso della KMS chiave solo a quelle AWS account o gruppi di log specificati.

Innanzitutto, salvate la politica predefinita per la KMS chiave policy.json utilizzando il seguente get-key-policycomando:

aws kms get-key-policy --key-id key-id --policy-name default --output text > ./policy.json

Aprire il file policy.json in un editor di testo e aggiungere la sezione in grassetto da una delle seguenti istruzioni. Separare l'istruzione esistente dalla nuova istruzione con una virgola. Queste istruzioni utilizzano Condition sezioni per migliorare la sicurezza di AWS KMS chiave. Per ulteriori informazioni, consulta AWS KMS chiavi e contesto di crittografia.

La Condition sezione di questo esempio limita la chiave a un singolo gruppo ARN di log.

{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Your_account_ID:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnEquals": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region:account-id:log-group:log-group-name" } } } ] }

La Condition sezione di questo esempio limita l'uso di AWS KMS chiave per l'account specificato, ma può essere utilizzata per qualsiasi gruppo di log.

{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Your_account_ID:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region:account-id:*" } } } ] }

Infine, aggiungi la politica aggiornata utilizzando il seguente put-key-policycomando:

aws kms put-key-policy --key-id key-id --policy-name default --policy file://policy.json

Fase 3: Associare una KMS chiave a un gruppo di log

È possibile associare una KMS chiave a un gruppo di log al momento della creazione o dopo che esiste.

Per scoprire se a un gruppo di log è già associata una KMS chiave, utilizzate il seguente describe-log-groupscomando:

aws logs describe-log-groups --log-group-name-prefix "log-group-name-prefix"

Se l'output include un campo kmsKeyId, il gruppo di log è associato alla chiave visualizzata per il valore di tale campo.

Per associare la KMS chiave a un gruppo di log al momento della creazione

Utilizza il comando create-log-group come segue:

aws logs create-log-group --log-group-name my-log-group --kms-key-id "key-arn"
Per associare la KMS chiave a un gruppo di log esistente

Utilizza il comando associate-kms-key come segue:

aws logs associate-kms-key --log-group-name my-log-group --kms-key-id "key-arn"

Fase 4: Dissociazione di una chiave da un gruppo di log

Per dissociare la KMS chiave associata a un gruppo di log, utilizzate il seguente disassociate-kms-keycomando:

aws logs disassociate-kms-key --log-group-name my-log-group

AWS KMS chiavi e contesto di crittografia

Per migliorare la sicurezza del tuo AWS Key Management Service chiavi e gruppi di log crittografati, CloudWatch Logs ora inserisce il gruppo di log ARNs come parte del contesto di crittografia utilizzato per crittografare i dati di registro. Il contesto di crittografia è un insieme di coppie chiave-valore che vengono utilizzate come dati autenticati aggiuntivi. Il contesto di crittografia consente di utilizzare condizioni IAM politiche per limitare l'accesso ai AWS KMS chiave per AWS account e gruppo di log. Per ulteriori informazioni, vedere Contesto di crittografia ed elementi IAM JSON della politica: Condizione.

Si consiglia di utilizzare KMS chiavi diverse per ciascuno dei gruppi di log crittografati.

Se disponi di un gruppo di log crittografato in precedenza e ora desideri modificare il gruppo di log per utilizzare una nuova KMS chiave che funzioni solo per quel gruppo di log, segui questi passaggi.

Per convertire un gruppo di log crittografato in modo che utilizzi una KMS chiave con una politica che lo limiti a quel gruppo di log
  1. Immettete il seguente comando per trovare la ARN chiave corrente del gruppo di log:

    aws logs describe-log-groups

    L'output include la seguente riga. Prendi nota delARN. È necessario utilizzarlo nel passaggio 7.

    ... "kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/01234567-89ab-cdef-0123-456789abcdef" ...
  2. Immettete il seguente comando per creare una nuova KMS chiave:

    aws kms create-key
  3. Immettere il comando seguente per salvare la policy della nuova chiave in un file policy.json:

    aws kms get-key-policy --key-id new-key-id --policy-name default --output text > ./policy.json
  4. Utilizzare un editor di testo per aprire policy.json e aggiungere un'espressione Condition alla policy:

    { "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT-ID:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:REGION:ACCOUNT-ID:log- group:LOG-GROUP-NAME" } } } ] }
  5. Immettete il seguente comando per aggiungere la politica aggiornata alla nuova KMS chiave:

    aws kms put-key-policy --key-id new-key-ARN --policy-name default --policy file://policy.json
  6. Immettere il comando seguente per associare la policy al gruppo di log:

    aws logs associate-kms-key --log-group-name my-log-group --kms-key-id new-key-ARN

    CloudWatch I log ora crittografano tutti i nuovi dati utilizzando la nuova chiave.

  7. Quindi, revocare tutte le autorizzazioni tranne Decrypt dalla vecchia chiave. Innanzitutto, immettere il seguente comando per recuperare la vecchia policy:

    aws kms get-key-policy --key-id old-key-ARN --policy-name default --output text > ./policy.json
  8. Utilizzare un editor di testo per aprire policy.json e rimuovere tutti i valori dall'elenco Action, ad eccezione di kms:Decrypt*

    { "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Your_account_ID:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Decrypt*" ], "Resource": "*" } ] }
  9. Immettere il seguente comando per aggiungere la policy aggiornata alla vecchia chiave:

    aws kms put-key-policy --key-id old-key-ARN --policy-name default --policy file://policy.json