SaveMyCert
Log in
5 of 5 free questions left today·for 10 a day
Security, Compliance, and Governance

SAP-C03 Encryption and Key Management: KMS Keys and Rotation, ACM and Private CA, CloudHSM and Post-Quantum Cryptography

24 min readSAP-C03 · Security, Compliance, and GovernanceUpdated

Encryption and key management on AWS is the design of who controls the keys that protect data at rest and in transit: AWS KMS customer managed keys with rotation and scoped key policies, TLS certificates from AWS Certificate Manager and AWS Private CA, single-tenant HSMs in AWS CloudHSM when a regulator demands them, and post-quantum algorithms (ML-KEM and ML-DSA) for data and signatures that must stay safe for decades. This lesson covers SAP-C03 Task 2.2 at the architect level: choosing the key type and store that meets every stated constraint, sharing keys across accounts and Regions, encrypting existing resources, enforcing TLS end to end, and planning a post-quantum migration.

What you’ll learn
  • Choose between AWS owned, AWS managed and customer managed KMS keys, and explain which keys rotate automatically, on demand or only manually
  • Write key policies that allow cross-account use, separate key administrators from IAM administrators, and scope use with kms:ViaService, kms:CallerAccount and encryption context
  • Select the S3 encryption mode, use S3 Bucket Keys and SSE-KMS replication correctly, and bring existing RDS, EBS, EFS and DynamoDB data under customer managed keys
  • Decide when multi-Region keys help (client-side encryption) and when services re-encrypt anyway
  • Design certificate management with ACM and AWS Private CA, including CloudFront Regions, managed renewal, short-lived certificates, ACM for Nitro Enclaves and ALB mutual TLS
  • Enforce TLS 1.3 and end-to-end encryption with load balancer security policies, HTTPS targets and aws:SecureTransport
  • Choose between KMS, AWS CloudHSM, CloudHSM and external key stores, and imported key material for a regulatory requirement

What does encryption at rest with AWS KMS customer managed keys involve?

Encryption at rest with AWS KMS means each AWS service encrypts your data with a data key, and a KMS key that never leaves KMS's hardware security modules encrypts (wraps) that data key. This pattern is called envelope encryption. You choose who controls the KMS key by choosing its type:

Key typeWho controls the key policyRotationCan be shared with other accounts
AWS owned keyAWS (not visible in your account)Managed by AWSNo
AWS managed key (aws/rds, aws/ebs, aws/s3 ...)AWS; you can read but not edit the policyAutomatic every year, cannot be changedNo
Customer managed keyYou (key policy, grants, aliases, tags)You choose: automatic with a custom period, on demand, or manualYes, through the key policy

A customer managed key is the only type that gives you control over the key itself: its policy, its rotation schedule and whether other accounts may use it. AWS managed keys are convenient but fixed: you cannot change their rotation, edit their policy or let another account use them.

Envelope encryption and its consequences

With GenerateDataKey, KMS returns a plaintext data key and the same key encrypted under the KMS key. The application (or service) encrypts the data with the plaintext key, discards it and stores the encrypted data key with the data. To read, it sends the encrypted data key to Decrypt. Two consequences follow:

  • Rotating, disabling or re-policying the KMS key acts on the wrapping layer. It does nothing about a plaintext data key that has already leaked. AWS documents that rotation does not mitigate a compromised data key: the only remedy is to decrypt the affected data, encrypt it under fresh data keys and remove the old ciphertext (including old object versions).
  • Because KMS only handles small data keys, bulk data volume never travels to KMS; the request count, not the data size, drives KMS cost and throttling.

How does KMS key rotation work, and which keys can rotate automatically?

KMS rotation replaces the key material behind a KMS key while the key keeps its key ID, ARN, aliases and policy. KMS keeps every earlier version of the material, so data encrypted before a rotation stays readable without re-encryption, and applications never reference key versions. Rotation also does not re-encrypt data or existing data keys. What you can do depends on the key's type and origin:

KeyAutomatic rotationOn-demand rotationHow to rotate otherwise
Symmetric encryption key, AWS_KMS origin (customer managed)Yes, with a custom period of 90 to 2,560 days (365 by default)Yes (RotateKeyOnDemand)Not needed
Symmetric key with imported material (EXTERNAL origin)NoYes: import new material into the same key, then call RotateKeyOnDemandNot needed
AWS managed keyEvery year, fixedNoYou cannot change it
Asymmetric (RSA, ECC, ML-DSA, ML-KEM) and HMAC keysNoNoManual: create a new key and repoint the alias
Keys in a custom key store (CloudHSM or external)NoNoManual: create a new key and repoint the alias

