grails - 将 grails 与 hashcorp vault 集成

标签 grails hashicorp-vault

我正在尝试将 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/

相关文章:

Grails WebFlow DRY 分支逻辑

grails - 如何在一个 Controller 上运行集成测试?

grails - 如何在Tomcat上访问Grails应用程序

node.js - 使用 node-vault 访问 HashiCorp Vault KV key

hashicorp-vault - Hashicorp Vault 代理注入(inject)器 : base64 decoding secrets using '' agent-inject-command' annotation

ajax - Ajax和Grails渲染

grails - 如何在 GSP 中使用 openid4java 实现 openID

go - 导入 vault/builtin/credential/aws 将测试标志添加到命令行应用程序

amazon-web-services - 无法在 AWS 上设置 HashiCorp Vault

python - Hashicorp Vault AppRole : role-id and secret-id