У самого Vault есть веб версия, где можно создавать, удалять или получать секреты. Также можно использовать одноименную утилиту vault на самом сервере.

Но вот вы дошли до того что решили использовать vault в скриптах. И что искать утилиты на github? Всё проще у vault есть api и в этой статье я рассмотрю некоторые из них, самые распространенные.

Для всех примеров я буду использовать curl, так как он стоит почти везде по умолчанию.

Vault Api - Авторизация и получение token

curl --request POST https://vault.example.lan/v1/auth/userpass/login/username --data '{"password": "dd43deqedd3we"}

Если всё правильно, то получаем вывод типа:

{"request_id":"96139453-389b-7581-686b-a1dee32381c6","lease_id":"","renewable":false,"lease_duration":0,"data":null,"wrap_info":null,"warnings":null,"auth":{"client_token":"s.dsfdsfsdfsdfew543","accessor":"dwwerewrwerew","policies":["default","user"],"token_policies":["default"],"identity_policies":["user"],"metadata":{"username":"user"},"lease_duration":2764800,"renewable":true,"entity_id":"861f20d9-a8f7-dabf-f081-321046ac74bd","token_type":"service","orphan":true}}
  • username - пользователь, под которым логинимся
  • client_token - токен, который используется далее для манипуляций с секретами

Vault Api - Получаем секреты

В header передаем наш token полученный выше.

curl -H "X-Vault-Token: s.dsfdsfsdfsdfew543" -X GET https://vault.example.lan/v1/kv/postgresql/192.168.0.1
  • https://vault.example.lan/v1/kv/postgresql/192.168.0.1 - путь к секрету

При выполнении команда выдаст весь список секретов по пути и если вдруг вам нужно вытащить определённое значение, то можно воспользоваться jq.

curl -H "X-Vault-Token: s.dsfdsfsdfsdfew543" -X GET https://vault.example.lan/v1/kv/postgresql/192.168.0.1 2>/dev/null | jq .data.my_key -r
my_value_only

Vault Api - Просмотр списка секретов

Если есть желание вывести список всех секретов по пути выполняем следующее.

curl -H "X-Vault-Token: s.dsfdsfsdfsdfew543" -X LIST https://vault.example.lan/v1/kv/postgresql/
{"request_id":"65d65a5e-699c-028a-0c13-b8094f0add19","lease_id":"","renewable":false,"lease_duration":0,"data":{"keys":["192.168.0.1"]},"wrap_info":null,"warnings":null,"auth":null}

Vault Api - Добавляем секреты

curl -H "X-Vault-Token: s.dsfdsfsdfsdfew543" -H "Content-Type: application/json" -X POST -d '{"value":"bar"}' https://vault.example.lan/v1/kv/postgresql/192.168.0.2
  • ’{“value”:”bar”}’ - значение секрета
  • https://vault.example.lan/v1/kv/postgresql/192.168.0.2 - путь к секрету

Vault Api - Удаляем секреты

curl -H "X-Vault-Token: s.dsfdsfsdfsdfew543" -X DELETE https://vault.example.lan/v1/kv/postgresql/192.168.0.2