我正在尝试将 hashcorp vault 集成到 grails 应用程序中。我无法在互联网上找到教程或一些帮助。甚至 grails 文档也没有对此主题发表任何评论。
有谁知道我怎么能做到这一点?
我正在使用 grails 2.5.6
编辑
通过集成,我的意思是让 grails 从 hashcorp vault 中读取属性,而不是我在 Config.groovy 或 DataSource.groovy 中定义的属性或类路径中的其他属性。我定义了一个自定义占位符,它能够到达我的 hashcorp 保险库,但 grails 无法识别我带来的属性。
MyPlaceholderConfigurer.java
public class MyPlaceholderConfigurer extends GrailsPlaceholderConfigurer {
final static Logger logger = Logger.getLogger(MyPlaceholderConfigurer.class);
public MyPlaceholderConfigurer(GrailsApplication application) {
super(application);
logger.info("XXXXXXXXX: Started MyPlaceholderConfigurer");
}
@Override
protected void loadProperties(Properties props) throws IOException {
logger.info("XXXXXXXXX: loadProperties()");
super.loadProperties(props);
Map<String, Object> vault = HashicorpVault.getSecrets();
props.putAll(vault);
}
}
资源.groovy
propertySourcesPlaceholderConfigurer(MyPlaceholderConfigurer, application) {
environment = getUnrefreshedApplicationContext().getEnvironment()
}
配置文件
grails.config.locations = ["classpath:Principal.properties", "classpath:MyDatabase.groovy"]
最佳答案
groovy(或 grails-plugin)没有客户端库。
由于 groovy 与 java 配合得很好,你可以使用 java-client
库 ( https://www.vaultproject.io/api/libraries.html ) 您最可能想要的是 https://github.com/BetterCloud/vault-java-driver因为驱动程序的 Spring 版本可能与 grails 的 Spring 版本冲突。此外,非 Spring 版本针对 java 7+,因此您最终不会解决 java 8 new features
- 与 grails 2.5.x 捆绑的旧 groovy 版本不支持的问题
修改您的BuildConfig.groovy
获取图书馆:
dependencies {
...
compile 'com.bettercloud:vault-java-driver:3.1.0'
...
}
并按照 github 页面上的说明进行操作。
关于grails - 将 grails 与 hashcorp vault 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51776392/