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

Hashicorp Vault configuration file with default secret path (v1)

我正在与 Vault for my project and using the 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 映像即可实现?

配置文件无法做到这一点 - 启用引擎是在 运行 服务器上完成的,而配置文件仅配置基本的服务器行为 - 侦听接口、数据存储位置等. 启动时有意义的事情。

同时,服务器无法在启动时访问存储,因为它是密封的(在您的情况下,它是 运行 在开发模式下,因此实际上将以未密封的方式启动,但这不是一般情况保险柜专为)。

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