AWS KMS
全托管密钥管理服务,集中创建、管理和轮换加密密钥,与 100 多项 AWS 服务集成
概述
AWS Key Management Service (KMS) 是一项用于安全创建、存储和管理数据加密密钥的全托管服务。与 S3、EBS、RDS、DynamoDB、Lambda 等 100 多项 AWS 服务集成,只需几次点击即可启用数据加密。KMS 密钥由硬件安全模块 (HSM) 保护,密钥材料永远不会离开 HSM。支持对称密钥 (AES-256) 和非对称密钥 (RSA、ECC),通过信封加密实现用 KMS 密钥加密数据密钥的多层防御。密钥策略与 IAM 策略的组合可精细控制密钥使用权限,AWS CloudTrail 可审计所有密钥使用历史。自动密钥轮换功能可每年自动更新密钥材料。
信封加密的机制与优势
KMS 的核心是信封加密。不是直接用 KMS 密钥加密数据,而是先通过 GenerateDataKey API 生成数据密钥 (明文和加密后的密钥对),用明文数据密钥加密数据后,将加密后的数据密钥与数据一起存储。解密时将加密后的数据密钥发送给 KMS 获取明文,再用该密钥解密数据。这种两层结构使得加密大量数据时,对 KMS 的 API 调用仅在密钥生成和解密时各一次,避免了吞吐量瓶颈。Azure Key Vault 采用将密钥、密钥和证书统一管理的设计,而 KMS 专注于加密密钥管理,与 Secrets Manager (密钥) 和 ACM (证书) 功能分离。这种分离使密钥策略设计更简洁,更易于应用最小权限原则。
密钥策略与权限设计
KMS 的访问控制由密钥策略和 IAM 策略两层构成。密钥策略是按密钥设置的基于资源的策略,定义哪些主体可以使用该密钥。IAM 策略从主体侧控制「可以使用哪些密钥」。只有两个策略都允许时操作才能成功,双重防止意外访问。AWS 托管密钥 (aws/s3、aws/ebs 等) 免费使用,可零额外成本启用 S3 或 EBS 加密,但不支持自定义密钥策略或跨账户访问。根据组织合规要求创建客户托管密钥并显式限制密钥使用权限是最佳实践。加密技术相关书籍 (Amazon) 系统整理了密钥管理的设计模式。
密钥轮换与多区域支持
启用 KMS 自动密钥轮换后,每 365 天生成新的密钥材料。旧密钥材料保留用于解密,因此轮换前加密的数据仍可解密。应用侧无需代码变更,密钥 ID 不变,仅内部密钥材料更新。使用多区域密钥可在不同区域使用相同的密钥 ID,在跨区域数据复制 (S3 跨区域复制或 DynamoDB 全局表等) 时无需重新加密。对于需要 FIPS 140-2 Level 3 认证的合规要求,可通过自定义密钥存储功能使用 CloudHSM 集群作为后端。CloudTrail 记录所有 KMS API 调用,可完整审计谁在何时使用了哪个密钥。