将 HashiCorp Vault 中的值注入 JEE 应用程序(WAR 文件)

问题描述 投票:0回答:1

我们有一个基于旧的 Weblogic 的基础设施,里面有经典的 JEE 应用程序。使用 Atlassian Bamboo 作为 CD/CI 部署管道将应用程序部署为 WAR 文件。

有多个阶段 - DEV、TEST、PROD 等。我们有一个 HashiCorp Vault 服务器,其中存储所有阶段因变量。我们无法在运行时使用 Vault Server,因为它的可用性还不高。

我想从部署管道内的 Vault 服务器加载所有变量,并将它们注入到 WAR 文件中,然后再上传到 WebLogic。这些值必须在部署期间静态注入一次,不需要动态更新。

在应用程序内部,使用 application.yaml 中的 ${value} 表示法引用值(这通常发生在 Spring 和 Spring-Boot 应用程序中)。例如:

configuration:
    azure.app.client_id: ${AZURE_APP_CLIENT_ID:1234567890}

使用从 HashiCorp Vault 加载的实际值替换所有占位符的最佳方法是什么?

jakarta-ee deployment properties devops hashicorp-vault
1个回答
0
投票

您将需要在运行时访问机密并将它们作为应用程序运行时的环境变量注入。所以我假设您可以从 Bamboo 管道访问您的 Vault。

您可以在应用程序可以访问它的路径中编写一个文件 .env 并将文件名添加到您的 spring 配置中作为外部配置,只要提供变量名称,它将加载并注入到所有正确的位置与属性文件名匹配。您必须根据应用程序运行的环境加载正确的文件。 但有时,如果您有秘密(您很可能会这样做),那么这不是最安全的选择,因为文件存在并且任何有权访问应用程序运行时的人都可以访问。

第二个选项是使用类似 -

的方法从管道中导出变量

export AZURE_APP_CLIENT_ID="123123123"

基于您的环境,这意味着在您的管道中构建更特定于环境的逻辑,并且可部署的 WAR 保持独立于环境。

听起来很简单,YMMV 取决于您的 CI/CD 设置。

© www.soinside.com 2019 - 2024. All rights reserved.