Manual rotation with an alias

Manual rotation means creating a new KMS key and moving an alias to it, so callers that use the alias switch keys without code changes. The old key must stay enabled while data or signatures that depend on it remain in use, because decrypt and verify need the original key. For a signing key, verifiers hold the public key, so you publish both public keys until everything signed with the old key has expired.

How do key policies, cross-account access and condition keys control who can use a key?

The key policy is the primary access control for a KMS key: no principal, not even the account root, can use a key unless the key policy allows it directly or delegates to IAM. The default key policy contains a statement for the account principal that delegates authorization to IAM policies. That is convenient, but it means anyone who can edit IAM can give themselves key use, including kms:PutKeyPolicy.

Separating key users from IAM administrators

To stop account administrators (for example, holders of AdministratorAccess) from ever decrypting data, remove the delegation statement and name principals explicitly: a key administrator role with management actions only, and the application role with cryptographic actions only. Always keep a key administrator in the policy, or the key becomes unmanageable. An IAM deny or a key policy deny added while the delegation remains does not help, because the administrators can remove it.

Cross-account use

A principal in another account can use a customer managed key only when both policies allow it: the key policy in the key owner's account (naming the account or, for least privilege, the specific role) and an IAM policy in the caller's account that allows the KMS action on the key's ARN. Things that do not work:

  • Aliases are account-scoped: you cannot create an alias for another account's key, and cross-account calls must use the key ARN.
  • SCPs never grant permissions; they only limit.
  • AWS managed keys cannot be shared. RDS refuses to share a snapshot encrypted with aws/rds, and an AMI whose snapshots use aws/ebs cannot be shared. Copy the snapshot under a customer managed key, admit the other account in that key's policy and share the copy (the recipient usually copies it again under its own key).

Grants for services and service-linked roles

A grant is a scoped, revocable permission on one key for one grantee principal. Services such as EBS create grants for themselves. Grants also solve a cross-account case that policies cannot: EC2 Auto Scaling launches with its service-linked role, whose permissions policy you cannot edit. When an Auto Scaling group uses an AMI or volumes encrypted with another account's key, create a grant on that key, from the account that owns the Auto Scaling group, naming its service-linked role as grantee. The key policy must allow that account to create grants.

Condition keys that scope key use

Condition keyWhat it restrictsTypical use
kms:ViaServiceRequests forwarded by a named service endpoint, such as s3.us-east-1.amazonaws.com or ec2.us-east-1.amazonaws.comA role may use the key through S3, DynamoDB or EBS but not by calling KMS directly from the CLI
kms:CallerAccountThe account of the calling principalCombined with kms:ViaService: only these accounts, only through EC2
kms:EncryptionContext:<key>The encryption context in the requestPer-tenant isolation; with ${aws:PrincipalTag/tenant}, one statement isolates every tenant (ABAC) without per-tenant grants or keys
kms:GrantIsForAWSResourceGrant operations onlyAllow grant creation only when an AWS service creates it

Encryption context is non-secret additional authenticated data: decryption succeeds only with the same context, and it appears in CloudTrail. It is a control on how the key is used, not a secret. Network conditions such as aws:SourceVpce do not fit service-made calls: when EBS or S3 calls KMS on your behalf, the request does not travel through your VPC endpoint, so such a condition breaks the service. Match the scope of a condition to the set of callers that should use the key: organization-wide conditions such as aws:PrincipalOrgID fit keys every member account may use, while a key for a few named accounts lists those accounts explicitly.

How do you choose S3 server-side encryption, and what do S3 Bucket Keys change?

Amazon S3 offers four server-side encryption modes; the choice depends on who controls the key and how many layers are required:

