|
1 | 1 | { |
2 | 2 | "Provider": "aws", |
3 | 3 | "CheckID": "kinesis_stream_encrypted_at_rest", |
4 | | - "CheckTitle": "Kinesis streams should be encrypted at rest.", |
| 4 | + "CheckTitle": "Kinesis stream is encrypted at rest with KMS", |
5 | 5 | "CheckType": [ |
| 6 | + "Software and Configuration Checks/AWS Security Best Practices", |
| 7 | + "Software and Configuration Checks/Industry and Regulatory Standards/AWS Foundational Security Best Practices", |
6 | 8 | "Software and Configuration Checks/Industry and Regulatory Standards/NIST 800-53 Controls" |
7 | 9 | ], |
8 | 10 | "ServiceName": "kinesis", |
9 | 11 | "SubServiceName": "", |
10 | | - "ResourceIdTemplate": "arn:partition:kinesis::account-id:stream/stream-name", |
11 | | - "Severity": "medium", |
| 12 | + "ResourceIdTemplate": "", |
| 13 | + "Severity": "high", |
12 | 14 | "ResourceType": "AwsKinesisStream", |
13 | | - "Description": "Ensure Kinesis streams use server-side encryption with AWS KMS keys for data protection.", |
14 | | - "Risk": "If Kinesis streams are not encrypted at rest, sensitive data stored in the stream could be exposed to unauthorized access or breaches. This could lead to potential data theft or misuse of unencrypted data.", |
15 | | - "RelatedUrl": "https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html", |
| 15 | + "Description": "**Amazon Kinesis Data Streams** with **server-side encryption** use **AWS KMS** to protect records at rest. The evaluation determines whether a stream has `SSE-KMS` configured with a KMS key; streams lacking KMS-based at rest encryption are identified.", |
| 16 | + "Risk": "Without **SSE-KMS**, records in shards may be exposed in plaintext if storage, backups, or analytics exports are accessed, undermining **confidentiality**. Absence of KMS controls also reduces **integrity** and oversight by removing key policies, rotation, and audit trails-enabling covert data exfiltration or insider misuse.", |
| 17 | + "RelatedUrl": "", |
| 18 | + "AdditionalURLs": [ |
| 19 | + "https://docs.aws.amazon.com/securityhub/latest/userguide/kinesis-controls.html#kinesis-1", |
| 20 | + "https://docs.aws.amazon.com/streams/latest/dev/getting-started-with-sse.html", |
| 21 | + "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/Kinesis/server-side-encryption.html" |
| 22 | + ], |
16 | 23 | "Remediation": { |
17 | 24 | "Code": { |
18 | | - "CLI": "aws kinesis start-stream-encryption --stream-name <your-stream-name> --encryption-type KMS --key-id <your-kms-key-id>", |
19 | | - "NativeIaC": "https://docs.prowler.com/checks/aws/general-policies/bc_aws_general_22/#cloudformation", |
20 | | - "Other": "https://docs.aws.amazon.com/securityhub/latest/userguide/kinesis-controls.html#kinesis-1", |
21 | | - "Terraform": "https://docs.prowler.com/checks/aws/general-policies/bc_aws_general_22/#terraform" |
| 25 | + "CLI": "aws kinesis start-stream-encryption --stream-name <KINESIS_STREAM_NAME> --encryption-type KMS --key-id alias/aws/kinesis", |
| 26 | + "NativeIaC": "```yaml\n# CloudFormation: enable KMS encryption on a Kinesis stream\nResources:\n <example_resource_name>:\n Type: AWS::Kinesis::Stream\n Properties:\n ShardCount: 1\n StreamEncryption:\n EncryptionType: KMS # Critical: enables KMS encryption at rest\n KeyId: alias/aws/kinesis # Critical: uses AWS managed Kinesis KMS key\n```", |
| 27 | + "Other": "1. Open the AWS Console and go to Amazon Kinesis > Data streams\n2. Select the stream\n3. On the Details tab, click Edit in Server-side encryption\n4. Select Enabled\n5. Choose the (Default) aws/kinesis KMS key\n6. Click Save", |
| 28 | + "Terraform": "```hcl\n# Enable KMS encryption on a Kinesis stream\nresource \"aws_kinesis_stream\" \"<example_resource_name>\" {\n name = \"<example_resource_name>\"\n shard_count = 1\n encryption_type = \"KMS\" # Critical: enables KMS encryption at rest\n kms_key_id = \"alias/aws/kinesis\" # Critical: uses AWS managed Kinesis KMS key\n}\n```" |
22 | 29 | }, |
23 | 30 | "Recommendation": { |
24 | | - "Text": "Enable server-side encryption for Kinesis streams using AWS KMS keys to ensure that all data is encrypted before it is stored, protecting data at rest and reducing the risk of unauthorized access.", |
25 | | - "Url": "https://docs.aws.amazon.com/streams/latest/dev/getting-started-with-sse.html" |
| 31 | + "Text": "Enable **SSE-KMS** on all streams.\n- Use **customer-managed keys** for rotation and ownership\n- Enforce **least privilege** on KMS grants; limit cross-account use\n- Monitor key usage and require encryption in CI/CD", |
| 32 | + "Url": "https://hub.prowler.com/check/kinesis_stream_encrypted_at_rest" |
26 | 33 | } |
27 | 34 | }, |
28 | | - "Categories": [], |
| 35 | + "Categories": [ |
| 36 | + "encryption" |
| 37 | + ], |
29 | 38 | "DependsOn": [], |
30 | 39 | "RelatedTo": [], |
31 | 40 | "Notes": "" |
|
0 commit comments