Skip to main content

More Info:

Ensure Amazon Kinesis streams are utilizing KMS CMK customer-managed keys instead of AWS managed-keys (i.e. default encryption keys created by Amazon for Kinesis service) in order to have more granular control over your data streams encryption/decryption process. Kinesis is an AWS streaming data service that provides you with the ability to build and manage your own streaming data applications for specialized needs. An AWS Kinesis stream is an ordered sequence of data records collected within a dedicated storage layer.

Risk Level

High

Address

Cost optimization, Operational Maturity, Security

Compliance Standards

  • APRA CPS 234 (Australia)
  • BSI C5 (Germany)
  • Brazil LGPD
  • CCPA / CPRA (California)
  • CIS Critical Security Controls v8
  • CMMC 2.0
  • CSA Cloud Controls Matrix v4
  • DPDPA
  • Digital Operational Resilience Act (EU)
  • HIPAA
  • ISO 27001
  • ISO/IEC 27017
  • ISO/IEC 27018
  • ISO/IEC 27701
  • KSA PDPL
  • MAS Technology Risk Management (Singapore)
  • MITRE ATT&CK (Cloud)
  • NIS2 Directive
  • NIST SP 800-171
  • NYDFS 23 NYCRR 500
  • SWIFT Customer Security Controls Framework
  • Sarbanes-Oxley IT General Controls
  • Securities and Exchange Board of India (SEBI) - Cloud Security Adoption Framework
  • UK NCSC Cyber Assessment Framework

Triage and Remediation

Remediation

Using Console

To remediate the misconfiguration of a Kinesis Stream encrypted with a Customer Master Key (CMK) for AWS DynamoDB using the AWS Management Console, follow these steps:
  1. Access the AWS Management Console: Go to the AWS Management Console at https://console.aws.amazon.com.
  2. Navigate to DynamoDB Service: Click on the “Services” dropdown menu at the top left corner of the console. Under the “Database” section, click on “DynamoDB” to open the DynamoDB dashboard.
  3. Select the DynamoDB Table: In the DynamoDB dashboard, locate and click on the table that you want to remediate the encryption settings for.
  4. Edit Table Encryption Settings:
    • Click on the “Overview” tab to view the details of the selected DynamoDB table.
    • In the “Overview” tab, click on the “Manage” button next to the “Encryption” section.
  5. Update Encryption Settings:
    • In the “Encryption” settings page, locate the “Encryption Type” section.
    • Click on the “Edit” button to modify the encryption settings for the DynamoDB table.
  6. Select Encryption Type:
    • In the “Edit encryption” dialog box, choose the desired encryption type. To remediate the misconfiguration of Kinesis Stream encryption with CMK, select “AWS managed key (AWS KMS)”.
  7. Choose AWS Managed Key (KMS):
    • Select the appropriate AWS managed key (KMS) from the dropdown list. Ensure that you choose the key that aligns with your security and compliance requirements.
  8. Save Changes:
    • After selecting the AWS managed key (KMS), click on the “Save” button to apply the encryption settings changes to the DynamoDB table.
  9. Verify Encryption Settings:
    • Once the changes are saved, verify that the encryption settings have been successfully updated to use the AWS managed key (KMS) instead of the Kinesis Stream encryption.
By following these steps, you can remediate the misconfiguration of a Kinesis Stream encrypted with a CMK for AWS DynamoDB using the AWS Management Console.

To remediate the misconfiguration of a Kinesis Stream encrypted with a Customer Managed Key (CMK) for AWS DynamoDB using AWS CLI, you can follow these steps:
  1. Identify the DynamoDB Table: First, identify the DynamoDB table that is using the Kinesis Stream encrypted with CMK.
  2. Disable Encryption with CMK for Kinesis Stream: To remediate this misconfiguration, you will need to disable encryption with CMK for the Kinesis Stream associated with the DynamoDB table. You can achieve this by updating the Kinesis Stream settings.
  3. Update Kinesis Stream Encryption Settings:
    • Open the AWS CLI and run the following command to update the encryption settings of the Kinesis Stream associated with the DynamoDB table:
      Replace YOUR_STREAM_NAME with the actual name of the Kinesis Stream associated with the DynamoDB table.
  4. Verify Encryption Settings: Once you have updated the encryption settings for the Kinesis Stream, verify that the encryption type is set to NONE to ensure that the Kinesis Stream is no longer encrypted with a CMK.
  5. Monitor DynamoDB Table: Monitor the DynamoDB table to ensure that there are no issues or disruptions after making this change.
By following these steps and updating the encryption settings for the Kinesis Stream associated with the DynamoDB table to use encryption type NONE, you can remediate the misconfiguration of a Kinesis Stream encrypted with a CMK for AWS DynamoDB.
To remediate the misconfiguration of a Kinesis Stream not being encrypted with a Customer Managed Key (CMK) in AWS, we need to create a new Kinesis Stream with encryption enabled using a CMK. Here are the step-by-step instructions on how to remediate this issue for AWS DynamoDB using Python:
  1. Import the necessary Python libraries:
  1. Create a new Kinesis Stream with encryption enabled:
  1. Replace the stream_name and cmk_arn variables with your desired values:
  1. Call the remediate_kinesis_stream_encryption function with the appropriate parameters:
  1. Run the Python script to create the new Kinesis Stream with encryption enabled using a CMK:
By following these steps and running the Python script, you can remediate the misconfiguration of a Kinesis Stream not being encrypted with a CMK in AWS DynamoDB.
This config enables server-side encryption on the Kinesis stream using a customer-managed KMS key, matching the CLI start-stream-encryption behavior (with encryption-type KMS and key-id set to the CMK ARN).This change should be applied in-place (no forced replacement of the stream); terraform plan should show an update to the existing aws_kinesis_stream resource adding encryption_type = "KMS" and kms_key_id = <CMK ARN>.

Additional Reading: