More Info:
Ensure that the data stored on Machine Learning (ML) storage volumes attached to your AWS SageMaker notebook instances is encrypted in order to meet regulatory requirements and protect your SageMaker data at rest. SageMaker is a fully-managed AWS service that enables developers and data engineers to quickly and easily build, train and deploy machine learning models at any scale. An AWS SageMaker notebook instance is a fully managed ML instance that is running the Jupyter Notebook open-source web application.Risk Level
HighAddress
Cost optimization, Operational Maturity, SecurityCompliance Standards
- APRA CPS 234 (Australia)
- BSI C5 (Germany)
- Brazil LGPD
- CCPA / CPRA (California)
- CIS AWS
- CIS Critical Security Controls v8
- CMMC 2.0
- CSA Cloud Controls Matrix v4
- Cloudanix Best Practice
- DPDPA
- Digital Operational Resilience Act (EU)
- GDPR
- HIPAA
- ISO/IEC 27017
- ISO/IEC 27018
- ISO/IEC 27701
- KSA PDPL
- MAS Technology Risk Management (Singapore)
- MITRE ATT&CK (Cloud)
- NIS2 Directive
- NIST
- 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
Remediation
Using Console
Using Console
For DynamoDB, “notebook data” translates to DynamoDB table data needing encryption at rest.DynamoDB already encrypts all table data at rest by default with an AWS-owned KMS key. If your requirement is stricter (e.g., must use a customer-managed KMS key), follow these steps in the AWS Console:
If your policy only says “must be encrypted,” DynamoDB’s default (AWS-owned key) already satisfies that; the remediation is primarily confirming and documenting that encryption at rest is enabled and enforced for all DynamoDB tables storing notebook data.
1. Confirm Encryption Status of the Table
- Sign in to the AWS Management Console.
- Go to DynamoDB.
- In the left menu, click Tables.
- Click the specific table.
- Choose the Additional settings or Overview tab (depending on UI version).
- Look for Encryption at rest:
- It should show something like:
- Encryption type: AWS owned key
or - KMS key: alias/aws/dynamodb
or - KMS key:
alias/your-cmk-alias
- Encryption type: AWS owned key
- It should show something like:
2. (If Required) Create a Customer-Managed KMS Key
- In the console, open Key Management Service (KMS).
- Click Customer managed keys → Create key.
- Key type: Symmetric.
- Key usage: Encrypt and decrypt.
- Set Alias (e.g.,
alias/dynamodb-notebook-data). - Configure Key administrators and Key users:
- Ensure the IAM roles/services that use DynamoDB have permission to use this key.
- Finish key creation.
3. Update DynamoDB Table to Use the Customer-Managed KMS Key
Note: DynamoDB encryption with AWS-owned/AWS-managed key is default; using a customer-managed key is an optional enhancement. UI labels may differ slightly between regions/UI versions but the flow is similar.
- Go back to DynamoDB → Tables.
- Select the table.
- Go to Additional settings or Table details.
- Find the Encryption at rest section.
- Click Edit (or Manage encryption).
- Change encryption from AWS owned key or default key to Customer managed key.
- From the dropdown, choose your new KMS key alias (e.g.,
alias/dynamodb-notebook-data). - Save/Apply the change.
4. Validate Compliance
- Re-open the table Details/Additional settings.
- Confirm:
- Encryption at rest is Enabled.
- KMS key now references your customer-managed CMK alias.
- Optionally, in KMS → Customer managed keys, open the key and check Key usage / CloudTrail to see DynamoDB using the key.
If your policy only says “must be encrypted,” DynamoDB’s default (AWS-owned key) already satisfies that; the remediation is primarily confirming and documenting that encryption at rest is enabled and enforced for all DynamoDB tables storing notebook data.
Using CLI
Using CLI
Below are the minimal, step‑by‑step AWS CLI steps to ensure DynamoDB “Notebook Data” is encrypted at rest.
Assume your table is called
Look at:
Note the returned
Ensure the key policy allows DynamoDB and relevant IAM principals to use it.
You should see:
1. Identify the DynamoDB table(s)
If you already know the table name, skip to step 2.notebook-data-table (replace with your actual name).2. Check current encryption status
Status(ENABLED, ENABLING, DISABLED)SSEType(KMS)KMSMasterKeyArn(if using a CMK)
Status is DISABLED or not present, encryption is not enabled.3. (Optional) Choose or create a KMS key
If you want to use an AWS-managed key for DynamoDB (simplest), skip to step 4.To create a customer-managed KMS key:KeyId or ARN.Ensure the key policy allows DynamoDB and relevant IAM principals to use it.
4. Enable encryption on the table
Option A – Use AWS-owned key (default encryption)
Option B – Use AWS-managed KMS key for DynamoDB
Option C – Use your own customer-managed KMS key
Replace<kms-key-arn-or-id> with your key:5. Confirm encryption is enabled
Run again:Status:ENABLEDSSEType:KMSKMSMasterKeyArn: set (if using KMS)
Using Python
Using Python
To encrypt DynamoDB “notebook data” at rest, you need to ensure the DynamoDB table has Server-Side Encryption (SSE) enabled, preferably with a customer-managed KMS key. Below are step-by-step instructions using Python (boto3).
Keep
Look at:
Ensure:
1. Prerequisites
boto3installed:- AWS credentials configured (via
aws configure, environment variables, or an IAM role). - IAM permissions for:
dynamodb:DescribeTabledynamodb:UpdateTablekms:CreateKey(if you’ll create a new CMK)kms:DescribeKeykms:EnableKeyRotationkms:PutKeyPolicy(as needed)
2. (Optional) Create a customer-managed KMS key for DynamoDB
If you want to use your own CMK instead of the AWS-owned key:cmk_arn – you’ll use it in the DynamoDB SSE config.3. Check current encryption status of the DynamoDB table
SSEDescription['Status'](e.g.,ENABLED,ENABLING,DISABLED)SSEDescription['SSEType'](e.g.,KMS)SSEDescription['KMSMasterKeyArn'](if using CMK)
4. Enable or update server-side encryption on the table
Option A – Use AWS owned key (simpler)
Option B – Use customer-managed CMK (more control)
Use thecmk_arn from step 2:5. Wait for encryption to finish and verify
StatusisENABLEDSSETypeisKMSKMSMasterKeyArnis set (if using CMK)
6. Enforce encryption via IaC / policy (optional but recommended)
To prevent future unencrypted tables:- Use IaC (CloudFormation/Terraform) with
SSESpecificationalways set. - Add AWS Config rule
dynamodb-table-encryption-enabledand remediate non-compliant tables with an automation script similar to the above.

