AWS Secrets Manager 的密钥管理 - 自动轮换与应用集成
通过 Lambda 函数自动轮换 RDS/Aurora 密码,使用 SDK 缓存库从应用无缝获取。还介绍与 Parameter Store 的选择。
Secrets Manager 的角色与 Systems Manager Parameter Store 的区别
Secrets Manager 是安全保存和管理数据库密码、API 密钥、OAuth 令牌等机密信息的服务。与类似服务 Systems Manager Parameter Store(SecureString)的最大区别是自动轮换功能的有无。Secrets Manager 标准提供通过 Lambda 函数自动轮换 RDS、Aurora、Redshift、DocumentDB 密码的机制。Parameter Store 适合配置值和标志的管理,相比每个密钥每月 0.40 美元的 Secrets Manager,具有免费额度更大的优点(截至 2026 年 8 月)。需要自动轮换的认证信息用 Secrets Manager,其他配置值用 Parameter Store 是常见的区分方式。
自动轮换的机制
自动轮换是 Lambda 函数定期更新密钥值的机制。RDS 或 Aurora 的情况下,可使用 AWS 提供的轮换用 Lambda 模板。轮换分 4 个步骤执行。createSecret 生成新密码,setSecret 更新数据库密码,testSecret 验证使用新密码的连接,finishSecret 切换密钥的版本标签。轮换间隔可设置 1 天到 365 天,根据安全策略通常为 30 天或 90 天。为防止轮换期间的停机,推荐采用交替用户策略(交替使用 2 个数据库用户)。
从应用获取的模式
从应用获取密钥的基本模式是使用 AWS SDK 的 GetSecretValue API。Lambda 函数中,在函数初始化阶段获取密钥并缓存到全局变量,避免每次请求的 API 调用。使用 AWS 提供的缓存库(Python 的 aws-secretsmanager-caching、Java 的 aws-secretsmanager-jdbc)时,其中内置了基于 TTL 的缓存和轮换时的自动刷新。ECS 任务中,在任务定义的 secrets 字段指定 Secrets Manager 的 ARN 后,容器启动时会自动注入为环境变量。CloudFormation 模板中使用动态引用({{resolve:secretsmanager:MySecret}}),无需在模板中直接写入密钥值即可引用。
Secrets Manager 的费用
Secrets Manager 的费用为每个密钥每月约 0.40 美元,每 10,000 次 API 调用约 0.05 美元。自动轮换用 Lambda 函数的执行费用也会产生,但考虑到轮换频率(每 30〜90 天),金额很小。与 Parameter Store 的 SecureString(标准参数免费)相比成本较高,但应考虑自动轮换功能的价值来选择。通过 Lambda 的缓存库减少 API 调用次数,优化成本。
轮换设计实践
密钥的自动轮换是定期更新认证信息、抑制泄露时风险的机制。常用于数据库密码等,轮换处理由 Lambda 函数承担。在与数据库联动的常见配置中可使用预定义的轮换功能,但对于自有系统,需自行实现轮换处理。为使应用在更新过程中也不会认证失败,有时也会采取让新旧认证信息暂时并存的策略。设计轮换的频率和方式,使系统的要求与不停机更新得以兼顾,这一点很重要。
跨账户共享
在跨多个账户的系统中,有时希望共享同一个密钥。Secrets Manager 可以使用基于资源的策略,允许来自特定其他账户的访问。这样就无需在各账户中重复管理相同的认证信息,更新也能集中进行。共享时,应一并设计加密密钥的权限,使只有获得许可的账户才能解密。允许访问的范围应限制在最小,避免不必要的共享。将集中管理与适当的共享相结合,就能在整个分布式系统中安全地运用认证信息。
安全最佳实践
安全地处理密钥,需彻底贯彻若干原则。对密钥的访问权限,仅以最小限度授予真正需要的角色。妥善管理静态加密所用的加密密钥,控制可解密的对象。记录谁在何时获取了哪个密钥并使其可审计,就能检测可疑的访问。不要将认证信息直接写入代码或配置文件,务必设计为在运行时获取。将这些措施组合起来,即可堵住认证信息泄露的途径,实现即使万一发生事故也能限定影响范围的稳健管理。
获取的优化与运维监控
应用频繁获取密钥时,API 调用会增加,影响延迟和成本。将获取的值缓存一定时间并重复使用,即可减少调用次数。应设计为在轮换更新值后,缓存也能随之正确更新。在运维方面,监控轮换处理是否失败很重要。若未察觉失败而继续使用旧的认证信息运维,存在在某个时刻发生认证错误的风险。通过通知掌握轮换的成败,建立失败时能立即应对的体制,可带来稳定的运维。
总结
Secrets Manager 是自动化认证信息生命周期管理的服务。通过自动轮换强制密码定期更新,通过 IAM 策略控制访问,通过 KMS 加密,多层降低认证信息泄露风险。消除在代码或仓库中嵌入密码的做法,将安全最佳实践应用于整个组织。
参考资料(AWS 官方)
本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。
如本页内容与官方文档不一致,请以官方文档为准。