Файл конфигурации Hashicorp Vault с секретным путем по умолчанию (v1)

Я работаю с 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

Когда я вручную создаю свой секретный движок через пользовательский интерфейс (и явно устанавливаю его на 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, который по умолчанию ничего не содержит. Читая документацию по конфигурации сервера, я не вижу способа указать конфигурацию по умолчанию для секретов.

Я хотел бы добавить файл конфигурации, эмулирующий эту команду:

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

Возможно ли это с помощью параметра конфигурации, или мне просто нужно создать свой собственный образ Docker для этого?


person el n00b    schedule 16.04.2020    source источник


Ответы (1)


Это невозможно сделать с помощью файла конфигурации - включение механизма выполняется на работающем сервере, а файл конфигурации настраивает только базовое поведение сервера - интерфейс для прослушивания, где хранятся данные и т. Д. Вещи, которые имеют смысл при запуске .

Между тем, сервер не может получить доступ к хранилищу при запуске, потому что он запечатан (в вашем случае он работает в режиме разработки, поэтому фактически запускается незапечатанным, но это не общий случай, для которого Vault предназначен).

Вам нужно будет добавить этот вызов самостоятельно, либо в настроенный образ Docker (это не должно быть слишком сложно), либо как часть сценария, который завершает ваш вызов docker-compose.

person lxop    schedule 17.04.2020
comment
Да, я пытался по возможности избегать настраиваемого образа Docker и делать это более идиоматично для Vault. Я даже не подумал об аспекте SEALED, который имеет полный смысл. Спасибо. - person el n00b; 17.04.2020