ModeKey controlNotes
SSE-S3Amazon S3 manages the keysDefault for new objects; no KMS requests or key policy
SSE-KMSKMS key (AWS managed or customer managed)Key policy control and CloudTrail records of key use; supports S3 Bucket Keys
DSSE-KMSKMS keyTwo independent layers of encryption for compliance rules that demand dual-layer encryption; can be the bucket default; Bucket Keys not supported
SSE-CYou supply the key on every requestThe key must be sent with every PUT and GET request; S3 stores only a salted HMAC of it, never the key. From April 2026, SSE-C is disabled by default on new general purpose buckets and must be explicitly allowed in the bucket's encryption configuration

S3 Bucket Keys

An S3 Bucket Key is a short-lived bucket-level key that S3 derives from your KMS key and uses to create data keys for many objects, so S3 calls KMS far less often. It is a bucket setting that cuts KMS request charges sharply with no application change and while keeping the customer managed key. Side effects to design for:

  • S3 passes the bucket ARN, not the object ARN, as the aws:s3:arn encryption context. A key policy that tests the context for an object prefix stops matching and requests fail with AccessDenied. Condition on the bucket ARN and enforce per-prefix access with the bucket policy and IAM policies instead.
  • CloudTrail shows fewer KMS events, with the bucket ARN as context.
  • Principals still need kms:Decrypt (and kms:GenerateDataKey to write): Bucket Keys reduce calls, not permissions.

Replicating SSE-KMS objects

S3 Replication skips KMS-encrypted objects unless the rule enables the SSE-KMS encrypted objects selection criterion (SseKmsEncryptedObjects). The rule must then name a replica KMS key (ReplicaKmsKeyID), in same-Region and cross-Region replication alike; for a different Region it must be a key in the destination Region. Then and allow the replication role kms:Decrypt on the source key and kms:Encrypt on the destination key in both its IAM policy and the key policies. S3 decrypts and re-encrypts each object; it treats a multi-Region key as a single-Region key, so switching to one does not avoid this work.

How do you bring existing unencrypted resources under a customer managed key?

Most storage services fix encryption at creation, so existing unencrypted resources are moved to new encrypted copies; only some switch keys in place:

ServiceExisting resourceFuture resources
Amazon RDS / AuroraCannot be modified to encrypt, and an encrypted read replica of an unencrypted instance is not supported. Snapshot, copy the snapshot with encryption under the customer managed key, restore a new instance, cut over.Choose the key at creation
Amazon EBSSnapshot, then create an encrypted volume from the snapshot under the customer managed key (or copy the snapshot with encryption first) and replace the old volume. Neither stop/start nor Elastic Volumes encrypts in place.EBS encryption by default, set per Region, with a customer managed key in that Region as the default key
Amazon EFSEncryption at rest is chosen at creation only. Create a new encrypted file system and copy data (AWS DataSync), then switch clients.Choose encryption at creation (enforce with policy)
Amazon DynamoDBAlways encrypted; switch between AWS owned, AWS managed and customer managed keys in place while the table stays availableChoose the key at creation
Amazon S3New default encryption applies to new objects; existing objects are re-encrypted by copying them (for example, S3 Batch Operations)Bucket default encryption

EBS encryption by default is a Regional, per-account setting, so a multi-Region estate enables it in every Region with that Region's key; it never touches existing volumes or other services such as EFS.

When do multi-Region KMS keys help, and when do they not?

A multi-Region key is a set of KMS keys in different Regions that share the same key ID (beginning mrk-) and the same key material, so data encrypted in one Region can be decrypted in another without a cross-Region call and without re-encryption. You create a primary key and replicate it; each replica has its own Regional ARN.

  • Where they pay off: client-side encryption (AWS Encryption SDK, AWS Database Encryption SDK) of data that moves or is replicated between Regions, such as items in DynamoDB global tables. The application in the second Region uses the local replica ARN in its keyring and keeps working when the first Region is down.
  • Where they do not: AWS services such as S3 replication, and many service-level copies, treat a multi-Region key as a single-Region key and decrypt and re-encrypt anyway. Plan service-level replication with a destination key instead.
  • Independent policies: each replica has its own key policy, grants and aliases; KMS never synchronizes them. Shared properties are the key material, key ID and rotation. A role that works with the primary needs the replica's key policy to allow it and an IAM policy whose Resource includes the replica ARN (or an arn:aws:kms:*:account-id:key/mrk-... pattern).
  • Not a substitute: two single-Region keys with the same alias name have different material and cannot decrypt each other's data. UpdatePrimaryRegion changes which key is primary; it does not copy policies.
  • Keys in a custom key store (CloudHSM or external) cannot be multi-Region. KMS will not replicate them, so any multi-Region availability for such keys has to be designed Region by Region.

