SNS topics should be encrypted at-rest using AWS KMS
Checks that the SNS topic is encrypted at rest with an AWS KMS key; SNS's default disk encryption does not count. With a KMS key, reading a stored message also takes permission to use that key, which adds a layer of access control.
- service
- SNS
- severity
- Medium
- scope
- evaluated in every region
How to fix it
- Can break clients: Publishers then need kms:GenerateDataKey* and kms:Decrypt on the key, and AWS services such as CloudWatch alarms can publish only with a customer managed key that grants them.
In the console
Simple Notification Service → Topics → the topic → Edit → Encryption
- Encryption
- Enable
- AWS KMS key
- alias/aws/sns, or a customer managed key if AWS services such as CloudWatch alarms publish to the topic
With the AWS CLI
aws sns set-topic-attributes --topic-arn <topic-arn> --attribute-name KmsMasterKeyId --attribute-value <kms-key-id> --region <region>With Terraform
resource "aws_sns_topic" "this" {
name = var.topic_name
kms_master_key_id = var.kms_key_id
}
See which of your accounts this check is failing on.
Book a live scan