KV версия 1
Механизм секретов kv используется для хранения произвольных секретов в пределах хранилища Stronghold.
При записи ключа в kv старое значение заменяется.
Имена ключей всегда должны быть строками. Если вы записываете нестроковые значения напрямую через CLI, они будут преобразованы в строки. Однако вы можете сохранить нестроковые значения, записав пары ключ/значение из JSON-файла или используя HTTP API.
Этот механизм секретов учитывает различие между операциями create и update в ACL-политиках.
{% alert %}Пути и имена ключей не обфусцируются и не шифруются; шифруются только значения для ключей. Поэтому следует хранить конфиденциальную информацию как часть пути секрета.
Как включить
Чтобы включить хранилище kv версии 1 выполните команду:
d8 stronghold secrets enable -version=1 kv
Использование
Механизм секретов kv позволяет записывать ключи с произвольными значениями. Для этого потребуется токен с соответствующими правами
- Запись произвольных данных:
shell-session
$ d8 stronghold kv put kv/my-secret my-value=s3cr3t
Success! Data written to: kv/my-secret
- Чтение произвольных данных:
shell-session
$ d8 stronghold kv get kv/my-secret
Key Value
--- -----
my-value s3cr3t
- Получить список ключей:
```shell-session $ d8 stronghold kv list kv/ Keys
my-secret ```
- Удалить ключ:
shell-session
$ d8 stronghold kv delete kv/my-secret
Success! Data deleted (if it existed) at: kv/my-secret
Вы также можете использовать механизм [password policy] для генерации произвольных значений.
- Создать политику для паролей:
```shell-session $ 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:
shell-session
$ d8 stronghold kv put kv/my-generated-secret \
password=$(d8 stronghold read -field password sys/policies/password/example/generate)
- Прочитать сгенерированное значение секрета:
shell-session
$ 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
}