如何将AWS Secret Manager与Spring Boot Application集成

时间:2019-05-17 23:08:42

标签: amazon-web-services spring-boot aws-secrets-manager

我需要从AWS Secret Manager检索凭证,并且发现需要为以下启动程序添加gradle依赖项

spring-cloud-starter-aws-secrets-manager-config

此外,我发现我需要在Bootstrap.yml中添加以下设置

Property Configurations

我不清楚,如果有人可以大为赞赏,那么如何在Spring Boot应用程序中访问秘密密钥。

3 个答案:

答案 0 :(得分:2)

不需要启用带有Spring Boot应用程序配置的AWS Secrets Manager,我们只需要添加以下依赖项

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws-secrets-manager-config</artifactId>
<!--<version> As per your spring-cloud-dependencies And starter parent version 
</version>-->
</dependency>

如果您没有spring-cloud-context依赖项,请在pom中同样添加。

它使spring应用能够连接到您的云,然后您可以像从属性文件中读取秘密一样读取秘密。 您可以根据需要自定义属性配置,请阅读spring文档。 https://cloud.spring.io/spring-cloud-aws/2.1.x/multi/multi__cloud_environment.html

在对代码进行上述更改之后,让我们移至aws控制台并打开Secrets Manger为我们的应用程序添加新的Secret,然后执行以下步骤 假设我们正在使用spring.application.name = secretmanagerboot 和参数名称为“ com.secretmanagerboot.secret.param1”,其值为“ secretvalue”

  1. 点击存储新机密
  2. 选择其他类型的秘密
  3. 将参数名称添加为“ com.secretmanagerboot.secret.param1”,并将参数值添加为“ secretvalue”
  4. 单击下一步
  5. 将秘密名称添加为secretmanagerboot <_PROFILE> 您可以根据需要添加说明。
  6. 单击下一步,然后选择您的轮换政策

您可以通过以下方式访问应用程序中的参数 @Value(“ $ {com.secretmanagerboot.secret.param1}”)

答案 1 :(得分:0)

我想分享有关SecretManager与Spring Boot应用程序集成的发现。

步骤1.在Spring Boot应用程序中添加spring-cloud-starter-aws-secrets-manager-config依赖项(Gradle和Maven添加依赖项的方式不同)。

第2步。在bootstrap.yml文件中添加以下配置。

aws:
  secretsmanager:
    prefix: /secret
    defaultContext: application
    profileSeparator: _
    failFast: true
    name: <service_name>
    enabled: true

步骤3.在AWS管理控制台中为所需区域创建密钥。

有两个秘密上下文

  1. 应用程序上下文-所有服务之间的共享机密。
  2. 服务上下文-服务专有的秘密。

关于创建秘密的最后说明,可以为每种环境创建秘密。

例如,

/secret/service_name_dev/username

/secret/service_name_prod/username

可以根据以下格式创建应用程序上下文机密。

/secret/application/username

一旦Spring Boot应用程序以上述设置启动,应用程序将根据活动配置文件从AWS Secret Manager加载机密。

例如, 对于开发者配置文件,它将加载秘密/ secret / service_name_dev / username,并且可以使用$ {username}映射在配置以及类中访问该值。

答案 2 :(得分:0)

以上答案可能是错误的。 机密管理器中的配置存储应为: key: /secret/application value: {"username":"test"}