vsh
— это интерактивная оболочка и интерфейс HashiCorp Vault. Он выполняет несколько общих операций и обрабатывает пути, такие как каталоги и файлы. Основные особенности:
cp
, rm
, mv
grep
(подстрока или регулярное выражение)replace
vsh -c "<cmd>"
)append
brew install vsh
nix-env -i vsh
Загрузите последние статические двоичные файлы со страницы выпуска.
Чтобы получить действительный токен, vsh
использует механизм TokenHelper хранилища. Это означает, что vsh
поддерживает установку токенов хранилища через ~/.vault-token
, VAULT_TOKEN
и внешний помощник токена.
Добавьте сертификат tls для сервера, задав для переменной среды VAULT_CACERT
путь к сертификату pem
.
vsh
требует разрешения на List
управляемых путей. Это необходимо, чтобы определить, указывает ли путь на узел или лист дерева путей. Далее необходимо собрать данные автозаполнения.
Команды, которые изменяют данные, такие как cp
или mv
, дополнительно требуют разрешений Read
и Write
для управляемых путей.
Чтобы надежно обнаружить все доступные серверные части, в идеале токен хранилища, используемый vsh
имеет разрешение List
для sys/mount
. Однако это не жесткое требование. Если токен не имеет разрешения List
на sys/mount
, то vsh
заранее не знает доступные серверные части. Это означает, что изначально на верхнем (серверном) уровне не будет автодополнения пути. В любом случае, vsh
постарается максимально надежно определить версию kv каждого введенного пути.
export VAULT_ADDR=http://localhost:8080
export VAULT_TOKEN=root
export VAULT_PATH=secret/ # VAULT_PATH is optional
./vsh
http://localhost:8080 /secret/>
Примечание: данный токен используется для автозаполнения, т.е. запросы List()
выполняются с использованием этого токена, даже если вы ничего не rm
или mv
. vsh
кэширует результаты List()
чтобы уменьшить количество запросов. Однако после выполнения каждой команды кэш очищается для точного завершения табуляции. Если ваш токен имеет ограниченное количество применений, рассмотрите возможность использования неинтерактивного режима или отключите автозаполнение, чтобы избежать запросов List()
.
Чтобы уменьшить количество запросов к хранилищу, вы можете отключить автозаполнение пути двумя способами:
./vsh --disable-auto-completion
./vsh
http://localhost:8080 /secret/> toggle-auto-completion
Use path auto-completion: false
http://localhost:8080 /secret/> toggle-auto-completion
Use path auto-completion: true
export VAULT_ADDR=<addr>
export VAULT_TOKEN=<token>
./vsh -c "rm secret/dir/to/remove/"
Работа над секретами хранилища может иметь решающее значение, поскольку качество и правильное поведение являются первоочередными задачами для vsh
. При этом vsh
по-прежнему остается небольшим проектом с открытым исходным кодом, а это означает, что мы не можем дать никаких гарантий. Однако мы уделяем большое внимание разработке через тестирование. Каждый PR тестируется с помощью обширного набора интеграционных тестов. Подавляющее большинство тестов выполняется на KV1 и KV2, и каждый тест выполняется на хранилищах 1.13.4
и 1.16.2
, т. е. промежуточные версии хранилища, вероятно, также будут совместимы.
vsh
осуществляется на ваш страх и риск. Мы не несем никакой ответственности и не даем никаких гарантий.
Пожертвования в любой форме всегда приветствуются! Без вклада сообщества vsh
не был бы тем инструментом, которым он является сегодня.
Требования:
golang
( >= v1.21
)docker
для интеграционного тестированияmake
для упрощенных команд make compile
make get-bats
make integration-tests
-v DEBUG
устанавливает уровень журнала отладки, который также создает файл vsh_trace.log
для регистрации любого объекта ошибки из API хранилища.