具有默认秘密路径(v1)的Hashicorp Vault配置文件

时间:2020-04-16 22:28:37

标签: docker hashicorp-vault

我正在与Vault合作进行项目,并使用Go API

当前,API仅支持/v1路径,这很好。我的问题是,在开发配置中,我有一个docker-compose.yml文件,该文件使用以下简单配置进行设置:

version: '3.7'

services:
  my-vault:
    image: library/vault:1.4.0
    container_name: my-vault
    cap_add:
      - IPC_LOCK
    environment:
      VAULT_DEV_ROOT_TOKEN_ID: devroot
      VAULT_DEV_LISTEN_ADDRESS: 0.0.0.0:8200
    ports:
      - 8200:8200

当我通过UI手动创建我的秘密引擎(并将其显式设置为V1)时,我可以很好地使用我的代码。我只是设置数据,而Go库就像一个超级按钮:

client, err := vault.NewClient(vault.DefaultConfig())
if err != nil {
    panic(err)
}

myMapValues := map[string]interface{}{}
myMapValues["mykey"] = "someSecretValue"

_, err := client.Logical().Write("myV1SecretPath/hello", myMapValues)
if err != nil {
    panic(err)
}

在Docker容器中,我看到:

/ # ps aux | grep vault
    6 vault     0:07 vault server -config=/vault/config -dev-root-token-id=devroot -dev-listen-address=0.0.0.0:8200 -dev

我在那里看到配置位置设置为目录/vault/config,默认情况下,目录不包含任何内容。阅读Server Configuration documentation时,我看不到为秘密指定默认配置的方法。

我想添加一个模拟此命令的配置文件:

vault secrets enable -address=http://127.0.0.1:8200 -version=1 -path=myV1SecretPath kv

是否可以通过配置选项来做到这一点?或者我只需要构建自己的Docker映像即可完成此任务?

1 个答案:

答案 0 :(得分:1)

这不能用配置文件来完成-在正在运行的服务器上启用引擎,而配置文件仅配置服务器的基本行为-监听接口,数据存储位置等。启动。

同时,服务器由于处于密封状态而无法在启动时访问存储(在您的情况下,它以开发模式运行,因此实际上将以未密封的方式启动,但这不是Vault设计的一般情况)。

您将需要自己将此调用添加到自定义的Docker映像中(应该不太困难),或者作为包装docker-compose调用的脚本的一部分。