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 (AES-GCM) a 256 bit per crittografare i dati di registro inattivi. In alternativa, è possibile utilizzare AWS Key Management Service per questa crittografia. In tal caso, la AWS KMS crittografia viene eseguita utilizzando una chiave. L'utilizzo della crittografia AWS KMS è abilitato a livello di gruppo di log, associando una chiave KMS a un gruppo di log, al momento della creazione del gruppo di log o dopo la sua esistenza.

Importante

CloudWatch I registri ora supportano 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 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 chiave KMS ogni volta che vengono richiesti dati crittografati.

Se successivamente si dissocia una chiave KMS 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 KMS rimangono crittografati con la chiave KMS. CloudWatch I log possono ancora restituire quei dati dopo che la chiave KMS è 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 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 l'accesso dei log a una chiave associata o elimini una chiave KMS associata, i dati crittografati in Logs non possono più essere recuperati. CloudWatch

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

Passaggio 1: creare una chiave AWS KMS

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. Con questo passaggio, concedi al responsabile del servizio CloudWatch Logs e al ruolo chiamante il permesso di utilizzare la chiave. L'entità del servizio deve trovarsi nella stessa AWS regione in cui è archiviata la chiave KMS.

Come procedura ottimale, consigliamo di limitare l'uso della chiave KMS solo agli AWS account o ai gruppi di log specificati.

Innanzitutto, salva la politica predefinita per la tua chiave KMS policy.json utilizzando il seguente comando: get-key-policy

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 scoprire se a un gruppo di log è già associata una chiave KMS, usa 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.

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, usa il seguente comando: 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 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 le condizioni delle policy IAM per limitare l'accesso alla AWS KMS chiave per AWS account e 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