Vault — хранилище для паролей и любых других секретных данных, которые нежелательно хранить где-то в файлах, репозиториях или иных легкодоступных вариантах. Данные хранятся в формате ключ-значение (Key-Value). Доступ к этим данным осуществляются с помощью API.
Приведу вырезку из docker-compose.yml файла, который вы можете использовать, чтобы попробовать это хранилище в действии. Это не dev-режим, где данные хранятся в памяти, а вполне себе production, где данные хранятся постоянно.
vault:_x000D_ build: ./docker/vault_x000D_ container_name: my_vault_x000D_ command: server_x000D_ -config=/vault/config/vault-config.json_x000D_ cap_add:_x000D_ - IPC_LOCK_x000D_ env_file:_x000D_ - ./.env_x000D_ depends_on:_x000D_ - prometheus_x000D_ ports:_x000D_ - ${VAULT_PORT}:8200_x000D_ volumes:_x000D_ - ./data/vault:/vault/file_x000D_ - ./logs/vault:/vault/logs_x000D_ networks:_x000D_ - ${NETWORK_NAME}_x000D_
В данном варианте у меня vault работает в связке с Prometheus’ом, куда пишутся метрики.
Файлы логов и хранилище лежат не во внутреннем volume, а в каталоге на хосте.
Переменные ${VAULT_PORT} и ${NETWORK_NAME} задаются в .env файле и выглядят так:
VAULT_PORT=8200_x000D_VAULT_ADDR=http://127.0.0.1:8200_x000D_NETWORK_NAME=project_web
Dockerfile, который лежит в каталоге ./docker/vault выглядит так:
ROM vault:1.3.1_x000D_LABEL Component="vault-server"_x000D__x000D_COPY vault-config.json /vault/config/vault-config.json_x000D_ENTRYPOINT ["vault"]_x000D__x000D_EXPOSE ${VAULT_PORT}
Содержимое конфига vault-config.json:
{_x000D_ "storage": {_x000D_ "file": {_x000D_ "path": "/vault/file"_x000D_ }_x000D_ },_x000D_ "listener": {_x000D_ "tcp":{_x000D_ "address": "0.0.0.0:8200",_x000D_ "tls_disable": 1_x000D_ }_x000D_ },_x000D_ "telemetry": {_x000D_ "prometheus": {_x000D_ "prometheus_retention_time": "30s",_x000D_ "disable_hostname": true_x000D_ }_x000D_ },_x000D_ "ui": true_x000D_}
После запуска docker-compose up -d, хранилище должно заработать. Но пользоваться им ещё нельзя.
Инициализируем оператора:
docker exec -it my_vault /bin/sh -c "vault operator init"
Команда отработает и выдаст результат:
Unseal Key 1: ключ 1_x000D_Unseal Key 2: ключ 2_x000D_Unseal Key 3: ключ 3_x000D_Unseal Key 4: ключ 4_x000D_Unseal Key 5: ключ 5_x000D__x000D_Initial Root Token: рутовый токен_x000D_
Значения ключей я вырезал, у вас они будут свои.
Далее выполняем следующие команды, подставляя значения ключей, выданных предыдущей командой:
docker exec -it my_vault /bin/sh -c "vault operator unseal <unseal key 1>"_x000D_docker exec -it my_vault /bin/sh -c "vault operator unseal <unseal key 2>"_x000D_docker exec -it my_vault /bin/sh -c "vault operator unseal <unseal key 3>"_x000D_
Логинимся под root’ом, указав вместо <root token> значение рутового токена, выданого командой operator init:
docker exec -it my_vault /bin/sh -c "vault login <root token>"
Активируем KV движок:
docker exec -it my_vault /bin/sh -c "vault secrets enable -version=1 -path=secret kv"_x000D_
Теперь мы можем писать:
vault kv put secret/foo bar=baz_x000D_
и читать данные из secret:
vault kv get --format=json secret/foo_x000D_
Хранилище готово к работе, теперь можно обращаться к нему по http и получать или сохранять секретные данные.
Более подробная документация по API Vault’а находится на сайте проекта — https://www.vaultproject.io/api/overview .
Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…
В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…
Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…
Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…
Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…
В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…