AWS encryption and certificate management at the Professional tier is no longer "pick SSE-KMS and move on". It is the discipline of designing a key hierarchy and a certificate hierarchy that span dozens of AWS accounts, multiple AWS Regions, hybrid on-premises endpoints, and a seven-to-ten-year compliance window — while those accounts are actively being migrated, refactored, and onboarded. AWS encryption and certificate management at this scale combines AWS KMS (customer-managed CMKs, multi-Region keys, cross-account keys, KMS Grants, External Key Store for Bring Your Own Key), AWS CloudHSM (FIPS 140-3 Level 3 single-tenant clusters for PCI HSM and sovereign workloads), AWS Certificate Manager (public TLS on ELB and CloudFront), AWS Private CA (internal mTLS CA hierarchy with per-OU subordinates), AWS Secrets Manager (automated RDS credential and certificate rotation), and AWS Nitro Enclaves (confidential compute with cryptographic attestation to KMS). This guide covers the enterprise encryption and certificate management patterns that SAP-C02 expects you to wield, not just recognize.
SAP-C02 cross-cuts encryption and certificate management into every domain. Domain 1 (Design Solutions for Organizational Complexity) tests you on cross-account KMS and Private CA hierarchies. Domain 2 (Design for New Solutions) tests you on greenfield BYOK and mTLS baselines. Domain 3 (Continuous Improvement) tests you on CMK rotation, certificate automation, and migration from legacy on-premises HSMs to managed encryption and certificate management. Domain 4 (Accelerate Workload Migration and Modernization) tests you on retrofitting encryption during migration — Oracle TDE to Aurora with KMS, encrypted-in-place RDS snapshot copies, PCI HSM to CloudHSM, and Windows PKI to AWS Private CA. Throughout this guide we use the running scenario of a healthcare application migration requiring BYOK, mTLS, HIPAA, and a five-year audit trail to make the tradeoffs concrete.
What Is AWS Encryption and Certificate Management at the Professional Tier?
AWS encryption and certificate management at the Professional tier is the enterprise-scale framework for governing cryptographic keys and X.509 certificates across a multi-account, multi-Region, hybrid-on-premises AWS estate. It extends the Associate-tier basics (AWS KMS, SSE-KMS, CloudHSM, ACM) with three capabilities that only matter at scale:
- Scope and lifecycle: AWS KMS CMKs and ACM certificates exist across tens to hundreds of AWS accounts, multiple AWS Regions, and a compliance retention window that often exceeds seven years. You need a key and certificate hierarchy that survives account splits, account closures, Region launches, and service deprecations.
- Delegation and isolation: The team that produces an AWS KMS key is rarely the team that consumes it. Central security owns the CMK; business-unit workloads consume it via cross-account key policies and short-lived KMS Grants. The same asymmetry applies to AWS Private CA hierarchies — central PKI owns the root, OU-scoped subordinates delegate issuance to business units.
- Regulatory realism: HIPAA, PCI-DSS (especially the HSM standard), FedRAMP High, and GDPR each impose different constraints on where key material resides, who can physically touch it, and how long audit records are retained. AWS encryption and certificate management at the Professional tier is the art of satisfying those constraints without turning every workload into a CloudHSM deployment.
- AWS KMS multi-Region key: a set of AWS KMS keys in different AWS Regions that share the same key material and key ID, enabling cross-Region decryption without re-encryption.
- KMS Grant: a temporary, programmatic delegation of AWS KMS permissions, scoped to specific operations, with an optional expiration and automatic revocation on retirement.
- External Key Store (XKS): an AWS KMS feature that lets a CMK use key material stored in a customer-operated external HSM or KMIP-compliant key manager outside AWS.
- AWS CloudHSM: single-tenant FIPS 140-3 Level 3 hardware security modules inside your Amazon VPC; you are the sole root of trust.
- AWS Private CA: managed private certificate authority hierarchy (root + subordinate CAs) for internal TLS and mTLS.
- mTLS (mutual TLS): both client and server present and verify X.509 certificates, establishing a two-way trust.
- Nitro Enclaves: isolated, hardened Amazon EC2 compute environment that can cryptographically attest its identity to AWS KMS.
- Reference: https://docs.aws.amazon.com/kms/latest/developerguide/overview.html
Why AWS encryption and certificate management matters for SAP-C02
Every SAP-C02 domain has at least one encryption and certificate management question. Domain 1 tests cross-account AWS KMS key sharing and Private CA subordinate delegation. Domain 2 tests greenfield design choices such as BYOK vs XKS vs CloudHSM, and mTLS baseline for service mesh. Domain 3 tests CMK rotation strategies at scale (thousands of CMKs, thousands of ciphertexts) and ACM renewal automation. Domain 4 tests retrofitting encryption during migration, which is where encryption and certificate management decisions are hardest to reverse. Answer those scenarios confidently and encryption and certificate management becomes a high-leverage section of your SAP-C02 score.
Plain-Language Explanation: AWS Encryption and Certificate Management
Professional-tier encryption and certificate management is best understood by mapping the cryptographic estate onto something physical.
Analogy 1: The Embassy Diplomatic Pouch System (KMS Hierarchy + Multi-Region + Cross-Account)
Imagine a country with embassies in every major city. The diplomatic pouch is the encrypted payload, the ambassador's seal ring is the AWS KMS key, and the pouch courier is the AWS service performing envelope encryption. At the single-embassy level, one ambassador's seal (one CMK in one Region) is enough. But a nation-state operates dozens of embassies:
- A multi-Region KMS key is an ambassador's seal replicated so that a pouch sealed in Tokyo can be opened by the same ambassador's office in Frankfurt without re-sealing. The nation's foreign ministry (AWS KMS service) keeps the ring material synchronized across embassies.
- A cross-account key policy is a signed letter the ambassador leaves with a trusted consulate of a different nation, authorizing that consulate to open pouches addressed to it. The seal ring never leaves the embassy; only the authority to invoke it is shared.
- A KMS Grant is a single-use authorization slip handed to a courier for one delivery. It expires automatically once the delivery completes, or at a pre-set time — perfect for short-lived workloads.
- External Key Store (XKS) is the case where the ambassador's seal material is actually kept in the home country's national vault (your on-premises HSM or KMIP key manager). Every time the embassy needs to seal something, it calls home over a secure line and the vault performs the crypto remotely.
- AWS CloudHSM is a private vault installed inside your embassy — still physically inside AWS facilities but dedicated to your nation, and the host nation's staff have no keys to it.
This analogy grounds every AWS encryption and certificate management question that involves more than one Region or account.
Analogy 2: The Hospital's Double-Envelope Records System (BYOK + HIPAA + 5-Year Audit Trail)
A hospital stores patient records. For a new HIPAA system:
- Client-side encryption with a BYOK CMK is the doctor wrapping the chart in an inner envelope sealed with a hospital-owned wax seal (the customer-supplied key material).
- SSE-KMS on the underlying S3 bucket is the mailroom adding an outer envelope with the hospital's generic seal.
- The audit trail is the logbook at the records window: every time someone pulls a chart, the clerk writes down who, when, and why. AWS CloudTrail plus AWS Config plus S3 Object Lock plus CloudWatch Logs, delivered to a five-year-retention bucket, is that logbook.
- mTLS at the nurse station means both the nurse's badge (client certificate) and the records window's window badge (server certificate) must check out before the chart is handed through. AWS Private CA issues both, rotated by Secrets Manager integration.
HIPAA's 5-year audit window turns CloudTrail and AWS Config into compliance primitives, not just debugging tools.
Analogy 3: The Corporate PKI as a Family Tree (ACM Private CA Hierarchy)
AWS Private CA is a family tree of trust. The root CA is the grand-patriarch — signed once, offline, kept in a safe, and rarely used. The root's signature only appears on subordinate CAs — one subordinate per organizational unit (OU), region, or subsidiary. Each subordinate signs end-entity certificates for workloads inside its scope. If a single subordinate is compromised, you revoke only that subordinate, not the entire family. End-entity certificates for microservices, databases, and Kubernetes service meshes are the grandchildren — short-lived, automatically rotated, and numerous.
At enterprise scale, the CA hierarchy mirrors the AWS Organizations OU hierarchy: one root, one intermediate per OU, end-entity certs rotated on-demand. This is exactly the structure SAP-C02 expects for zero-trust microservice architectures.
Analogy 4: The Apartment Building Door System (Certificate Automation + Rotation)
Think of an apartment building whose tenants expect their door keys to just work, forever. Behind the scenes the landlord silently re-keys every apartment every 13 months. Tenants never see the change because:
- ACM public certificates rotate automatically on ALB and CloudFront; the ARN never changes, so the wiring underneath survives.
- Secrets Manager rotates the database password and the RDS CA certificate bundle on a schedule you pick. Application code reads the secret by name, not by value.
- Nitro Enclaves attest their identity to KMS on every invocation, so even an enclave image update does not require re-provisioning keys — the enclave proves at runtime that it is the legitimate tenant.
The landlord-level goal: no encryption and certificate management change ever requires an application redeploy. At Professional scale, that is the bar.
For multi-Region and cross-account KMS questions, picture the embassy diplomatic pouch — the seal ring replicates (multi-Region key) or delegates (cross-account key policy, Grant), but the ring material never leaves secure custody. For CA hierarchy questions, picture the family tree — one root, OU-scoped subordinates. For migration questions involving HIPAA or PCI, picture the hospital double-envelope. Reference: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping
KMS Key Hierarchy at Scale — Customer-Managed vs AWS-Managed Tradeoffs
At Associate scale, "use a customer-managed CMK" is the default correct answer. At Professional scale, every customer-managed CMK is a governance object that must be budgeted, named, tagged, rotated, audited, and eventually retired. A careless organization ends up with tens of thousands of CMKs, most orphaned, most costing one dollar per month, most with overlapping scopes. A deliberate organization has a small, tiered CMK hierarchy.
Three tiers of CMK ownership
- Tier 1 — Central security CMKs: small number of tightly controlled CMKs owned by the security organization, typically one per workload class (logging, backups, customer PII, payment data). Key policy is written by central security. Consumers get access only via cross-account key policy delegations or KMS Grants.
- Tier 2 — Shared-service CMKs: CMKs owned by platform teams (logging platform, data platform, ML platform) and consumed by dozens of workload accounts via cross-account policies. These keys are multi-Region when the platform replicates data across Regions.
- Tier 3 — Workload CMKs: CMKs owned by individual workload accounts, used only inside that account. These are the default choice when a workload does not need to share encrypted data outbound.
The Professional-tier skill is recognizing which tier a scenario lives in. "Centralized logging bucket that must be writable by 400 accounts but decryptable only by the security team" → Tier 1 CMK in the security account with an outbound cross-account key policy. "Per-tenant customer-managed CMK for a SaaS application" → Tier 3 with KMS Grants issued dynamically per tenant.
AWS-managed keys: when they are fine, when they are not
AWS-managed keys (aliases like aws/s3, aws/rds, aws/secretsmanager) still have a legitimate place even at scale. Use them when:
- The data is entirely contained within one account, and no auditor demands explicit customer key ownership.
- Cost pressure is extreme and CMK proliferation would reach the thousands.
- The workload is non-regulated and does not require cross-account decrypt.
Do not use AWS-managed keys when:
- The scenario says "audit every use" → customer-managed CMK with CloudTrail.
- The scenario says "cross-account" → customer-managed CMK (AWS-managed keys cannot be shared cross-account via key policies).
- The scenario says "revoke on incident" or "disable the key" → customer-managed CMK (you cannot disable AWS-managed keys).
- The scenario says "imported key material" or "BYOK" → customer-managed CMK with imported material.
- The scenario says "multi-Region" → customer-managed multi-Region CMK (AWS-managed keys are single-Region).
At SAP-C02 scale, any requirement that says "share with another account", "replicate across Regions", "disable during incident response", or "import our own key material" rules out AWS-managed keys entirely. The right answer is a customer-managed CMK — either single-Region or multi-Region — with an explicit key policy. Reference: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html
Key naming, aliases, and tagging at scale
Professional-tier CMK management lives and dies on naming conventions. A healthy convention includes:
- Alias prefixing by tier and domain:
alias/central/logs-cmk,alias/platform/data-lake-cmk,alias/workload/app123-cmk. - Tag keys for cost allocation and ownership:
Owner,Environment,DataClassification,RotationCadence. - AWS Config rule enforcement:
kms-cmk-not-scheduled-for-deletion, custom rules requiring tag completeness. - AWS Organizations SCP denying
kms:ScheduleKeyDeletionin production OUs without an explicit break-glass role.
Multi-Region KMS Keys — Replicated Material, Independent Key Policies
Multi-Region KMS keys solve a specific problem: a multi-Region active-active workload needs to decrypt the same ciphertext in any Region without re-encryption. Without multi-Region keys, you would have to decrypt in the source Region and re-encrypt with a destination-Region CMK at replication time — expensive, slow, and cross-Region data-plane coupling you do not want.
How multi-Region keys work
A multi-Region KMS key is a primary key plus one or more replica keys. All share the same key ID (the suffix after mrk-), the same key material, and the same cryptographic equivalence: ciphertext produced by the primary is decryptable by any replica and vice versa. Each replica has its own key policy, own grants, own rotation schedule, and its own ARN bound to its Region — so regional access control remains independent.
When to use multi-Region keys
- Active-active Amazon DynamoDB Global Tables where items are encrypted client-side with the same logical key across Regions.
- Amazon S3 Cross-Region Replication with SSE-KMS where the destination key shares material with the source, avoiding re-wrap latency.
- Amazon Aurora Global Database with application-layer encryption of sensitive columns.
- Disaster recovery scenarios where failover to a standby Region must be immediate, with no re-encryption step.
When NOT to use multi-Region keys
- Independent regional data residency: if EU data must be encrypted with an EU-resident key and US data with a US-resident key, use independent single-Region CMKs and keep ciphertexts separate per Region.
- Audit scope separation: if auditors require that a Region's key usage be provable to never have touched another Region's material, single-Region keys are simpler to defend.
- Rotation isolation: multi-Region rotation synchronizes material across Regions; if you want Region-specific rotation events, stay single-Region.
Multi-Region keys replicate key material within the same owning account across Regions. They do not solve cross-account decryption. A workload in Account B calling a multi-Region replica in Account A's us-west-2 still needs the Account A key policy to grant Account B permission, and Account B's IAM to allow the ARN. Multi-Region solves geography; cross-account key policies solve tenancy. Reference: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html
Cross-Account KMS Keys for Shared Services
Cross-account KMS is the load-bearing primitive of every centralized-logging, centralized-backups, and data-lake-as-shared-service architecture on AWS. The pattern is invariable: one account owns the CMK, many accounts produce encrypted data that lands in the owner's bucket, and a carefully scoped set of accounts can read back.
The canonical cross-account KMS key policy
A cross-account KMS key policy has three statements beyond the default:
- Root account principal:
"Principal": { "AWS": "arn:aws:iam::111111111111:root" }with"Action": "kms:*"— lets the owner administer. - Cross-account encrypt: allows a trusted set of AWS Organizations OU IDs or specific account roots to call
kms:GenerateDataKey*andkms:Encrypt. This is what lets 400 producer accounts write encrypted objects. - Cross-account decrypt (scoped narrowly): allows only the security team's role in the owner account, and perhaps a shared-services read role, to call
kms:Decrypt.
Pair this with an S3 bucket policy on the centralized bucket that requires s3:x-amz-server-side-encryption-aws-kms-key-id to equal the owner's CMK ARN — so producer accounts cannot substitute a different CMK.
Consumer-side IAM
On the consumer side (the 400 producer accounts), the IAM role writing to the bucket needs kms:GenerateDataKey on the specific CMK ARN in the owner account. This is where the double-policy trap of Associate-tier KMS scales up: you must provision IAM in 400 accounts, and one missing role fails its writes silently.
Solve this via AWS CloudFormation StackSets or Terraform landing zone modules that bake the IAM role into every member account automatically.
Cross-account KMS Grant alternative
Instead of listing dozens of account principals in a static key policy, you can issue KMS Grants programmatically — one Grant per workload, each with a tight scope and an optional retirement principal. Grants are particularly useful for:
- Ephemeral workloads (Lambda, Fargate, Step Functions) where the caller's identity is short-lived.
- Per-tenant SaaS isolation where each tenant gets its own Grant on a shared CMK.
- Automated pipelines where the CI/CD system issues a Grant, uses it, and retires it.
Grants are additive to the key policy, so the key policy still has to delegate the ability to issue Grants — typically via kms:CreateGrant scoped to the grant issuer role.
A common Professional-tier trap: the key policy is perfect but the consumer account's IAM role does not name the CMK ARN. The call fails with AccessDeniedException referencing KMS, not S3 or RDS. Provision IAM in every consumer account (via StackSets or Terraform) at the same time you provision the key policy in the owner account. Reference: https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html
KMS Grants — Temporary Delegated Access
KMS Grants are the under-used weapon of Professional-tier KMS design. While key policies are static and IAM policies are semi-static, a Grant is programmatic, scoped, time-bounded, and automatically revocable.
Anatomy of a Grant
A Grant specifies:
- Grantee principal: the IAM identity that will use the CMK.
- Allowed operations: a subset of
Encrypt,Decrypt,GenerateDataKey,ReEncryptFrom,ReEncryptTo,CreateGrant,RetireGrant,DescribeKey. - Grant constraints: encryption context must match specific key-value pairs, narrowing the Grant to a particular resource.
- Retiring principal: who can retire (revoke) the Grant.
- Expiration: optional, but recommended for short-lived workflows.
Use cases where Grants beat key policies
- AWS service integrations: when an AWS service (EBS attaching a volume, Aurora creating a snapshot, Lambda invoking an encrypted environment variable) needs a narrow, per-resource permission, it creates a Grant scoped to that resource via encryption context — not a key policy change.
- Per-tenant SaaS: issue one Grant per tenant on a shared CMK, with encryption context
tenant_id=<id>. When a tenant churns, retire the Grant. - Just-in-time elevation: a break-glass workflow creates a Grant for a responder, logs the issuance in CloudTrail, and auto-retires after the incident window closes.
Grant constraints with encryption context
Encryption context is a set of key-value pairs passed to Encrypt/Decrypt calls; the same context must be supplied at decrypt time. Grant constraints can require specific encryption context values, pinning a Grant to a specific logical resource:
Constraints:
EncryptionContextEquals:
tenant_id: "tenant-4271"
data_class: "phi"
With this Grant, the grantee can decrypt only if the ciphertext was originally encrypted with those exact encryption context pairs. This is the most granular KMS delegation AWS offers.
- Programmatic (via
kms:CreateGrant) — no IaC pipeline required to delegate. - Scoped — specific operations, optional encryption context constraints.
- Temporary — retired on demand via
kms:RetireGrant, or automatically expired. - Additive — cannot override an explicit deny in the key policy.
- Audited — every Grant creation and use is logged in CloudTrail.
- Limit: ~50,000 Grants per CMK (soft), so do not use Grants when key policy conditions would suffice.
- Reference: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html
BYOK and External Key Store (XKS) — Sovereign Key Control
Bring Your Own Key (BYOK) has two distinct AWS flavors at Professional scale:
BYOK via Imported Key Material
You generate key material on-premises (on an HSM or similar), import it into a customer-managed CMK, and retain a master copy of the material off-AWS. AWS KMS uses the imported material for all cryptographic operations, but you can delete the material from AWS KMS on demand, rendering all ciphertext instantly unreadable — the so-called "cryptographic erasure" capability.
Tradeoffs:
- No automatic rotation (imported-material CMKs must be rotated manually by importing fresh material into a new CMK).
- Expiration possible — you can set an expiration date on the imported material, after which AWS KMS refuses to use it.
- Single point of authority: if you lose the master copy on-premises and delete the material from AWS, ciphertext is unrecoverable.
Use imported-material BYOK when regulators require demonstrable customer ownership of the original key material and the ability to execute cryptographic erasure within a defined window.
BYOK via External Key Store (XKS)
XKS is the newer, stronger BYOK option. Instead of importing material into KMS and letting KMS operate on it, XKS keeps the key material in an external HSM or KMIP-compliant key manager that you operate. Every cryptographic operation against the CMK is proxied through an XKS proxy to your external key manager, which performs the operation and returns the result. AWS KMS never sees the key material.
Tradeoffs:
- Highest sovereignty: AWS operators cannot access key material even in principle.
- Operational burden: you operate the HSM, the XKS proxy, the network path, and the high availability.
- Latency: every Encrypt/Decrypt call round-trips to your HSM, adding tens to hundreds of milliseconds.
- Availability risk: if your XKS proxy or HSM is unreachable, CMK operations fail. AWS services relying on the CMK (RDS, EBS, S3) will encounter errors.
Use XKS only when regulators explicitly demand that key material never reside inside AWS infrastructure, even in wrapped form. This is rare and usually sovereign-government scale; most HIPAA and PCI workloads do not require XKS.
A common SAP-C02 trap: the scenario says "the company must bring its own key" and the distractor jumps straight to XKS. If the requirement is just "customer-owned master copy" or "cryptographic erasure on demand", imported-material BYOK is simpler and cheaper. XKS is only required when "key material must never leave customer-operated HSM" is explicit. Reference: https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html
Migration-Time Encryption Retrofit
Retrofitting encryption during migration is where architectures get permanently frozen into good or bad shapes. The Professional tier tests this heavily because migration is where the mistakes are most expensive to reverse.
Oracle TDE to Aurora with KMS
Oracle Transparent Data Encryption (TDE) uses Oracle's own wallet and master key infrastructure. When migrating Oracle to Aurora MySQL or Aurora PostgreSQL, you do not carry TDE across — Aurora uses KMS at the storage layer. The migration pattern:
- Ensure source Oracle is TDE-enabled and decryptable at the application layer during migration (AWS DMS must be able to read cleartext or have TDE credentials).
- Create the target Aurora cluster with KMS encryption enabled at creation (encryption is creation-time-only on Aurora, identical to RDS).
- Use AWS DMS with SSL-enforced endpoints for both source and target so that in-transit data is never on the wire in cleartext.
- After cutover, re-introduce application-layer encryption for any columns that were TDE-protected at the cell level in Oracle — Aurora's storage-layer KMS encryption is broader but less granular.
For Oracle workloads moving to Amazon RDS for Oracle that keep TDE, you pair Oracle TDE with an RDS Option Group that references a CMK and use KMS as the wallet — retaining TDE semantics while managing the wallet through AWS.
Encrypted-in-place RDS snapshot copy
The "encrypt an unencrypted RDS instance" workflow is a staple of every SAP-C02 exam:
- Take a snapshot of the unencrypted source.
- Copy the snapshot with
--kms-key-idset to your target CMK ARN and encryption enabled. The copy is a brand-new encrypted snapshot. - Restore the encrypted snapshot into a new encrypted RDS instance.
- Cut over application traffic (DNS switch, blue/green deployment, or logical replication).
- Retire the unencrypted source.
For minimal downtime, use the RDS Blue/Green Deployment feature (available for MySQL, MariaDB, PostgreSQL): Blue is unencrypted production, Green is the encrypted copy created from snapshot, both are kept in sync via logical replication, and you switch with a single promotion command.
On-premises PKI to AWS Private CA
When migrating a Windows Active Directory Certificate Services (AD CS) PKI to AWS, the clean pattern is:
- Stand up an AWS Private CA root in a dedicated security account, ideally in a Region that matches your primary workload residency.
- Create subordinate CAs per OU or business unit in their respective accounts (RAM-shared from the root's account).
- Migrate end-entity certificates gradually: new issuance goes to AWS Private CA, existing certificates live out their current validity.
- Export the old AD CS root into trust stores alongside the new AWS Private CA root during the overlap period.
- Once all end-entity certs have rotated to AWS Private CA, remove the AD CS root from trust stores.
PCI HSM migration to CloudHSM
On-premises PCI HSM workloads (PIN translation, HSM-backed key wrapping) cannot move to KMS because KMS does not offer the PKCS #11 operations PCI HSM workloads depend on. Move them to CloudHSM instead:
- Provision a CloudHSM cluster with at least two HSMs across two Availability Zones in the target VPC.
- Use the CloudHSM Client SDK's PKCS #11 library — identical API to the on-premises HSM.
- For PCI-DSS compliance, document the HSM's FIPS 140-3 Level 3 certification in the RoC (Report on Compliance).
- Connect CloudHSM as an AWS KMS custom key store only if you want KMS-integrated AWS services (S3, EBS) to use keys that physically reside on your CloudHSM cluster.
No exception exists. Migrating to an encrypted state means snapshot → copy-with-encryption → restore → cut over. For minimal-downtime use the Blue/Green deployment pattern on RDS/Aurora. Do not confuse "enable encryption" with "rotate CMK" — rotation changes material, not encryption status. Reference: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.html
CloudHSM vs KMS — The FIPS 140-3 Level 3 Tradeoff
At Associate tier, the rule is "default to KMS, CloudHSM only when explicitly required". At Professional tier, you must articulate why CloudHSM is required in specific regulated scenarios.
The FIPS 140-3 Level 3 distinction
AWS KMS operates hardware security modules FIPS 140-3 Level 3 validated for the underlying HSM modules (previously 140-2 Level 3, transitioning to 140-3 as certifications renew). The KMS service as a whole operates at FIPS 140-3 Level 3 when you use the FIPS endpoints. AWS CloudHSM is likewise FIPS 140-3 Level 3 — but the difference is who the HSM operator is:
- KMS FIPS 140-3 Level 3: AWS is the HSM operator; AWS operations teams have the HSM administrative credentials (constrained by AWS internal controls).
- CloudHSM FIPS 140-3 Level 3: you are the HSM operator; you hold the Crypto Officer credentials; AWS operations has no way to perform cryptographic operations on your HSM.
For many regulators this distinction is irrelevant — KMS is sufficient. For a narrow set of regulated workloads it is load-bearing:
- PCI HSM (PIN translation, PIN verification): demands single-tenant HSM where the acquirer bank is the sole operator.
- Certain U.S. DoD and IC workloads: demand customer-operated HSM.
- Some EU financial regulations (PSD2 qualified electronic signatures, German BSI TR-03145): demand dedicated HSM with documented sole custody.
- Sovereign data residency in non-AWS-Region jurisdictions: when the regulator accepts AWS hardware but not AWS operations — CloudHSM is the compromise.
CloudHSM availability and cost realities
A CloudHSM cluster requires a minimum of two HSMs across two Availability Zones for production. At roughly USD 1.45 per HSM per hour, a two-HSM cluster is about USD 2,100 per month at list price before data transfer. Three HSMs across three AZs is best practice for true fault isolation, pushing the figure past USD 3,000 per month per cluster. This is before Crypto Officer operational overhead.
Contrast with KMS: USD 1.00 per customer-managed CMK per month plus request charges. KMS wins on cost for >99% of workloads.
CloudHSM as KMS custom key store
If you want to use CloudHSM-resident keys while still benefiting from KMS service integrations, link CloudHSM as a custom key store to KMS. CMKs in the custom key store have their key material physically on CloudHSM, but they appear as normal CMKs to KMS-integrated services (S3, EBS, RDS). Tradeoff: every cryptographic operation on those CMKs hits CloudHSM, so CloudHSM availability becomes a dependency of your S3/RDS/EBS traffic.
CloudHSM clusters are Regional. Cross-Region DR requires either a second cluster in the DR Region (with your own key synchronization process via backup/restore) or using KMS multi-Region keys for the AWS-integrated data plane and CloudHSM only for the PKCS #11 sidecar. Scenarios that promise cross-Region CloudHSM replication "out of the box" are wrong. Reference: https://docs.aws.amazon.com/cloudhsm/latest/userguide/cluster-architecture.html
ACM Private CA Architecture — Hierarchy for Internal mTLS
AWS Private CA (formerly ACM Private CA, now often just "Private CA") is the managed service for issuing private TLS certificates — the certificates that clients only trust when they have the Private CA root in their trust store. At Professional scale, Private CA design is hierarchy design.
The three-level hierarchy pattern
Enterprise-grade Private CA deployments use a three-level hierarchy:
- Root CA — single root, offline-activated, kept in a dedicated security account, signs only subordinates. Validity typically 10 years. Stored encrypted at rest with KMS and rarely touched.
- Subordinate (intermediate) CAs — one per OU, business unit, or major workload domain. RAM-shared to the owning account from the security account. Signs end-entity certificates. Validity 3–5 years. Rotation plan: stand up new subordinate 6 months before old expiration, gradually migrate workloads, retire old.
- End-entity certificates — short-lived (often 1-30 days) certificates for individual services, issued via ACM-Private-CA integration or direct API. Automatically rotated.
Per-OU subordinate CAs
The reason to run one subordinate per OU rather than a single flat CA is blast radius. If a single subordinate's private key is compromised, you revoke only that subordinate — certificates in other OUs are unaffected. Revocation is via CRL (Certificate Revocation List) published to S3 or OCSP (Online Certificate Status Protocol) responder; both are managed by Private CA but must be consumed by your clients.
AWS Organizations OU structure maps naturally to this: one subordinate in each OU's shared-services account, RAM-shared to workload accounts inside that OU.
mTLS service mesh integration
Private CA end-entity certificates enable mutual TLS across service meshes:
- App Mesh consumes Private CA via the Virtual Node's TLS policy; every proxy sidecar receives its own end-entity certificate.
- EKS with Istio or Linkerd can use Private CA via the cert-manager add-on or AWS's own integration.
- Kubernetes Ingress with mTLS — ALB supports mTLS with client cert verification against a truststore, often populated by Private CA's CRL or a static chain.
For every mTLS endpoint, you must provision:
- A server certificate from Private CA (rotated every 1-30 days).
- A client certificate from Private CA (same cadence).
- A truststore bundle containing the relevant subordinate CA certs.
ACM-Private-CA integration for managed rotation
ACM can act as a managed front-end for Private CA end-entity certificates on ELB and CloudFront — you request the certificate via ACM, specifying your Private CA as the issuer, and ACM handles the renewal automatically just like it does for public certificates. This avoids writing rotation glue code for ELB-terminated mTLS.
The Professional-tier Private CA design pattern is fixed: one root (offline, long-validity, rarely used), subordinates per OU (medium-validity, RAM-shared), end-entity certificates short-lived and automated. Scenarios that propose "issue end-entity certs directly from the root CA" are bad practice — they make root compromise catastrophic. Reference: https://docs.aws.amazon.com/privateca/latest/userguide/ca-hierarchy.html
Certificate Automation — Secrets Manager, RDS, ELB, CloudFront, Nitro Enclaves
Certificate automation is the discipline of ensuring certificate rotation never requires human intervention and never requires an application redeploy.
Secrets Manager for RDS credentials and CA bundle
Secrets Manager rotates database credentials on a schedule via a Lambda-based rotation function. Applications read the secret by ARN; the rotation function updates the secret value and the database user password atomically. For RDS CA certificate bundle rotation (the AWS RDS CA that signs the RDS server certificate), Amazon rotates the CA every few years; you update the trust bundle on clients to include both the old and new RDS CAs during the overlap, then remove the old.
At scale, the pattern is:
- Secrets Manager holds both the database password and the CA bundle path or CA fingerprint.
- Applications fetch from Secrets Manager at startup and on a SIGHUP-style reload trigger.
- An EventBridge rule on
aws.rds:rds-ca-rotationtriggers a pipeline that pushes a new CA bundle to all applications.
ACM for ELB and CloudFront
ACM public certificates rotate transparently on ALB, NLB (with TLS listeners), CloudFront, API Gateway, App Runner. The operational rules:
- Keep the DNS validation CNAME in place for the full life of the certificate.
- For CloudFront, the ACM cert must live in us-east-1.
- For multi-SAN certificates, use ACM wildcards or explicit SAN lists; rotation is atomic per certificate.
Nitro Enclaves for confidential compute
Nitro Enclaves is an isolated Amazon EC2 compute environment that can cryptographically attest to AWS KMS. The attestation document proves:
- The enclave image hash (which binary is running).
- The parent instance identity.
- The PCR (Platform Configuration Registers) measurements.
KMS supports a policy condition key kms:RecipientAttestation:ImageSha384 that allows a CMK to be used only by an enclave whose image hash matches. This is how financial services firms build wallet custody and how healthcare firms build PHI processing enclaves: the enclave decrypts sensitive data in memory, processes it, and returns results — with cryptographic proof that no other code could have accessed the plaintext.
Database TLS in-transit migration
For Aurora, RDS, Redshift:
- Aurora MySQL / MySQL RDS: enable
require_secure_transport=1in the DB parameter group to refuse non-TLS connections. - Aurora PostgreSQL / PostgreSQL RDS: set
rds.force_ssl=1in the DB parameter group. - Aurora TLS modes:
AWS_RDS_FORCE_SSL,VERIFY_CA,VERIFY_IDENTITY— chooseVERIFY_IDENTITYfor hostname validation, which is required for defense against MITM. - Client CA bundle:
rds-combined-ca-bundle.pemcontains all Regional RDS CAs, or use the per-Region bundle for smaller trust scope.
Migration plan for existing cleartext connections:
- Deploy the RDS CA bundle to all clients.
- Enable TLS at the client side (connection string
sslmode=requireor equivalent). - Confirm all clients connect successfully over TLS (CloudWatch metric
DatabaseConnectionscombined with Performance Insights). - Flip
require_secure_transport=1/rds.force_ssl=1in the parameter group. - Monitor for denied connections; rollback the parameter group if unexpected failures occur.
Rotation Strategy — CMK Rotation, Aliases, Policy vs IAM at Scale
Rotation at scale is not "enable automatic rotation and walk away". It is the choreography that keeps thousands of CMKs healthy across a seven-to-ten-year compliance horizon.
Automatic rotation — when it is enough
For customer-managed symmetric CMKs with AWS-owned material, automatic rotation is the right default. 365 days by default, configurable 90-2560 days. Enable it by default on every such CMK via AWS Config rule (cmk-backing-key-rotation-enabled).
Manual rotation — when automatic is not available
Automatic rotation does not work for:
- Asymmetric CMKs.
- CMKs with imported key material (BYOK).
- CMKs backed by external key stores (XKS).
- CMKs in a CloudHSM custom key store (subject to CloudHSM-specific procedures).
For these, the rotation pattern is:
- Create a new CMK with fresh material.
- Update the alias (
alias/my-app-cmk) to point at the new CMK. - For existing ciphertexts that need the new material, run a re-encrypt sweep using
kms:ReEncrypt*. - Schedule the old CMK for deletion (7–30 day waiting period).
Applications that reference only the alias continue working without code changes.
Aliases as the single source of truth
Every production workload should reference CMKs via aliases, never by key ID or ARN. Aliases let you rotate the underlying CMK without touching application configuration. Alias naming conventions should encode tier, workload, and environment: alias/workload-phi-prod, alias/central-logs-prod.
Key policy vs IAM overlap at scale
At scale, the interplay of key policy + IAM + SCPs + Grants becomes a governance problem:
- Key policy is the primary. At scale, maintain key policies via IaC (CloudFormation or Terraform), and require change approval.
- IAM identity policies delegate from the key policy. Grant only
kms:Decryptandkms:GenerateDataKeyto most workloads; reservekms:ScheduleKeyDeletionandkms:DisableKeyfor a dedicated security role. - SCPs at the AWS Organizations level deny
kms:ScheduleKeyDeletionin production OUs without a specific break-glass role tag. - Grants handle per-workload delegation dynamically, especially for serverless and per-tenant cases.
- CloudTrail + AWS Config + Security Hub track drift — any key policy change outside IaC generates an alert.
- Automatic rotation: symmetric customer-managed CMKs with AWS-owned material only. 90-2560 days.
- AWS-managed keys: auto-rotate yearly, cannot be modified.
- Imported/BYOK/asymmetric/XKS: manual rotation only.
- Aliases are the single source of truth for applications — rotate CMKs, keep alias stable.
- SCPs guard ScheduleKeyDeletion/DisableKey in production OUs.
- AWS Config rule
cmk-backing-key-rotation-enabledenforces rotation baseline. - Re-encrypt sweep uses
kms:ReEncrypt*— no plaintext ever leaves KMS. - Reference: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html
Professional Scenario — Healthcare App Migration: BYOK + mTLS + HIPAA + 5-Year Audit Trail
The running scenario is a U.S. healthcare SaaS migrating from on-premises to AWS with these requirements:
- HIPAA compliance with a signed BAA and all PHI encrypted at rest and in transit.
- BYOK: the customer's compliance team insists on bringing their own key material from an on-prem HSM (cryptographic erasure capability required).
- mTLS between all internal microservices — zero plaintext traffic inside the VPC.
- 5-year audit trail for every PHI access event.
Target architecture
AWS Organizations structure: Security OU, Workloads OU (Prod / Non-prod sub-OUs), Logging OU. The CMK and CA hierarchy follows the OU tree.
Key hierarchy:
- Tier 1 central-security CMK in the Security account: imported-material BYOK CMK (
alias/phi-central), multi-Region replica in us-east-1 and us-west-2 for DR. Imported material expires every 2 years; rotation via new import process. - Tier 2 data-lake CMK: customer-managed, automatic rotation, cross-account policy shared to all workload accounts.
- Tier 3 workload CMKs: per-workload customer-managed CMKs for EBS, RDS, Aurora, Secrets Manager. Automatic rotation enabled.
- KMS Grants: issued per tenant by the SaaS control plane, scoped with encryption context
tenant_id=<uuid>.
Certificate hierarchy:
- AWS Private CA root in Security account, kept offline except for subordinate signing events.
- Subordinate CAs per OU (Prod-Workloads, Non-prod-Workloads), RAM-shared to each account.
- End-entity certificates short-lived (7 days), issued via ACM-Private-CA integration, rotated automatically.
- Service mesh (App Mesh) enforces mTLS on every inter-service call.
- Client mTLS on external APIs handled at ALB with a truststore referencing a published CRL.
In-transit controls:
- RDS Aurora PostgreSQL with
rds.force_ssl=1,VERIFY_IDENTITYenforced at clients. - S3 buckets with bucket policy denying
aws:SecureTransport=false. - VPC endpoints for KMS, S3, Secrets Manager so data never traverses the public internet.
Audit trail for 5 years:
- CloudTrail organization trail writing to a dedicated logging-account S3 bucket with Object Lock in Compliance mode and a 5-year retention. The bucket is encrypted with a logging-specific customer-managed CMK with cross-account write-only policy.
- AWS Config organization aggregator in the security account, recording configuration history to the same logging bucket.
- CloudWatch Logs with 5-year retention for KMS key use events, Secrets Manager rotation events, and Private CA certificate issuance events.
- Security Hub + GuardDuty delivering findings to a 5-year-retention S3 sink.
Cryptographic erasure capability:
- Because the Tier 1 BYOK CMK uses imported material, the compliance team retains a sealed copy of the master material on-premises. In the event of a contractual termination, the master is destroyed on-prem and the material is deleted from KMS (
kms:DeleteImportedKeyMaterial) — all ciphertexts encrypted under any envelope derived from that CMK become irretrievable.
Why not CloudHSM here?
The customer's compliance team initially asked for CloudHSM. The architecture review pushed back: HIPAA does not mandate single-tenant HSM, BYOK imported-material CMKs satisfy the "bring our own key" requirement, and KMS+Private CA integration is far cheaper and more automated than CloudHSM for the general data plane. CloudHSM remains available as a future option if PCI-HSM requirements emerge from a payment-processing add-on.
Why not XKS here?
XKS would keep key material entirely on-premises, but the operational and latency costs are prohibitive for a SaaS with hundreds of concurrent tenants, each making thousands of decrypt calls per minute. XKS is reserved for future sovereign workloads (EU data residency contracts) where the tradeoff is acceptable.
HIPAA's Security Rule requires "a mechanism to encrypt and decrypt ePHI". It does not name specific HSM architectures. KMS customer-managed CMKs (with or without imported material) satisfy HIPAA when the BAA is in place, CloudTrail logs every access, and access is restricted by key policy and IAM. Reserve CloudHSM and XKS for scenarios where the regulator or contract explicitly names single-tenant HSM or sovereign key custody. Reference: https://aws.amazon.com/compliance/hipaa-compliance/
Key Numbers and Must-Memorize Facts — AWS Encryption and Certificate Management at Scale
- KMS CMK cost: USD 1.00/month + requests (USD 0.03 per 10k for most operations).
- KMS request limit: 10k-50k requests per second per CMK per Region, depending on operation (GenerateDataKey, Decrypt, Encrypt). Use S3 Bucket Keys for high-traffic S3 workloads.
- Multi-Region keys: same key ID suffix after
mrk-, same material, independent policies and ARNs. - KMS Grants: up to 50,000 per CMK (soft limit).
- KMS automatic rotation: 365 days default, 90-2560 days configurable, symmetric + AWS-owned material only.
- KMS key deletion waiting period: 7-30 days.
- Imported key material expiration: optional, up to the regulator's chosen window; re-import required before expiration.
- CloudHSM: FIPS 140-3 Level 3, minimum 2 HSMs across 2 AZs for production, ~USD 1.45/hr/HSM.
- Private CA: monthly CA fee + per-issuance fee; short-term certs tier for per-day rotation.
- ACM renewal: 60 days before expiration; requires validation record to remain reachable.
- ACM + CloudFront: certs must be in us-east-1.
- ACM public certificates cannot be exported; AWS Private CA certs can be exported.
- Object Lock Compliance mode: retention cannot be shortened even by root, for regulator-grade audit trails.
- Nitro Enclaves attestation: uses
kms:RecipientAttestation:ImageSha384policy key to pin CMK access to a specific enclave image. - Reference: https://docs.aws.amazon.com/kms/latest/developerguide/overview.html
Common Exam Traps — AWS Encryption and Certificate Management at Scale
Trap 1: Multi-Region key vs cross-account key
Scenario: a Region B workload in Account A reads an object encrypted with a CMK in Region A, Account A. A distractor suggests multi-Region replica solves this. In fact, multi-Region solves only the Region dimension — if both accounts are the same, you just need a replica in Region B. If the workload is in Account B, you still need a cross-account key policy on the replica CMK in Region B.
Trap 2: BYOK vs XKS
Scenario: "customer requires Bring Your Own Key". A distractor jumps to XKS. If the stated requirement is "own the master copy and be able to cryptographically erase", imported-material BYOK is sufficient. XKS is only required when "key material must never reside in AWS infrastructure, even in wrapped form".
Trap 3: CloudHSM vs KMS for HIPAA
HIPAA does not require CloudHSM. Default to KMS customer-managed CMKs. CloudHSM becomes mandatory only when the regulator or contract specifies single-tenant HSM, PCI HSM, or FIPS 140-3 Level 3 with customer as operator.
Trap 4: Encryption cannot be enabled in place on RDS/EBS/Aurora
Any answer like "modify the RDS instance to enable encryption" is wrong. Snapshot → copy with encryption → restore → cut over, or Blue/Green deployment.
Trap 5: ACM certificates cannot be exported (public only)
Public ACM certs cannot be exported. AWS Private CA end-entity certs can be exported. Scenarios that require installing a certificate on an EC2 instance or on-prem endpoint must use Private CA, third-party, or ALB termination.
Trap 6: KMS key policy must delegate to IAM explicitly
At scale, a missing "Enable IAM policies" statement in a new CMK's key policy breaks every IAM-only workload. Bake the statement into every IaC template that creates CMKs.
Trap 7: Cross-account KMS needs both sides provisioned
A CMK key policy alone, without IAM in the consumer account, fails. Provision IAM in consumer accounts via StackSets or Terraform in parallel with the owner's key policy.
Trap 8: Multi-Region keys are not free replication
Each replica is billed as a separate CMK (USD 1.00/month each). Ten Regions of a multi-Region key cost USD 10.00/month baseline plus requests in each Region. Plan accordingly.
Trap 9: Nitro Enclave KMS access needs the ImageSha384 condition
An enclave whose image hash is not bound in the CMK's key policy condition cannot decrypt, even if the enclave's parent instance role has kms:Decrypt. This is by design — the attestation-bound condition is what makes enclaves cryptographically isolated.
Trap 10: Private CA root must not sign end-entity certificates directly
Scenarios suggesting that a root CA directly issues workload certificates are bad practice. Always use subordinates, both for blast radius and for offline-root posture.
AWS Encryption and Certificate Management vs Access Control at Scale
At Professional tier, the interaction between AWS encryption and certificate management and access control is multi-layered:
- IAM, SCPs, RCPs, resource policies decide who can call APIs.
- KMS key policies, Grants, encryption context decide who can use the cryptographic key.
- Private CA + mTLS decides who can even establish a network session with a service.
- Nitro Enclaves + attestation decides which code can decrypt data, not just which IAM role.
- CloudTrail + Config + Object Lock proves all of the above to auditors over a 5-7 year horizon.
A mature Professional-tier architecture applies all five layers; SAP-C02 scenarios award credit for recognizing when an additional layer — particularly encryption context, mTLS, or enclave attestation — is the missing piece.
Practice Question Links — Cross-Domain Scenarios
- "Centralized logging bucket must be writable by 400 member accounts and decryptable only by the security team's investigation role." → Central CMK in security account with cross-account key policy for encrypt, narrow decrypt for one role, bucket policy requiring the specific CMK ARN.
- "Healthcare SaaS requires BYOK with cryptographic erasure on contract termination." → Imported key material CMK with offline master copy; erasure via
kms:DeleteImportedKeyMaterial. - "Per-tenant isolation on a shared CMK for a multi-tenant SaaS." → KMS Grants per tenant with encryption context
tenant_id. - "Migrate Oracle TDE database to Aurora with minimal downtime and encryption retained." → Aurora created with KMS encryption at rest + DMS with SSL endpoints + Blue/Green Deployment for cutover.
- "Zero-trust microservice mesh with certificate rotation every 7 days." → AWS Private CA subordinate per OU + ACM-Private-CA integration for ELB + App Mesh/Istio for internal mTLS.
- "Confidential compute: decrypt PHI only inside a signed enclave image." → Nitro Enclaves + CMK with
kms:RecipientAttestation:ImageSha384condition. - "Cross-Region DR with no re-encryption step." → Multi-Region CMK with replicas in the target Regions.
- "PCI HSM workload moving from on-prem Thales HSM to AWS." → CloudHSM cluster with 2+ HSMs across 2 AZs + PKCS #11 client library.
- "Enforce HTTPS-only on every S3 bucket across the organization." → SCP denying
s3:*whenaws:SecureTransport = false. - "5-year tamper-proof audit trail for every KMS decrypt call." → CloudTrail organization trail to S3 bucket with Object Lock Compliance mode, 5-year retention, logging-dedicated CMK.
FAQ — AWS Encryption and Certificate Management at Professional Scale
Q1: When should I use a multi-Region KMS key versus two independent single-Region CMKs?
Use a multi-Region KMS key when the same ciphertext must be decryptable in multiple Regions without a re-encryption step — typical for DynamoDB Global Tables with client-side encryption, S3 Cross-Region Replication with SSE-KMS, Aurora Global Database column-level crypto, and active-active DR. Use independent single-Region CMKs when the Regions carry different data residency boundaries (EU vs US), when audit scope must be proven per-Region, or when you want rotation events to be Region-specific. Multi-Region keys cost one dollar per month per replica Region, so the price scales linearly. Multi-Region solves geography, not tenancy: cross-account decrypt still requires a standard cross-account key policy on each replica.
Q2: Imported key material BYOK versus External Key Store (XKS) — which for HIPAA?
For HIPAA on AWS, imported key material BYOK is almost always sufficient and is the pragmatic choice. It satisfies "customer owns the master key material" and enables cryptographic erasure on demand, while letting KMS perform the cryptographic operations at normal KMS latency. XKS keeps all cryptographic operations on a customer-operated HSM, adding tens to hundreds of milliseconds of latency and making the HSM an availability dependency for every encrypted data plane call. Only reach for XKS when the regulator or contract explicitly requires "key material must never reside in AWS infrastructure, even in wrapped form" — typically sovereign-government scale, not HIPAA.
Q3: How do I structure an AWS Private CA hierarchy for a large organization?
The proven pattern is three levels: one offline root CA in a dedicated security account, one subordinate CA per AWS Organizations OU (Prod, Non-prod, Dev, or per business unit) shared via RAM into each account, and short-lived end-entity certificates (often 1-30 days) issued from the subordinates. This keeps the root's private key offline except during subordinate signing events, limits blast radius of a subordinate compromise to one OU, and enables automated end-entity rotation via ACM-Private-CA integration on ELB, CloudFront, and App Runner. Revocation uses CRL published to S3 or OCSP. For service-mesh mTLS (App Mesh, EKS with Istio), every proxy sidecar gets its own end-entity certificate rotated daily or weekly.
Q4: How should KMS Grants fit into a multi-account enterprise?
KMS Grants are the right tool for temporary, programmatic, resource-scoped delegations — especially when a static key policy would balloon with hundreds of principals or when the caller is ephemeral (Lambda, Fargate, Step Functions). Typical Pro-tier uses: per-tenant SaaS isolation (one Grant per tenant on a shared CMK, scoped via encryption context tenant_id), AWS service integrations (EBS creating a volume, Aurora taking a snapshot), and just-in-time incident response elevation that auto-retires. Grants are additive — they cannot override key policy denies — and are fully logged in CloudTrail. Do not replace well-structured key policies with Grants; use both. A CMK can hold up to ~50,000 Grants before the soft limit.
Q5: Why choose CloudHSM over KMS with imported key material?
Choose CloudHSM over KMS BYOK only when the regulation or contract explicitly demands single-tenant HSM where the customer is the sole Crypto Officer — examples include PCI HSM (PIN translation, PIN verification), certain U.S. DoD/IC workloads, and some EU financial regulations requiring documented sole custody of HSM hardware. Also choose CloudHSM when you need PKCS #11, JCE, or Microsoft CNG integration for on-premises or third-party software that does not speak KMS APIs. For pure "bring our own key" HIPAA or regulated SaaS scenarios where KMS APIs are fine, KMS with imported material is cheaper (USD 1/month vs thousands per month), easier to operate, and sufficient for cryptographic erasure.
Q6: How do I migrate an on-premises TLS PKI to AWS without breaking existing trust?
Stand up AWS Private CA root + subordinates alongside the existing on-prem PKI, push the AWS root into all client trust stores alongside the on-prem root (dual-trust period), and migrate end-entity certificate issuance to the AWS Private CA hierarchy over a controlled rollover — workload by workload. Existing on-prem certificates live out their validity; new issuance happens in AWS. Once all workloads have rotated to AWS-issued certs, remove the on-prem root from trust stores. Watch out for clients that cache CA bundles (JVM truststores, embedded devices) — they need an explicit bundle update to honor the new root. For mTLS service meshes, leverage cert-manager or AWS App Mesh's native Private CA integration so rotation is automatic.
Q7: What does a 5-year audit trail for KMS and certificate events look like on AWS?
Enable a CloudTrail organization trail recording management and data events to a dedicated logging-account S3 bucket protected by Object Lock in Compliance mode with a 5-year retention. Object Lock Compliance mode prevents even the root user from shortening retention — exactly what HIPAA, PCI-DSS, and SOX auditors want. Encrypt the bucket with a logging-specific customer-managed CMK that has a narrow cross-account write-only policy (producer accounts can PutObject but not GetObject). Pair with AWS Config organization aggregator (configuration history of every KMS CMK, every certificate, every rotation), Security Hub findings delivery to the same sink, and CloudWatch Logs with 5-year retention for application-level access logs. Every KMS decrypt, every Grant issuance, every CMK policy change, every Private CA certificate issuance, every Secrets Manager rotation event is captured and immutable for the full window.
Q8: How do I enforce mTLS end-to-end from client to Aurora through an ALB?
End-to-end mTLS has three hops: client-to-ALB, ALB-to-app, app-to-Aurora. For client-to-ALB, configure the ALB with mTLS verification mode and a truststore bundle referencing your AWS Private CA subordinate. For ALB-to-app, issue end-entity certs to the app targets from the same subordinate, and verify at the app. For app-to-Aurora, set rds.force_ssl=1 or require_secure_transport=1 in the DB parameter group, use connection strings with sslmode=verify-full (PostgreSQL) or --ssl-mode=VERIFY_IDENTITY (MySQL), and ship the rds-combined-ca-bundle.pem to every app instance — rotated via Secrets Manager when AWS publishes a new RDS CA. Monitor for non-TLS connections using CloudWatch metrics and RDS Performance Insights before flipping enforcement, to avoid locking out stragglers.
Further Reading
- AWS Key Management Service Developer Guide
- AWS KMS Multi-Region Keys
- AWS KMS Cross-Account Access
- AWS KMS Grants
- AWS KMS External Key Store (XKS)
- AWS KMS Importing Key Material (BYOK)
- AWS KMS Rotating Keys
- AWS CloudHSM User Guide
- AWS CloudHSM Cluster Architecture
- AWS Certificate Manager User Guide
- AWS Private Certificate Authority User Guide
- AWS Private CA Hierarchy Planning
- AWS Nitro Enclaves User Guide
- Amazon RDS SSL/TLS Connections
- Amazon Aurora SSL/TLS Connections
- AWS Secrets Manager Rotation
- AWS SAP-C02 Exam Guide (PDF)