繁体   English   中英

从 AWS Secrets Manager 读取值并替换 Springboot 属性值中的占位符

[英]Read value from AWS Secrets Manager and replace a placeholder in the Springboot property values

我们的应用程序需要连接到 confluent kafka,因此我们在 application.yaml 文件中有以下设置

kafka:
    properties:
      sasl:
        mechanism: PLAIN
        jaas:
          config: org.apache.kafka.common.security.plain.PlainLoginModule   required username={userName}   password={passWord};

{userName} 和 {passWord} 需要替换为从 AWS 密钥管理器获取的值。 这些是我到目前为止所做的。

第 1 步:使用以下 maven 依赖项

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-secretsmanager</artifactId>
</dependency>

第二步:创建一个配置类并创建一个带有@Bean注解的方法来初始化一个AWSSecretsManager客户端对象。我们可以通过AWSSecretsManager对象获取一些键值对。

// Create a Secrets Manager client
AWSSecretsManager client  = AWSSecretsManagerClientBuilder.standard()
        .withRegion(region)
        .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secretKey)))
        .build();

我有以下问题要问:

  1. 我们如何注入从秘密管理器获得的值并替换 application.yml 文件中的占位符?
  2. 要访问 AWSSecretsManager,我们需要传递 AWS accessKey 和 seretKey。 提供这两个值的好做法是什么?

更多信息:

我们的应用程序将在 AWS ECS 上运行

我在这里的回答将集中在您问题的 Secrets Manager API 部分

我建议您从AWS SDK for Java V1迁移到AWS SDK for Java V2 您可以在此处找到 V2 Java Secret Manager 示例。

https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/secretsmanager

这是 V2 的服务客户端。

 SecretsManagerClient secretsClient = SecretsManagerClient.builder()
                .region(region)
                .credentialsProvider(ProfileCredentialsProvider.create())
                .build();

在此示例中,我使用从 .aws/Credentials 读取凭据的 ProfileCredentialsProvider。 您可以在AWS Java V2 DEV Guide中了解有关 V2 如何处理凭据的更多信息。

使用凭据

您不能在部署到容器的应用程序中使用ProfileCredentialsProvider ,因为此文件结构不是容器的一部分。 因此您可以使用 Amazon ECS 容器凭证:

开发工具包使用 ContainerCredentialsProvider 类从 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 系统环境变量加载凭证。

请参阅上述文档中的第 5 点。

我根本不建议通过 Java 代码执行此操作。 我将完全删除aws-java-sdk-secretsmanager依赖项,并使用ECS 支持将 SecretsManager 值作为环境变量注入

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM