Механизм секретов kv
используется для хранения произвольных секретов в пределах хранилища Stronghold.
При записи ключа в kv
старое значение заменяется.
Имена ключей всегда должны быть строками. Если вы записываете нестроковые значения напрямую через CLI, они будут преобразованы в строки. Однако вы можете сохранить нестроковые значения, записав пары ключ/значение из JSON-файла или используя HTTP API.
Этот механизм секретов учитывает различие между операциями create
и update
в ACL-политиках.
Пути и имена ключей не обфусцируются и не шифруются; шифруются только значения для ключей. Поэтому следует хранить конфиденциальную информацию как часть пути секрета.
Как включить
Чтобы включить хранилище kv версии 1 выполните команду:
d8 stronghold secrets enable -version=1 kv
Использование
Механизм секретов kv
позволяет записывать ключи с произвольными значениями. Для этого потребуется токен с соответствующими правами
-
Запись произвольных данных:
$ d8 stronghold kv put kv/my-secret my-value=s3cr3t Success! Data written to: kv/my-secret
-
Чтение произвольных данных:
$ d8 stronghold kv get kv/my-secret Key Value --- ----- my-value s3cr3t
-
Получить список ключей:
$ d8 stronghold kv list kv/ Keys ---- my-secret
-
Удалить ключ:
$ d8 stronghold kv delete kv/my-secret Success! Data deleted (if it existed) at: kv/my-secret
Вы также можете использовать механизм [password policy] для генерации произвольных значений.
-
Создать политику для паролей:
$ d8 stronghold write sys/policies/password/example policy=-<<EOF length=20 rule "charset" { charset = "abcdefghij0123456789" min-chars = 1 } rule "charset" { charset = "!@#$%^&*STUVWXYZ" min-chars = 1 } EOF
-
Сгенерировать пароль используя политику
example
:$ d8 stronghold kv put kv/my-generated-secret \ password=$(d8 stronghold read -field password sys/policies/password/example/generate)
-
Прочитать сгенерированное значение секрета:
$ d8 stronghold kv get kv/my-generated-secret ====== Data ====== Key Value --- ----- password ^dajd609Xf8Zhac$dW24
Время жизни ключей (TTL)
В отличие от других механизмов секретов, механизм секретов KV не применяет TTL для истечения срока действия. Вместо этого lease_duration
является информацией для пользователя, как часто нужно проверять новое значение.
Если ключ имеет значение ttl
, механизм секретов KV будет использовать это значение
в качестве продолжительности аренды:
Если ключ имеет значение ttl
, движок будет использовать это значение в качестве продолжительности аренды:
$ d8 stronghold kv put kv/my-secret ttl=5s my-value=s3cr3t
Success! Data written to: kv/my-secret
Даже при установленном ttl
движок secrets никогда не удаляет данные самостоятельно. Ключ ttl
носит лишь рекомендательный характер.
При чтении значения с ttl
, как ключ ttl
, так и интервал обновления будут отражать это значение:
$ d8 stronghold kv get kv/my-secret
Key Value
--- -----
my-value s3cr3t
ttl 5s
curl -X 'GET' \
'https://stronghold.example.com/v1/kv/my-secret' \
-H 'X-Vault-Token: ***'
{
"request_id": "3879d849-cb78-725a-c2eb-3ba9dfe8a1d3",
"lease_id": "",
"renewable": false,
"lease_duration": 5,
"data": {
"my-value": "s3cr3t",
"ttl": "5s"
},
"wrap_info": null,
"warnings": null,
"auth": null
}