将grails与hashicorp Vault集成

时间:2018-08-09 22:07:04

标签: grails hashicorp-vault

我正在尝试在grails应用程序上集成hashicorp保险库。我无法在互联网上找到教程或一些帮助。即使grails文档也没有对此主题发表任何评论。

有人知道我该怎么做吗?

我正在使用grails 2.5.6

修改

通过集成,我的意思是让grails从hashicorp Vault中读取属性,而不是我在Config.groovy或DataSource.groovy中定义的属性或在classpath中的其他属性。我定义了一个自定义占位符,它可以访问我的hashicorp保险库,但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); 
    } 
} 

resources.groovy

propertySourcesPlaceholderConfigurer(MyPlaceholderConfigurer, application) { 
    environment = getUnrefreshedApplicationContext().getEnvironment() 
}

Config.groovy

grails.config.locations = ["classpath:Principal.properties", "classpath:MyDatabase.groovy"] 

1 个答案:

答案 0 :(得分:0)

没有用于groovy(或grails-plugin)的客户端库。

由于groovy在Java上运行良好,因此您可以只使用java-client库(https://www.vaultproject.io/api/libraries.html),最可能需要的库是https://github.com/BetterCloud/vault-java-driver,因为该驱动程序的Spring版本可能与grails冲突。春季版。另外,非春季版本的目标对象是Java 7+,因此您不会最终解决java 8 new features-grails 2.5.x捆绑的旧groovy版本中不支持的问题。

修改您的BuildConfig.groovy以获取库:

dependencies {

    ...

    compile 'com.bettercloud:vault-java-driver:3.1.0'

    ...
}

并按照github页面上的说明进行操作。