Команда d8 stronghold утилиты Deckhouse CLI — клиент Stronghold. Подкоманды и флаги совпадают с CLI HashiCorp Vault. Подробнее — в разделе «Совместимость с HashiCorp Vault».
При standalone-установке те же подкоманды доступны через исполняемый файл stronghold:
# Формат команды в Deckhouse Platform (DP).
d8 stronghold <COMMAND> [флаги] [аргументы]
# Формат команды в Linux.
stronghold <COMMAND> [флаги] [аргументы]Справку по любой подкоманде выводит флаг -help, например d8 stronghold kv put -help.
Подключение к серверу
Переменные окружения
| Переменная | Назначение | Пример |
|---|---|---|
STRONGHOLD_ADDR | Адрес сервера Stronghold | export STRONGHOLD_ADDR=https://stronghold.example.com |
STRONGHOLD_TOKEN | Токен, с которым выполняются запросы. Переопределяет токен, сохранённый командой login | export STRONGHOLD_TOKEN=<TOKEN> |
STRONGHOLD_CACERT | Путь к CA-сертификату для проверки TLS-сертификата сервера | export STRONGHOLD_CACERT=/opt/stronghold/tls/stronghold-ca.pem |
Клиент также читает переменные, которые задают параметры подключения. Перед запуском любая переменная STRONGHOLD_* копируется в одноимённую VAULT_*, поэтому все переменные ниже можно задавать с любым из двух префиксов. Если заданы обе, действует STRONGHOLD_*.
| Переменная | Назначение |
|---|---|
STRONGHOLD_NAMESPACE | Пространство имён, в котором выполняются команды (Stronghold EE) |
STRONGHOLD_CAPATH | Каталог с CA-сертификатами |
STRONGHOLD_CLIENT_CERT, STRONGHOLD_CLIENT_KEY | Клиентский сертификат и ключ для взаимного TLS |
STRONGHOLD_TLS_SERVER_NAME | Имя сервера для проверки TLS-сертификата (SNI) |
STRONGHOLD_SKIP_VERIFY | Отключить проверку TLS-сертификата сервера. Клиент в этом случае не обнаружит подмену сервера |
STRONGHOLD_CLIENT_TIMEOUT | Тайм-аут запросов клиента |
STRONGHOLD_MAX_RETRIES | Максимальное число повторов запроса при ошибках |
STRONGHOLD_WRAP_TTL | Время жизни для обёртывания ответа |
STRONGHOLD_MFA | Данные MFA для запроса |
STRONGHOLD_FORMAT | Формат вывода по умолчанию, например json |
Адрес сервера Stronghold в DP можно получить из объекта Ingress:
export STRONGHOLD_ADDR=https://$(d8 k -n d8-stronghold get ing stronghold -o json | jq -r '.spec.rules[0].host')Общие флаги
| Флаг | Назначение |
|---|---|
-address=<URL> | Адрес сервера. Переопределяет STRONGHOLD_ADDR, например для обращения к secondary-кластеру |
-namespace=<PATH> | Пространство имён, в котором выполняется команда (Stronghold EE) |
-format=<FORMAT> | Формат вывода, например json |
-field=<FIELD> | Вывести только значение указанного поля ответа (для read, write, kv get и других) |
-help | Справка по команде |
Флаги подключения к серверу:
| Флаг | Назначение |
|---|---|
-ca-cert=<PATH> | Файл с CA-сертификатом для проверки сертификата сервера. Имеет приоритет над -ca-path |
-ca-path=<PATH> | Каталог с CA-сертификатами |
-tls-skip-verify | Отключить проверку TLS-сертификата сервера. Клиент в этом случае не обнаружит подмену сервера |
-output-curl-string | Не выполнять запрос, а вывести эквивалентную команду curl |
Сервер и состояние
| Команда | Назначение | Подробнее |
|---|---|---|
server -config=<FILE> | Запустить сервер Stronghold с указанным конфигурационным файлом (standalone). В DP сервером управляет модуль stronghold | Установка, настройка |
status | Показать состояние сервера: инициализация, Sealed, тип seal, режим HA, индексы Raft | Настройка доступа |
version | Показать версию и редакцию Stronghold | — |
monitor -log-level=<LEVEL> | Вывести журналы узла в реальном времени | Журналы |
d8 stronghold statusoperator
Команды обслуживания кластера. Требуют привилегированного токена или ключей распечатывания.
| Команда | Назначение | Ключевые флаги | Подробнее |
|---|---|---|---|
operator init | Инициализировать хранилище и получить доли ключа и root-токен. В DP выполняется модулем автоматически | -key-shares, -key-threshold | Установка |
operator unseal | Ввести долю ключа распечатывания. Выполните столько раз, сколько задано -key-threshold | — | Seal и unseal |
operator seal | Запечатать узел | — | Seal и unseal |
operator rekey | Сменить ключи распечатывания или восстановления | -init, -nonce, -verify | Seal и unseal |
operator generate-root | Сгенерировать новый root-токен по кворуму ключей | -init, -nonce, -decode, -otp | Токены |
operator step-down | Заставить активный узел HA уступить роль | — | Переключение с EE на CSE |
operator raft list-peers | Показать узлы Raft и их роли | — | Восстановление кворума Raft |
operator raft join | Присоединить узел к кластеру Raft | -non-voter | Настройка |
operator raft autopilot state | Показать состояние автопилота Raft | — | Мониторинг |
operator raft snapshot save <FILE> | Сохранить снимок Raft-хранилища | — | Создание снимка |
operator raft snapshot restore <FILE> | Восстановить хранилище из снимка | -force | Восстановление |
operator raft snapshot inspect <FILE> | Проверить содержимое и консистентность снимка | -validate, -depth, -filter, -format | Проверка снимка |
Команда operator seal запечатывает сервер, а operator rotate выполняет ротацию ключа шифрования хранилища. Подробнее — в разделе «Управление ключами».
d8 stronghold operator raft snapshot save stronghold-$(date +%F_%H-%M).snapАутентификация
| Команда | Назначение | Ключевые флаги | Подробнее |
|---|---|---|---|
login | Войти в Stronghold и сохранить токен | -method, -path, -no-print | Настройка доступа |
auth enable <TYPE> | Включить метод аутентификации | -path | Методы аутентификации |
auth list | Показать включённые методы аутентификации | -format | Методы аутентификации |
auth tune <PATH> | Изменить параметры метода аутентификации | например, -user-lockout-disable | userpass |
d8 stronghold login -method=oidc -path=oidc_deckhouse -no-printtoken
| Команда | Назначение | Ключевые флаги | Подробнее |
|---|---|---|---|
token create | Создать токен | -policy, -period, -orphan, -no-default-policy, -namespace | Токены |
token renew [<TOKEN>] | Продлить срок действия токена | — | Токены |
token revoke <TOKEN> | Отозвать токен и его дочерние токены | -accessor | Токены |
d8 stronghold token create -policy=myapp-read -period=24hpolicy
| Команда | Назначение | Подробнее |
|---|---|---|
policy write <NAME> <FILE> | Создать или обновить ACL-политику. Вместо файла можно передать - и прочитать политику из stdin | Политики |
d8 stronghold policy write myapp-read - <<'POLICY'
path "secret/data/myapp/*" {
capabilities = ["read"]
}
POLICYsecrets
| Команда | Назначение | Ключевые флаги | Подробнее |
|---|---|---|---|
secrets enable <TYPE> | Подключить механизм секретов | -path, -version (для kv) | Механизмы секретов |
secrets list | Показать подключённые механизмы секретов | -format | Механизмы секретов |
secrets tune <PATH> | Изменить параметры mount | -max-lease-ttl | PKI |
secrets disable <PATH> | Отключить механизм секретов и удалить его данные | — | Механизмы секретов |
d8 stronghold secrets enable -path=secret -version=2 kvkv
| Команда | Назначение | Ключевые флаги | Подробнее |
|---|---|---|---|
kv put <PATH> <KEY>=<VALUE> | Записать секрет | -mount | KV2 |
kv get <PATH> | Прочитать секрет | -mount, -version, -field | KV2 |
kv patch <PATH> <KEY>=<VALUE> | Частично обновить секрет | -mount | KV2 |
kv list <PATH> | Показать ключи по пути | -mount | KV |
kv delete <PATH> | Удалить последнюю версию секрета (KV2 — с возможностью восстановления) | -mount, -versions | KV2 |
kv undelete <PATH> | Восстановить удалённые версии | -mount, -versions | KV2 |
kv destroy <PATH> | Безвозвратно удалить версии | -mount, -versions | KV2 |
kv metadata get|put|patch|delete <PATH> | Работа с метаданными секрета KV2 | -mount, -custom-metadata | KV2 |
kv enable-versioning <PATH> | Перевести хранилище KV1 на KV2 | — | KV2 |
d8 stronghold kv put -mount=secret myapp/db password=s3cr3t
d8 stronghold kv get -mount=secret -field=password myapp/dbУниверсальные команды
Работают с любым путём API: механизмами секретов, методами аутентификации и системным бэкендом sys/.
| Команда | Назначение | Ключевые флаги |
|---|---|---|
read <PATH> | Прочитать данные | -field, -format, -address |
write <PATH> [<KEY>=<VALUE>...] | Записать данные или выполнить операцию | -f/-force (запрос без данных), -field |
list <PATH> | Показать ключи по пути | -format |
delete <PATH> | Удалить данные по пути | — |
path-help <PATH> | Показать справку по путям механизма | — |
d8 stronghold write -f transit/keys/orders/rotate
d8 stronghold read -address="${SECONDARY_ADDR}" sys/replication/dr/status
d8 stronghold path-help pkilease
| Команда | Назначение | Ключевые флаги | Подробнее |
|---|---|---|---|
lease renew <LEASE_ID> | Продлить аренду | -increment | Аренды |
lease revoke <LEASE_ID> | Отозвать аренду | -prefix | Аренды |
d8 stronghold lease revoke -prefix database/creds/myapp/audit
Аудит доступен во всех редакциях Stronghold.
| Команда | Назначение | Подробнее |
|---|---|---|
audit enable <TYPE> [параметры] | Включить аудит-устройство file, syslog или socket | Аудит |
audit list | Показать включённые аудит-устройства | Аудит |
audit disable <PATH> | Отключить аудит-устройство | Аудит |
d8 stronghold audit enable file file_path=/var/log/stronghold_audit.lognamespace
Пространства имён доступны в Stronghold EE.
| Команда | Назначение | Ключевые флаги | Подробнее |
|---|---|---|---|
namespace create <NAME> | Создать пространство имён | -namespace (родительское) | Пространства имён |
namespace list | Показать дочерние пространства имён | -namespace | Пространства имён |
namespace lookup <NAME> | Показать сведения о пространстве имён | -namespace | Пространства имён |
namespace delete <NAME> | Удалить пространство имён | -namespace | Пространства имён |
namespace lock [<PATH>] | Заблокировать Namespace API | — | Пространства имён |
namespace unlock [<PATH>] | Разблокировать Namespace API | -unlock-key | Пространства имён |
d8 stronghold namespace create team-aplugin
| Команда | Назначение | Ключевые флаги | Подробнее |
|---|---|---|---|
plugin register <TYPE> <NAME> | Зарегистрировать внешний плагин в каталоге | -sha256, -version | Плагины в Standalone, плагины в DP |
plugin deregister <TYPE> <NAME> | Удалить плагин из каталога | — | Плагины |
d8 stronghold plugin register -sha256="${PLUGIN_SHA}" secret my-custom-plugin