Back to Checks
iac

DocumentDB encryption should use Customer Managed Keys

AWS-0022
Service: documentdbSeverity: low
OfficialBuilt-inVerified

Using AWS managed keys does not allow for fine grained control. Encryption using AWS keys provides protection for your DocumentDB underlying storage. To increase control of the encryption and manage factors like rotation use customer managed keys.

Run this check with Prowler

Run in Prowler Cloud
Run
prowler iac --checks AWS-0022

Recommendation

Enable encryption using customer managed keys

Check Code

# METADATA
# title: DocumentDB encryption should use Customer Managed Keys
# description: |
#   Using AWS managed keys does not allow for fine grained control. Encryption using AWS keys provides protection for your DocumentDB underlying storage. To increase control of the encryption and manage factors like rotation use customer managed keys.
# scope: package
# schemas:
#   - input: schema["cloud"]
# related_resources:
#   - https://docs.aws.amazon.com/documentdb/latest/developerguide/security.encryption.ssl.public-key.html
# custom:
#   id: AWS-0022
#   long_id: aws-documentdb-encryption-customer-key
#   aliases:
#     - AVD-AWS-0022
#     - encryption-customer-key
#     - aws-documentdb-encryption-customer-key
#   provider: aws
#   service: documentdb
#   severity: LOW
#   recommended_action: Enable encryption using customer managed keys
#   input:
#     selector:
#       - type: cloud
#         subtypes:
#           - service: documentdb
#             provider: aws
#   examples: checks/cloud/aws/documentdb/encryption_customer_key.yaml
package builtin.aws.documentdb.aws0022

import rego.v1

import data.lib.cloud.metadata
import data.lib.cloud.value

deny contains res if {
	some cluster in input.aws.documentdb.clusters
	isManaged(cluster)
	without_cmk(cluster)
	res := result.new(
		"Cluster encryption does not use a customer-managed KMS key.",
		metadata.obj_by_path(cluster, ["kmskeyid"]),
	)
}

without_cmk(obj) if value.is_empty(obj.kmskeyid)

without_cmk(obj) if not obj.kmskeyid