Crittografa i dati di log 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 log in CloudWatch Logs utilizzando AWS Key Management Service

I dati del gruppo di log sono sempre crittografati in CloudWatch Logs. Per impostazione predefinita, CloudWatch Logs utilizza la crittografia lato server con Advanced Encryption Standard Galois (AES-GCM) a 256 bit per crittografare i dati di log a riposo. In alternativa, è possibile utilizzare AWS Key Management Service per questa crittografia. In tal caso, la crittografia viene eseguita utilizzando una AWS KMS chiave. La crittografia mediante AWS KMS viene abilitata a livello di gruppi di log, associando una chiave KMS a un gruppo di log, al momento della sua creazione o successivamente.

Importante

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

Importante

CloudWatch Ora supporta Logs, kms:ViaService che consente ai log di effettuare AWS KMS chiamate per conto dell'utente. Dovresti aggiungerlo ai tuoi ruoli che chiamano CloudWatch Logs nella tua Key Policy o in IAM. Per ulteriori informazioni, vedere kms:. ViaService

Dopo aver associato una chiave KMS a un gruppo di log, tutti i nuovi dati importati per il gruppo di log saranno crittografati tramite questa chiave. Questi dati vengono archiviati in un formato crittografato per tutto il periodo di conservazione. CloudWatch Logs decripta questi dati quando richiesto. CloudWatch I log devono disporre delle autorizzazioni alla chiave KMS ogni volta che vengono richiesti i dati crittografati.

Dopo aver dissociato una chiave KMS da un gruppo di log, CloudWatch Logs crittograferà i dati appena importati utilizzando il metodo di crittografia predefinito Logs. CloudWatch Tutti i dati precedentemente importati che sono stati crittografati con la chiave KMS rimangono crittografati con quella chiave KMS. CloudWatch I log possono ancora restituire tali dati dopo la dissociazione della chiave KMS, poiché CloudWatch possono continuare a fare riferimento alla chiave. Tuttavia, se la chiave viene successivamente disattivata, CloudWatch Logs non sarà in grado di leggere i log crittografati con quella chiave.

Importante

CloudWatch Logs supporta solo chiavi KMS simmetriche. 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 CloudWatch revochi a Logs l'accesso a una chiave associata o elimini una chiave KMS associata, i dati crittografati in CloudWatch Logs non potranno più essere recuperati.

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

Fase 1: Creazione di una AWS KMS chiave

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

aws kms create-key

L'output contiene l'ID chiave e l'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" ] } }

Fase 2: Impostazione delle autorizzazioni sulla chiave KMS

Per impostazione predefinita, tutte 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 ad altri utenti e risorse le autorizzazioni per accedere alla chiave KMS. Tramite questa fase, concedi all'entità principale del servizio CloudWatch Logs e al ruolo del chiamante l'autorizzazione per utilizzare la chiave. Questa entità servizio deve essere nella stessa AWS Regione in cui è archiviata la chiave KMS.

Come best practice, si consiglia di limitare l'uso della chiave KMS solo agli AWS account o ai gruppi di log specificati.

In primo luogo, salva la policy predefinita per la chiave KMS 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 della AWS KMS chiave. Per ulteriori informazioni, consulta AWS KMS Chiavi e contesto di crittografia.

La sezione Condition in questo esempio limita la chiave a un singolo ARN del 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": { "ArnEquals": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region:account-id:log-group:log-group-name" } } } ] }

La sezione Condition di questo esempio limita l'utilizzo di chiave AWS KMS all'account specificato, ma può essere utilizzato 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:*" } } } ] }

Quindi, aggiungi le autorizzazioni al ruolo che chiamerà i CloudWatch log. Puoi farlo aggiungendo una dichiarazione aggiuntiva alla AWS KMS Key Policy o tramite IAM sul ruolo stesso. CloudWatch Registra gli usi kms:ViaService per effettuare chiamate per AWS KMS conto del cliente. Per ulteriori informazioni, vedere kms:. ViaService

Per aggiungere autorizzazioni nella politica AWS KMS chiave, aggiungi la seguente dichiarazione aggiuntiva alla tua politica chiave. Se utilizzi questo metodo, come best practice, applichi la policy solo ai ruoli che interagiranno con i gruppi di log AWS KMS crittografati.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account_id:role/role_name" }, "Action": [ "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "logs.region.amazonaws.com" ] } } }

In alternativa, se desideri gestire le autorizzazioni dei ruoli in IAM, puoi aggiungere autorizzazioni equivalenti tramite la seguente politica. Questo può essere aggiunto a una politica di ruolo esistente o allegato a un ruolo come politica separata aggiuntiva. Se si utilizza questo metodo, come best practice è consigliabile applicare la policy solo alle AWS KMS chiavi che verranno utilizzate per la crittografia dei log. Per ulteriori informazioni, consulta Modificare le politiche IAM.

{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt", "kms:GenerateDataKey*", "kms:Describe*" ], "Condition":{ "StringEquals":{ "kms:ViaService": [ "logs.region.amazonaws.com" ] } }, "Resource": "arn:aws:kms:region:account_id:key/key_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: Associazione di una chiave KMS con un gruppo di log

Puoi associare una chiave KMS a un gruppo di log al momento della sua creazione o successivamente.

Per verificare se un gruppo di log dispone già di una chiave KMS associata, utilizzare il describe-log-groupscomando seguente:

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.

Associazione di una chiave KMS 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"
Associazione di una chiave KMS 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 chiave KMS associata a un gruppo di log, utilizza il comando seguente: disassociate-kms-key

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

AWS KMS Chiavi e contesto di crittografia

Per migliorare la sicurezza delle AWS Key Management Service chiavi e dei 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 log. Il contesto di crittografia è un insieme di coppie chiave-valore che vengono utilizzate come dati autenticati aggiuntivi. Il contesto di crittografia consente di utilizzare le condizioni delle policy IAM per limitare l'accesso alla AWS KMS chiave in base all' AWS account e al gruppo di log. Per ulteriori informazioni, consulta Contesto di crittografia ed Elementi delle policy IAM JSON: condizione.

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

Se disponi di un gruppo di log crittografato in precedenza e desideri modificare il gruppo di log in modo da utilizzare una nuova chiave KMS dal cliente che funziona solo per tale gruppo di log, completa la seguente procedura.

Conversione di un gruppo di log crittografato in modo da utilizzare una chiave KMS con una policy che lo limita a tale gruppo di log
  1. Immettere il seguente comando per trovare l'ARN del chiave corrente del gruppo di log:

    aws logs describe-log-groups

    L'output include la seguente riga. Prendere nota dell'ARN. È necessario utilizzarlo nel passaggio 7.

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

    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. Immettere il seguente comando per aggiungere la policy aggiornata alla nuova chiave KMS:

    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