如何在运行时通过 AWS 注入密钥
Posted
技术标签:
【中文标题】如何在运行时通过 AWS 注入密钥【英文标题】:How to inject a secret key at runtime via AWS 【发布时间】:2020-07-10 02:22:18 【问题描述】:使用 Spring boot,我们在属性文件中当前存在以下值。
secret.key=123456 # lets assume 12345 is a secret key
我们正在使用 AWS beanstalk,并希望停止在 code/git 中添加秘密数据,而是在运行时将其作为环境变量注入 aws,如下所示。
但是如何在代码中实现这一点,因为该值当前不存在,无法运行它并显示以下错误消息:
自动装配依赖注入失败;嵌套异常是 java.lang.IllegalArgumentException:无法解析值“$secret.key”中的占位符“secret.key”
尝试在属性文件中进行如下设置:
server.port=5000
#other settings
secret.data=$secret.key
例如尝试在代码中使用秘密值如下:
@RestController
public class HomeController
@Value("$secret.data")
private String secretData;
.....
请告知是否有解决此问题的方法或更好的方法来实现此目的,以停止在代码和 git 中添加敏感数据。谢谢。
【问题讨论】:
我通常使用 AWS Secrets Manager 来存储我可以在运行时访问的秘密。 如何获取 springboot 中密钥的真正秘密值? 【参考方案1】:您正在传递一个系统属性。所以你想要的注释以systemProperties
开头。喜欢,
@Value("#systemProperties.secret.key")
private String secretData;
【讨论】:
以上是关于如何在运行时通过 AWS 注入密钥的主要内容,如果未能解决你的问题,请参考以下文章
如何将新的 SSL 证书和密钥注入正在运行的 Node http.Server?
发送电子邮件时如何向 Amazon SES 服务提供 AWS 密钥?
更改 IAM 用户密钥时如何更新 Elastic Beanstalk 环境变量中的 AWS 凭证?