Интеграция 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).
Любое другое предложение будет оценено по достоинству.