首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Vault Harshicorp和Cyber-ark集成

Spring Vault Harshicorp和Cyber-ark集成
EN

Stack Overflow用户
提问于 2018-08-31 11:32:55
回答 1查看 1.8K关注 0票数 6

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

EN

回答 1

Stack Overflow用户

发布于 2020-06-16 18:50:28

您可以将Conjur (CyberArk开源和企业版) vault与Spring Boot一起使用。但是,您必须使用这里提到的java Api:

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

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

代码语言:javascript
复制
<!-- 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-添加共轭属性作为环境变量:

代码语言:javascript
复制
CONJUR_ACCOUNT=demo
CONJUR_AUTHN_LOGIN=host/demo-app
CONJUR_AUTHN_API_KEY=smzqbc31zk7gh2svfv8h3cvzy9a2059c399366jgk651343de79z6
CONJUR_APPLIANCE_URL=http://cyberark_conjur_1/api

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

4-在您的Spring Boot应用程序中,您可以使用conjur来获取DB凭据,而不是将其硬编码到您的应用程序中。credentials /yml如下:

代码语言:javascript
复制
@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服务器中,则可以通过以下方式访问它们:

代码语言:javascript
复制
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());
        }
    }

我不能在Spring Cloud Vault中使用CyberArk。使用Spring cloud Vault,您可以对vault进行更好的抽象,但不幸的是,只支持Hashicorp vault (AFAIK)。

任何其他的建议都将非常感谢。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52108099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档