How do AWS Certificate Manager and AWS Private CA manage TLS certificates?

AWS Certificate Manager (ACM) provisions, deploys and renews TLS certificates for integrated services such as Elastic Load Balancing, CloudFront and API Gateway, and AWS Private CA runs your own private certificate authority for internal names and client certificates.

ACM public certificates

  • Regional: a certificate can be attached only to resources in the Region where it was requested. CloudFront uses certificates from us-east-1, so a distribution with an origin in another Region needs a second certificate for the same name in us-east-1.
  • Managed renewal: ACM-issued certificates with DNS validation renew without human action as long as the validation CNAME record stays in DNS (simple when Route 53 hosts the zone). Email validation needs someone to approve renewal.
  • Imported certificates (bought from another CA) are never renewed by ACM; ACM only emits expiry events. Replacing them with ACM-issued certificates removes the renewal chore.
  • Exportable public certificates let you use an ACM public certificate on your own servers, but the private key then lives on those hosts.
  • ACM for Nitro Enclaves lets NGINX or Apache on an enclave-enabled EC2 instance terminate TLS with an ACM public certificate whose private key stays inside the enclave, so OS administrators cannot read it and ACM still renews it. Use it when TLS must end on the instance (for example, behind an NLB with TCP listeners).

AWS Private CA for internal PKI

  • A central CA in a security account, shared through AWS RAM, lets every workload account request private certificates in its own ACM. ACM renews private certificates it issued. Public certificates cannot cover private names such as payments.corp.internal.
  • CA modes: general-purpose mode issues certificates of any validity. Short-lived certificate mode issues certificates valid for up to 7 days at a lower per-certificate price, which suits high-volume, short-lived workloads (for example, containers using mutual TLS) and avoids revocation lists. Short-lived certificates are issued directly through the Private CA API, not through ACM; ACM-managed certificates have a lifetime that ACM sets.

Mutual TLS on an Application Load Balancer

For client-certificate authentication, the ALB uses a trust store built from your CA certificate bundle uploaded to S3 (optionally with revocation lists). The HTTPS listener's mutual TLS mode decides who validates:

ModeBehaviour
OffNo client certificates
PassthroughThe ALB forwards the client certificate chain in headers; the targets must validate it
VerifyThe ALB validates client certificates against the trust store and rejects missing or untrusted ones before requests reach the targets

Partners receive client certificates issued by your Private CA through a secure channel. Server certificates on the listener prove the load balancer's identity to clients; only a trust store with a mutual TLS mode authenticates the clients themselves.

How do you enforce TLS 1.3 and end-to-end encryption in transit?

Encryption in transit is enforced at each hop: the TLS versions a listener accepts, re-encryption to the targets, and policies that reject plaintext requests.

Load balancer security policies

On Application and Network Load Balancers, the listener's security policy is the only control over negotiated TLS versions and ciphers; listener rules cannot filter on the TLS version.

Security policy (examples)Accepts
ELBSecurityPolicy-TLS13-1-3-2021-06TLS 1.3 only
ELBSecurityPolicy-TLS13-1-2-2021-06TLS 1.3 and TLS 1.2
Policies with PQ in the name, such as ELBSecurityPolicy-TLS13-1-2-Res-PQ-2025-09Adds hybrid post-quantum key exchange (ML-KEM) for clients that offer it; others fall back to classical groups

End to end

  • An ALB terminates TLS. To keep traffic encrypted to EC2 instances or containers, use HTTPS target groups with a certificate on each target; the ALB does not validate target certificates, so self-signed ones work. Security groups restrict who can connect but do not encrypt.
  • An NLB with TCP listeners passes TLS through to the targets (end to end) but loses HTTP features such as path-based routing and AWS WAF. An NLB TLS listener terminates TLS at the load balancer.
  • Certificates on the listener come from ACM, so they renew automatically.

Rejecting unencrypted requests to AWS APIs

To make S3 refuse plain HTTP from any principal in any account, add a bucket policy statement that denies all S3 actions when aws:SecureTransport is false. Because the deny sits in the resource policy, it applies to every caller, including principals in other accounts, whatever their own IAM policies allow.

