Интеграция Spring Vault Harshicorp и Cyber-ark

Я пытаюсь использовать Spring Vault для предоставления централизованного сервиса, который обеспечивает хранение и получение информации о полномочиях для нашей микросервисной экосистемы. Однако наша организация в настоящее время использует cyber-ark для централизации учетных данных, поэтому мне нужно создать сервис абстракции, основанный на Spring Vault, и использовать механизм хранения cyber-arkas для Harshicorp Vault.

Любой совет высоко ценится.

0 ответов

Вы можете использовать хранилище Conjur (CyberArk с открытым исходным кодом и Entreprise) с Spring Boot. Однако вы должны использовать java Api, как указано здесь:

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

1- Вы должны загрузить java-api фокус с gitHub. (Создайте его и используйте в качестве зависимости в своем весеннем загрузочном приложении)

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

2- Убедитесь, что вы настроили сервер фокуса и cli. https://www.conjur.org/get-started/quick-start/oss-environment/

3- Добавьте в качестве переменных среды свойства заклинания:

CONJUR_ACCOUNT=demo
CONJUR_AUTHN_LOGIN=host/demo-app
CONJUR_AUTHN_API_KEY=smzqbc31zk7gh2svfv8h3cvzy9a2059c399366jgk651343de79z6
CONJUR_APPLIANCE_URL=http://cyberark_conjur_1/api

Примечание: все перечисленные выше переменные вы получите после завершения конфигурации Concur, связанной с шагом 2.

4- В приложении Spring Boot вы можете получить учетные данные БД с помощью concur вместо того, чтобы жестко запрограммировать их в 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;
}

В конце концов, вы можете запустить приложение весенней загрузки, и оно будет аутентифицироваться с помощью конъюнктуры и получит имя пользователя + пароль для БД.

Если вы сохранили другие секреты на сервере фокусов, вы можете получить к ним доступ как:

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());
        }
    }

Я не могу использовать CyberArk с Spring Cloud Vault. С Spring Cloud Vault у вас есть лучшая абстракция хранилища, но, к сожалению, поддерживается только хранилище Hashicorp (AFAIK).

Любое другое предложение будет оценено по достоинству.

Другие вопросы по тегам