You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot2.1+AWS Java SDK v1从SSM参数存储读取密钥方案咨询

可行实现方案

方案一:利用AWS托管服务的IAM角色(推荐)

这是AWS生态下最标准、安全的解决方式,直接打破“无凭据调用SSM”的死循环:

  • 给应用所在的AWS资源(EC2实例、ECS任务、EKS Pod等)绑定最小权限的IAM角色,角色仅需包含:
    • ssm:GetParameter(或ssm:GetParameters)权限,且限定到存储Access Key和Secret Access Key的SSM参数路径
    • 若SSM参数用KMS加密(推荐用SecureString类型),需额外添加对应KMS密钥的kms:Decrypt权限
  • 应用启动(Bean实例化)阶段,通过AWS SDK创建SSM客户端:SDK会自动从实例元数据服务(IMDS)获取IAM角色的临时凭据,无需硬编码任何密钥即可调用SSM
  • 读取到AK/SK后,构造StaticCredentialsProvider作为最终的AwsCredentialsProvider Bean,供其他AWS服务客户端使用
  • 优势:无需维护硬编码凭据,权限最小化,启动时仅读取一次SSM参数,不会在请求阶段重复调用

方案二:非AWS环境的变通方案

如果应用部署在本地或非AWS托管服务器,可按以下方式处理:

  • 创建一个仅拥有SSM参数读取权限的专用IAM用户,将该用户的凭据存储在应用本地的加密配置文件中(仅用于访问SSM,权限严格最小化)
  • 应用启动时,读取本地加密配置文件中的专用IAM用户凭据,创建SSM客户端读取目标AK/SK
  • 构造StaticCredentialsProvider作为业务用的凭据提供者,后续业务请求直接使用内存缓存的凭据
  • 补充:本地配置文件需通过操作系统级加密机制(如Linux LUKS、Windows BitLocker)保护,避免明文泄露

核心注意事项

  • 所有SSM参数必须使用SecureString类型,配合AWS KMS加密,禁止明文存储密钥
  • 应用启动时仅读取一次SSM参数,将凭据缓存到内存,避免重复调用SSM或Lambda
  • 严格遵循最小权限原则:无论是IAM角色还是专用IAM用户,仅授予必要的SSM读取和KMS解密权限,禁止多余权限

内容的提问来源于stack exchange,提问作者Micro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 15:10:38