Check provider logo

CloudWatch log group is encrypted with an AWS KMS key

cloudwatch_log_group_kms_encryption_enabled

Severitymedium
Servicecloudwatch
by Prowler

CloudWatch log groups are assessed for at-rest encryption by checking if an AWS KMS key is associated with the log group via kmsKeyId.

Risk

Without a customer-managed KMS key, logs rely on service-managed encryption, limiting control and auditability.

  • Confidentiality: weaker key-policy barriers against unauthorized reads
  • Integrity/availability: no custom rotation or rapid revoke, hindering incident response and compliance
Run this check with Prowler CLI

prowler aws --checks cloudwatch_log_group_kms_encryption_enabled

Recommendation

Associate each log group with a customer-managed KMS key via kmsKeyId.

  • Enforce least privilege in key and IAM policies, granting kms:Decrypt only to required principals
  • Enable rotation and monitor key usage
  • Separate keys by app/tenant to support defense in depth and rapid revocation

Remediation

CLI

aws logs associate-kms-key --log-group-name <LOG_GROUP_NAME> --kms-key-id arn:aws:kms:<REGION>:<ACCOUNT_ID>:key/<KEY_ID>

Native IaC
Terraform
Other
  1. In the AWS Console, go to CloudWatch > Log groups
  2. Click Create log group and enter a name
  3. Under Encryption, select KMS key and provide the key ARN
  4. Click Create log group
  5. For existing log groups, the console cannot attach a KMS key; use the CLI command provided

Source Code

Resource Type

Other

References