๐ก๏ธ AWS SNS Topic is not encrypted with a KMS key๐ข
- Contextual name: ๐ก๏ธ Topic is not encrypted with a KMS key๐ข
- ID:
/ce/ca/aws/sns/topic-encryption-with-kms - Tags:
- ๐ข Policy with categories
- ๐ข Policy with type
- ๐ข Production policy
- Policy Type:
COMPLIANCE_POLICY - Policy Categories:
SECURITY
Logicโ
- ๐ง prod.logic.yaml๐ข
- ๐ AWS SNS Topic
- ๐ AWS SNS Topic - object.extracts.yaml
- ๐งช test-data.json
Similar Policiesโ
- AWS Security Hub: [SNS.1] SNS topics should be encrypted at-rest using AWS KMS
Descriptionโ
Descriptionโ
This policy identifies AWS SNS Topics that are not configured with server-side encryption (SSE) using an AWS KMS key.
Rationaleโ
Enabling server-side encryption for SNS topics is a security measure that protects message data stored at rest. Using an AWS KMS key provides centralized management of encryption keys, including key rotation, access control, and auditing capabilities, helping to maintain compliance with organizational and regulatory data protection standards.
Auditโ
This policy flags an SNS Topic as
INCOMPLIANTif theKMS Key IDfield is empty.
Remediationโ
Remediationโ
Enable Server-Side Encryption for SNS Topics Using KMS Keysโ
From Command Lineโ
To enable server-side encryption for an SNS topic using an AWS KMS key, run the following command:
aws sns set-topic-attributes \
--topic-arn {{topic-arn}} \
--attribute-name KmsMasterKeyId \
--attribute-value {{kms-key-id}}Additional Considerationsโ
Include the following in the key policy to allow Amazon SNS to encrypt and decrypt messages:
{
"Effect": "Allow",
"Principal": {
"Service": "sns.amazonaws.com"
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": "*",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:{{service}}:{{region}}:{{account-id}}:{{resource-type}}/{{resource-id}}"
},
"StringEquals": {
"kms:EncryptionContext:aws:sns:topicArn": "arn:aws:sns:{{region}}:{{account-id}}:{{sns-topic-name}}"
}
}
}