用 AWS Systems Manager Parameter Store 管理的配置与机密信息 - 层级结构与加密
讲解使用 Parameter Store 管理配置值和机密信息、设计层级结构以及与 Secrets Manager 的选用。
Parameter Store 概述
Parameter Store 是以层级方式管理配置数据和机密信息的键值存储。Secrets Manager 具备凭证自动轮换等功能,而 Parameter Store 同时管理应用程序的各类配置(功能标志、端点 URL、阈值)和机密信息。Standard 参数免费,最多可以创建 10,000 个。
层级结构与 Secrets Manager 的选用
在参数名中使用路径分隔符(/)来构建层级结构。像 /myapp/prod/db/host、/myapp/prod/db/password 这样按环境和组件进行整理。然后通过 GetParametersByPath 一次性获取特定路径下的参数。关于与 Secrets Manager 的选用,对于需要自动轮换的数据库凭证,选择 Secrets Manager 是合适的。对于其他配置值和机密信息,选择 Parameter Store 是合适的。Parameter Store 还支持引用 Secrets Manager(aws:secretsmanager:),可以将两项服务结合起来使用。
与 Lambda 和 ECS 的集成
要从 Lambda 函数获取 Parameter Store 的参数,使用 AWS Parameters and Secrets Lambda Extension。扩展会在本地缓存参数,因此 Lambda 每次执行时的 API 调用会减少。在 ECS 任务定义的 secrets 部分引用 Parameter Store 的参数,并作为容器的环境变量注入。SecureString 参数通过 KMS 加密,并通过 IAM 策略控制解密权限。通过参数的版本管理跟踪变更历史,出现问题时可以回滚到以前的版本。通过参数策略设置有效期,并对过期的参数自动发出通知。
Parameter Store 的费用
Standard 参数免费,每个账户和区域最多可以保存 10,000 个参数。Advanced 参数每个参数每月约 0.05 美元,支持最大 8KB 的大小、参数策略以及 100,000 个参数的上限(截至 2026 年 8 月)。API 调用在高吞吐量设置(与参数层级分开的设置)下,每 10,000 个请求约 0.05 美元。与 Secrets Manager(每个密钥每月 0.40 美元)相比,对于不需要自动轮换的配置值,Parameter Store 更容易降低费用。
IAM 与基于路径的访问控制
Parameter Store 的权限利用参数名的层级来设计。在 IAM 策略的资源指定中像 /myapp/prod/* 这样限定路径,就可以控制为只有用于生产环境的角色才能访问生产环境的参数。解密 SecureString 时,除了获取参数的权限之外,还需要加密所用 KMS 密钥的解密权限。为每个应用程序分别使用专用的 KMS 密钥,并在密钥策略和 IAM 策略两方面都做到最小权限,会带来机密信息被意外读取这一风险的降低。
配置变更的安全运维
参数每次更新时都会自动分配版本号,可以引用过去的值或恢复到以前的版本。如果将生产配置的变更设为经过代码审查后从 CI/CD 管道发布的运维方式,可以减少手工操作造成的事故。由于参数的变更能够作为 EventBridge 的事件被检测到,因此可以构建在特定配置被改写时发送通知或自动启动相关处理的机制。也有一种方法是明确指定版本号来引用重要配置,使值不会在意外的时间点发生切换。
从应用程序获取的模式与陷阱
从应用程序频繁获取参数时,需要注意 API 的限流。通过在启动时只读取一次并缓存在内存中、使用 GetParameters 一次获取多个参数等做法来减少 API 调用次数。在 CloudFormation 和 CDK 中,可以在模板内动态引用参数,并在部署时嵌入最新的配置值。不过,处理引用位置时加以注意,避免让 SecureString 的值出现在模板的输出或日志中。访问频率高时,考虑使用高吞吐量设置(与参数层级分开的设置)。
在多账户 / 多区域中共享
在多个账户或多个区域使用相同配置时,由于 Parameter Store 在每个区域相互独立,因此设计为在各区域放置相同的参数,或者从用于共享的账户读取。希望在整个组织中分发通用配置时,准备通过 CI/CD 同步到各环境的机制,会使环境之间配置不一致的漂移不容易发生。由于 Advanced 参数单个参数的大小上限大,也有一种方法是将小的 JSON 配置汇总到 1 个参数中管理。值变得过大时,考虑拆分配置或与 S3 配合使用。
总结
Parameter Store 是以层级方式管理应用程序配置和机密信息的服务。通过 Lambda 扩展的缓存加快配置的获取,并可以通过 ECS 任务定义的 secrets 部分传递给容器。Standard 参数免费,最多可以保存 10,000 个,与 Secrets Manager 相比,对于不需要自动轮换的配置值更容易降低费用。
参考资料(AWS 官方)
本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。
如本页内容与官方文档不一致,请以官方文档为准。