Skip to main content
compliance · aws

Bedrock custom models encrypted only with an AWS-owned key

resource types
1
rule IDs covered
1
severity
medium

What does ZopNight detect here?

Bedrock custom models hold proprietary fine-tuning data; rule RC-1631 files a compliance finding whenever the discoverer stamps cmek as "false", meaning the artifact sits under an AWS-owned KMS key the customer cannot audit, rotate or revoke. Existing models cannot be re-keyed in place. Remediation is a fresh customization job pointed at a customer-managed key.

Signal and threshold

How ZopNight evaluates Bedrock custom models encrypted only with an AWS-owned key.
Field Value
Rule IDsRC-1631
Categorycompliance
Severitymedium
Metricnone — pure configuration read
Sourcebedrock_custom_model_no_cmek.go

Whose key wraps your fine-tuning data

A custom model is the distilled form of whatever you fine-tuned on: support transcripts, contracts, internal documentation. When no customer-managed KMS key (CMEK) is specified at customization time, Bedrock encrypts the artifact with an AWS-owned key. The data is still encrypted, but the key lives entirely outside your account: you cannot see its policy, log its use in your CloudTrail, rotate it on your schedule, or revoke access in an incident. Compliance regimes that mandate customer-controlled key material treat that as a gap regardless of encryption strength, which is why this finding is filed under compliance at medium severity with no dollar figure attached.

Reading the cmek stamp

Discovery enriches every bedrock-custom-model with a cmek metadata flag of "true" or "false". The finding fires only on an explicit "false". If the flag is missing (the enrichment call failed), the rule says nothing rather than accuse a model that may well be properly keyed. Confirmed absence, not unconfirmed suspicion, is the bar.

Auditing model encryption from the CLI

Terminal window
for m in $(aws bedrock list-custom-models --query 'modelSummaries[].modelName' --output text); do
echo "$m: $(aws bedrock get-custom-model --model-identifier "$m" \
--query 'modelKmsKeyArn' --output text)"
done

A model that prints None has no customer-managed key ARN recorded. It is resting on the AWS-owned default, the condition this rule reports.

Re-keying means re-customizing

There is no API that swaps the key under an existing custom model. The remediation is a migration: create or choose a customer-managed key with a policy that admits the Bedrock service and your training role, re-run the model customization job with that key set as the output-model KMS key, evaluate the fresh model, and cut consumers over. Only after traffic is confirmed on the new artifact should the AWS-owned-key model be deleted. Budget for the customization job’s cost and duration when planning this. For large training sets it is a real expense, and it is the reason teams sometimes accept the finding for throwaway experiment models while enforcing CMEK on anything bound for production.

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

417 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

417 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·