Centralized keys, envelope encryption, and service-native encryption integrations
| Type | Use case | Notes |
|---|---|---|
| Symmetric (AES-256) | Encrypt/decrypt data; most AWS service integrations. | Single key for encrypt and decrypt; highest performance for bulk data. |
| Asymmetric (RSA, ECC) | Sign/verify, or encrypt/decrypt with public/private key pair. | Common for code signing, TLS cert operations, external parties holding public keys. |
| HMAC | Generate and verify message authentication codes. | Used where symmetric MAC is required; KMS keeps the secret key material. |
CMKs never leave KMS in plaintext. Applications or AWS services request GenerateDataKey / Decrypt over TLS.
This limits KMS API calls, reduces latency, and keeps bulk encryption off the HSM boundary except for the small DEK wrap/unwrap.
| Service | How KMS fits |
|---|---|
| Amazon S3 | SSE-KMS (per-object keys derived/wrapped with your CMK); bucket default encryption. |
| Amazon EBS | Volume encryption uses KMS keys; snapshots inherit encryption context. |
| Amazon RDS | Storage encryption at rest with a KMS key; Transparent Data Encryption workflows. |
| CodePipeline / CodeBuild | Encrypt artifacts (S3 SSE-KMS), credentials in Secrets Manager with KMS CMK. |
Every CMK has a key policy (resource-based). It must allow the account root (or equivalent) to administer the key. Combine with IAM policies and grants for least-privilege:
Automatic key rotation (where supported) rotates backing material for customer-managed symmetric keys on a periodic schedule while preserving the same key ARN. Old material is retained for decrypting existing ciphertext.
Manual rotation: create a new CMK, re-encrypt or dual-encrypt, update aliases—needed for major lifecycle events or algorithm changes.
DisableKey, ScheduleKeyDeletion, and unusual Decrypt volume.kms:EncryptionContext:*, kms:ViaService).