gpt4 book ai didi

spring-boot - Spring Vault Hashicorp 和 Cyber​​ark 集成

转载 作者:行者123 更新时间:2023-12-04 12:01:04 30 4
gpt4 key购买 nike

我正在尝试使用 Spring Vault 提供集中式服务,该服务为我们的微服务生态系统提供存储和检索凭证信息的功能。然而,我们的组织目前使用 Cyber​​-ark 来集中凭证,所以我正在寻找的是构建一个基于 Spring Vault 的抽象服务,并为 Harshicorp Vault 使用 Cyber​​-arkas 存储引擎。

最佳答案

您可以将 Conjur(Cyber​​Ark 开源和企业)保险库与 Spring Boot 一起使用。但是,您必须使用此处提到的 java Api:

https://www.conjur.org/blog/loading-your-database-credentials-at-runtime-with-conjur/

1- 您必须从 gitHub 下载 conjur java-api。 (构建它并在您的 Spring Boot 应用程序中用作依赖项)

<!-- CONJUR CYBERARK -->
<dependency>
<groupId>net.conjur.api</groupId>
<artifactId>conjur-api</artifactId>
<version>2.2.1</version>
</dependency>
<!-- CONJUR CYBERARK -->

2- 确保您已配置 conjur 服务器和 cli。 https://www.conjur.org/get-started/quick-start/oss-environment/

3-将 conjur 属性添加为环境变量:
CONJUR_ACCOUNT=demo
CONJUR_AUTHN_LOGIN=host/demo-app
CONJUR_AUTHN_API_KEY=smzqbc31zk7gh2svfv8h3cvzy9a2059c399366jgk651343de79z6
CONJUR_APPLIANCE_URL=http://cyberark_conjur_1/api

注意:完成步骤 2 中相关的 conjur 配置后,您将获得上述所有变量。

4- 在您的 Spring Boot 应用程序中,您可以使用 conjur 获取数据库凭据,而不是在 application.properties/yml 中将其硬编码为:
@Value("${CONJUR_AUTHN_LOGIN}")
private String conjurHostId;
@Value("${CONJUR_AUTHN_API_KEY}")
private String conjurAPIKey;
@Value("${spring.datasource.url}")
private String datasourceUrl;
@Value("${spring.datasource.driver-class-name}")
private String datasourceDriverClass;

@Bean
public DataSource dataSource() {
Conjur conjur = new Conjur(conjurHostId, conjurAPIKey);
String datasourceUsername =
conjur.variables().retrieveSecret("db/username");
String datasourcePassword =
conjur.variables().retrieveSecret("db/password");

DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setUsername(datasourceUsername);
dataSource.setPassword(datasourcePassword);
dataSource.setUrl(datasourceUrl);
dataSource.setDriverClassName(datasourceDriverClass);

return dataSource;
}

毕竟你可以运行你的 spring boot 应用程序,它会使用 conjur 进行身份验证并获取 DB 的用户名 + 密码。

如果您在 conjur 服务器中保存了其他 secret ,那么您可以通过以下方式访问它们:
public Optional<String> findSecret(final String secretKey) {

try {
Conjur conjur = new Conjur();
String secretFound = conjur.variables().retrieveSecret(secretKey);
return Optional.ofNullable(secretFound);
} catch (Exception e) {
e.printStackTrace();
throw new IllegalArgumentException(e.getMessage());
}
}

我无法将 Cyber​​Ark 与 Spring Cloud Vault 一起使用。使用 Spring cloud Vault,您可以更好地抽象 vault,但不幸的是,仅支持 Hashicorp vault(AFAIK)。

任何其他建议将不胜感激。

关于spring-boot - Spring Vault Hashicorp 和 Cyber​​ark 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52108099/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com