Файл конфигурации Hashicorp Vault с секретным путем по умолчанию (v1) - PullRequest
2 голосов
/ 17 апреля 2020

Я работаю с 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 образ, чтобы выполнить sh это?

1 Ответ

1 голос
/ 17 апреля 2020

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

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

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

...