When do you need AWS CloudHSM, a custom key store or imported key material instead of standard KMS?

Standard AWS KMS already generates and uses keys inside HSMs validated at FIPS 140-3 Level 3, integrates natively with S3, EBS, RDS and other services, and rotates keys automatically. A requirement for FIPS-validated HSMs alone is therefore met by KMS with the least overhead. Choose a dedicated or external option only when a rule asks for something KMS's multi-tenant service cannot provide:

OptionWhere key material livesChoose it whenLimits
KMS default key storeKMS HSMs (multi-tenant service)FIPS-validated keys, service integration, automatic rotationAWS operates the HSMs
Imported key material (EXTERNAL origin)Generated in your HSM, used inside KMS HSMsYou must generate the root material and be able to make AWS's copy unusable at once (delete it or set it to expire) while keeping KMS latency and availabilityYou keep a copy for durability; symmetric keys rotate on demand only
AWS CloudHSM key storeYour CloudHSM clusterKMS integration with services, but key material in single-tenant HSMs you controlSymmetric encryption keys only; no imported material, automatic rotation or multi-Region keys; cluster needs at least two active HSMs in different AZs
External key store (XKS)Your HSMs outside AWS, reached through an XKS proxyKey material must never be stored in AWS in any form, and you can cut off access from your sideSymmetric only; every request depends on your proxy, network and HSMs, adding latency and availability risk
AWS CloudHSM directlyYour CloudHSM clusterSingle-tenant HSMs under exclusive control used through standard interfaces (PKCS#11, JCE, OpenSSL), TLS offload, database TDE, asymmetric keysYou manage users, keys, HA and application integration

CloudHSM essentials

  • Single tenancy and exclusive control: AWS manages the hardware, but only your HSM users can use or manage the keys. The current hsm2m.medium type is FIPS 140-3 Level 3 validated.
  • Interfaces: PKCS#11, Java (JCE) and the OpenSSL Dynamic Engine (used by NGINX or Apache for SSL/TLS offload, so a non-extractable TLS private key stays in the HSM), plus database transparent data encryption (for example, Oracle TDE through the PKCS#11 library).
  • Separation of duties: admins (formerly crypto officers) manage users; crypto users create and use keys. Give applications crypto user credentials and keep admin credentials with the security team.
  • High availability: a cluster synchronizes keys and users across its HSMs, and the client SDK load-balances and fails over between them. Run at least two HSMs in different Availability Zones for production. A second, separate cluster shares nothing, and restoring from backups means downtime.

Keys in any custom key store rotate manually (new key plus alias). A CloudHSM key store cannot hold asymmetric keys, so asymmetric uses such as TLS private keys go to CloudHSM directly.

How should an architect plan for post-quantum cryptography with ML-KEM and ML-DSA on AWS?

A post-quantum strategy protects against two different future quantum threats, and the fixes differ:

ThreatWhat is vulnerablePost-quantum answer on AWS
Harvest now, decrypt later: traffic recorded today decrypted once large quantum computers existTLS key exchange based on RSA or elliptic curves (ECDHE), even with TLS 1.3Hybrid key exchange with ML-KEM (for example X25519MLKEM768) on internet-facing TLS: ALB and NLB PQ security policies, CloudFront, and AWS service endpoints such as KMS, ACM and Secrets Manager. Clients must offer the hybrid groups too.
Forged signatures on things trusted for years (firmware, documents, certificates)RSA and ECDSA signatures; larger keys or curves do not helpML-DSA signatures (KMS ML-DSA keys; ML-DSA certificates from AWS Private CA)
Data at restSymmetric AES-256 is considered quantum resistantNo re-encryption needed; rotation or new keys add nothing post-quantum

Prioritize by exposure: confidentiality of data in transit on the internet first (because recording is happening now), then long-lived signatures. Hybrid key exchange is backward compatible, so older clients keep negotiating classical groups. Protection of recorded traffic comes from the key exchange, not from the protocol version or the certificate: a certificate authenticates the server, it does not decide whether recorded sessions can be decrypted later. Public clients also trust only certificates that chain to public roots, so private ML-DSA certificates serve internal PKI.

Migrating long-lived signatures

Devices or verifiers that trust only RSA cannot suddenly verify ML-DSA. Sign each release with both the classical key and a new ML-DSA key and ship both signatures, then deliver (with a classically signed update) the new trust anchor to devices while they can still be updated securely.

ML-DSA and ML-KEM keys in AWS KMS

AWS KMS offers two post-quantum asymmetric key types: ML-DSA (FIPS 204) for digital signatures and ML-KEM (FIPS 203) for establishing shared secrets. The private key never leaves KMS; the public key can be downloaded and used anywhere.

ML-DSAML-KEM
Key specsML_DSA_44, ML_DSA_65, ML_DSA_87ML_KEM_512, ML_KEM_768, ML_KEM_1024
Key usageSIGN_VERIFYENCAPSULATE_DECAPSULATE
OperationsSign, Verify (algorithm ML_DSA_SHAKE_256)Encapsulate (sender, public key), Decapsulate (receiver, private key in KMS)
Replaces (classical)RSA or ECDSA signingRSA key transport or ECDH (KEY_AGREEMENT keys with DeriveSharedSecret)

Signing large messages with ML-DSA

KMS accepts RAW messages of up to 4 KB. RSA and ECC keys handle larger data with the DIGEST message type, but ML-DSA keys use EXTERNAL_MU instead: the caller computes the 64-byte mu value locally as FIPS 204 defines it (from the message and the public key) and sends it to Sign. The result is a standard ML-DSA signature over the full message, verifiable like any other.

Key establishment with ML-KEM

The partner downloads your ML-KEM public key, encapsulates a 32-byte shared secret locally and sends you the ciphertext. Your service calls Decapsulate in KMS to recover the same secret, and both sides derive encryption keys from it with a key derivation function. The receiving role needs only kms:Decapsulate.

Decapsulate does not prove the ciphertext was made for your key: as FIPS 203 specifies (implicit rejection), a correctly sized ciphertext for another key, or a tampered one, still returns a 32-byte value, just the wrong one. A successful call is therefore no evidence that the ciphertext was meant for you. AWS therefore advises a key confirmation step: both sides derive a confirmation value (for example, an HMAC over a fixed label with a key derived from the secret) and compare it before processing any data.

Tip. SAP-C03 tests this task with multi-account, multi-Region scenarios where several workable encryption designs compete and stated constraints decide: no re-encryption jobs, no application changes, key material never in AWS, single-tenant HSMs, administrators unable to decrypt, least privilege, least operational overhead or lowest cost. Expect to diagnose failed KMS, S3, snapshot-sharing and certificate configurations from their symptoms, to pick condition keys and policy pairs for cross-account access, to tell near-twin options apart (CloudHSM key store versus external key store versus imported material, TLS13-1-3 versus TLS13-1-2 policies, Private CA general-purpose versus short-lived mode, ALB mutual TLS verify versus passthrough), and to plan post-quantum work by threat: ML-KEM for key exchange and key establishment, ML-DSA for signatures, nothing for AES-256 at rest. Multiple-response items are common.

Key takeaways
  • Customer managed symmetric KMS keys rotate automatically on a custom 90 to 2,560 day period (or on demand); AWS managed keys rotate yearly and cannot change; asymmetric, HMAC and custom key store keys rotate manually with a new key and an alias.
  • Rotation keeps old key material, so old data stays readable without re-encryption; it never helps when a plaintext data key has leaked, which needs the data re-encrypted under new data keys.
  • Cross-account key use needs both the key policy and the caller's IAM policy; AWS managed keys cannot be shared, aliases are account-scoped, SCPs never grant, and service-linked roles get access through grants.
  • Removing the default key policy's IAM delegation is the way to keep IAM administrators from ever using a key; kms:ViaService, kms:CallerAccount and encryption context conditions narrow how a key is used.
  • S3 Bucket Keys cut KMS requests without code changes but switch the encryption context to the bucket ARN; DSSE-KMS gives two layers; SSE-KMS replication needs the encrypted-objects setting, a destination key and role permissions on both keys.
  • Multi-Region keys share material and key ID for client-side encryption across Regions, but each replica has its own key policy and services such as S3 re-encrypt anyway.
  • ACM certificates are Regional (CloudFront uses us-east-1) and renew automatically only when ACM issued them with DNS validation; Private CA shared through AWS RAM gives every account private certificates, and short-lived mode suits high-volume certificates of up to 7 days.
  • The listener security policy alone sets TLS versions (TLS13-1-3 for TLS 1.3 only); HTTPS target groups keep traffic encrypted to the targets.
  • KMS HSMs are already FIPS 140-3 Level 3; choose CloudHSM for single-tenant exclusive control or PKCS#11/JCE/OpenSSL, an external key store when material may never be in AWS, and imported material when you generate it but need KMS latency and availability.
  • Post-quantum priorities: hybrid ML-KEM key exchange on TLS against harvest-now-decrypt-later, ML-DSA for long-lived signatures (EXTERNAL_MU above 4 KB), and no re-encryption of AES-256 data at rest.

Frequently asked questions

Does rotating a KMS key re-encrypt my data?

No. AWS KMS rotation adds new key material behind the same key ID and keeps all earlier material, so data and data keys encrypted before the rotation are decrypted with the material that encrypted them. Nothing is re-encrypted, applications do not change, and this is also why rotation does not help when a plaintext data key has been exposed: that data must be re-encrypted under new data keys.

Which AWS KMS keys support automatic rotation?

Only symmetric encryption customer managed keys whose material KMS generated (AWS_KMS origin) support automatic rotation, with a period you choose between 90 and 2,560 days; they also support on-demand rotation. Symmetric keys with imported material rotate on demand after you import new material. AWS managed keys rotate every year and cannot be changed. Asymmetric, HMAC and custom key store keys are rotated manually by creating a new key and moving an alias to it.

How do I let another AWS account use my KMS key?

Use a customer managed key and allow it in two places: the key policy in the key owner's account must allow the other account or, for least privilege, a specific role in it, and an IAM policy in the other account must allow the KMS action on the key's ARN. Aliases cannot be used across accounts, AWS managed keys cannot be shared at all, and a service-linked role such as the EC2 Auto Scaling role gets access through a KMS grant created from its own account.

What is the difference between a CloudHSM key store and an external key store?

Both are AWS KMS custom key stores that let services use KMS keys whose material you control. A CloudHSM key store keeps the material in your single-tenant AWS CloudHSM cluster inside AWS. An external key store keeps it in HSMs outside AWS, reached through an XKS proxy, so the material is never stored in AWS and you can cut off access, at the cost of added latency and dependence on your own network. Both support only symmetric keys, without automatic rotation or multi-Region keys.

When should I use AWS CloudHSM instead of AWS KMS?

Use AWS CloudHSM when a requirement asks for single-tenant HSMs under your exclusive administration, for standard interfaces such as PKCS#11, JCE or OpenSSL, for TLS offload with non-extractable keys, or for database TDE. If the requirement is only FIPS 140-3 Level 3 validated HSMs, AWS KMS already meets it with less operational overhead, native service integration and automatic rotation.

Why does an S3 key policy condition stop working after enabling S3 Bucket Keys?

With S3 Bucket Keys, Amazon S3 uses a bucket-level key and passes the bucket ARN rather than each object's ARN as the aws:s3:arn encryption context. A key policy that requires a specific object prefix in the context no longer matches, so requests fail with AccessDenied. Condition the key policy on the bucket ARN and enforce prefix-level access with the bucket policy and IAM policies.

Is data encrypted at rest with AES-256 safe from quantum computers?

Symmetric AES-256 encryption is considered resistant to known quantum attacks, so data at rest in S3, EBS or RDS under AWS KMS does not need re-encryption for a post-quantum program. The priority is data in transit, whose RSA or elliptic-curve key exchange can be recorded now and broken later; hybrid ML-KEM key exchange on TLS addresses that. Long-lived digital signatures should move to ML-DSA.

How do I sign a file larger than 4 KB with an ML-DSA key in AWS KMS?

Compute the 64-byte mu value of the message locally, as FIPS 204 defines it from the message and the ML-DSA public key, and call the KMS Sign operation with the EXTERNAL_MU message type. The signature is the same standard ML-DSA signature you would get by signing the full message, so verifiers check it normally. ML-DSA keys do not use the DIGEST message type that RSA and ECC keys use.

Source

This lesson covers the "Security, Compliance, and Governance" domain of the official SAP-C03 exam guide. Vendors revise their guides — check the source for the current version.

Test yourself on this topic
Practice now

Sign up free to mark lessons complete, bookmark topics and track your exam readiness.

Spotted a mistake in this lesson?