Check provider logo

Kinesis Data Firehose delivery stream is encrypted at rest

firehose_stream_encrypted_at_rest

Severitymedium
Servicefirehose
by Prowler

Amazon Data Firehose delivery streams must enable server-side encryption at rest with AWS KMS regardless of the source type. Encryption of upstream sources such as Kinesis Data Streams or MSK does not replace the need to protect the delivery stream itself.

Risk

Unencrypted Firehose data at rest can be read if storage or backups are accessed, harming confidentiality and integrity. Disk-level access, snapshots, or misconfigured destinations enable data exfiltration or tampering. Lacking KMS-backed controls also reduces key rotation, segregation of duties, and auditability.

Run this check with Prowler CLI

prowler aws --checks firehose_stream_encrypted_at_rest

Recommendation

Enable server-side encryption for Firehose with AWS KMS. Prefer customer managed keys (CMEK) to enforce least privilege, rotation, and auditing. Ensure upstream Kinesis sources are encrypted and confirm MSK defaults meet policy. Monitor KMS health signals and deny writes without encryption. Apply defense in depth at destinations.

Remediation

CLI

aws firehose start-delivery-stream-encryption --delivery-stream-name <delivery-stream-name> --delivery-stream-encryption-configuration-input KeyType=AWS_OWNED_CMK

Native IaC
Terraform
Other
  1. In the AWS Console, go to Amazon Data Firehose
  2. Select the affected delivery stream and click Edit
  3. Under Server-side encryption, set to Enabled (choose AWS owned key)
  4. Click Save changes

Source Code

Resource Type

AwsKinesisStream

References