Хранилище секретов
Общие сведения о Хранилище секретов
Termidesk Connect позволяет получать секреты из хранилищ на базе OpenBao или HashiCorp Vault.
Хранилище секретов представляет собой сервер со специализированным ПО, предназначенным для безопасного хранения чувствительной информации: ключей шифрования, логинов, паролей, токенов, сертификатов и т. д.
Termidesk Connect предоставляет возможность настройки параметров подключения к Хранилищу секретов, например к OpenBao, Hashicorp Vault или другому.
Настройка подключения к Хранилищу секретов выполняется одним из способов:
-
из интерфейса командной строки Termidesk Connect (см. подраздел Настройка подключения к Хранилищу секретов из CLI);
-
из веб-интерфейса Termidesk Connect (см. подраздел Настройка подключения к Хранилищу секретов из WUI).
Настройка подключения к Хранилищу секретов осуществляется через объект openbao (см. подраздел Объект openbao).
Termidesk Connect поддерживает следующие типы Хранилищ секретов:
-
kv– статическое хранилище. Возвращает значение, соответствующее указанному ключу. Используется для хранения статических паролей, API-ключей, токенов и конфигурационных файлов; -
ad– AD/LDAP. Позволяет создавать временные учетные записи. Используется для управления динамическими учетными данными (LDAP) и данными аутентификации (AD); -
pki– PKI. Используется генерации TLS/SSL-сертификатов по запросу. Каждый успешный запрос на выдачу или подпись создает новый уникальный сертификат с собственным закрытым ключом. Ранее выданные сертификаты продолжают действовать до истечения их времени жизни.
Для получения данных из Хранилищ секретов используется специально сформированный URL в следующем формате:
<тип>://<путь>[?<параметры>]#<секрет>
где:
-
<тип>– тип Хранилища секретов (kv,adилиpki); -
<путь>– путь к секрету; -
<параметры>– опциональные параметры запроса; -
<секрет>– имя запрашиваемого секрета.
Примеры формирования URL
Пример 1. Получение секрета из Хранилища секретов kv версии 1.
Если секрет создан командами:
secrets enable -version=1 -path=legacy kv
vault kv put legacy/snmp username="snm-user" auth_key="authkey" priv_key="privkey"
Выполнить HTTP-запрос для чтения секрета:
curl -H "X-Vault-Token: root-token" http://192.0.2.1:8200/v1/legacy/snmp
Ответ в формате JSON:
{
"request_id": "780cb833-32b7-2dfa-1699-51027d56b542",
"data": {
"auth_key": "snmp-authkey",
"priv_key": "snm-privkey",
"username": "snm-user2"
}
}
Правила формирования URL на основе запроса:
-
определить схему:
kv://; -
извлечь путь из URL HTTP-запроса
http://192.0.2.1:8200/v1/legacy/snmp, исключив базовую частьhttp://192.0.2.1:8200/v1/:legacy/snmp; -
добавить к схеме
kv://полученный путьlegacy/snmp:kv://legacy/snmp; -
указать имя требуемого ключа через символ
#:-
для ключа
username:kv://legacy/snmp#username; -
для ключа
auth_key:kv://legacy/snmp#auth_key; -
для ключа
priv_key:kv://legacy/snmp#priv_key.
-
Пример 2. Получение секрета из Хранилища секретов kv версии 2.
Если секрет создан командой:
vault kv put secret/snmp username="snm-user" auth_key="authkey" priv_key="privkey"
Выполнить HTTP-запрос для чтения секрета:
curl -H "X-Vault-Token: root-token" http://192.0.2.1:8200/v1/secret/data/snmp
Ответ:
{
"request_id": "780cb833-32b7-2dfa-1699-51027d56b542",
"data": {
"data": {
"auth_key": "snmp-authkey",
"priv_key": "snm-privkey",
"username": "snm-user2"
}
}
}
Правила формирования URL на основе запроса:
Правила аналогичны kv версии 1, отличие только в пути.
|
-
определить схему:
kv://; -
извлечь путь из URL HTTP-запроса
http://192.0.2.1:8200/v1/secret/data/snmp, исключив базовую частьhttp://192.0.2.1:8200/v1/:secret/data/snmp; -
добавить к схеме
kv://полученный путьsecret/data/snmp:kv://secret/data/snmp; -
указать имя требуемого ключа через символ
#:-
для ключа
username:kv://secret/data/snmp#username; -
для ключа
auth_key:kv://secret/data/snmp#auth_key; -
для ключа
priv_key:kv://secret/data/snmp#priv_key.
-
Пример 3. Получение сертификатов из Хранилища секретов pki.
Если PKI и роль настроены через команды:
# Включение PKI
vault secrets enable pki
# Создание роли для выпуска сертификатов
vault secrets enable pki
vault write pki/roles/example-dot-com \
allowed_domains="example.com" \
allow_subdomains=true \
allow_bare_domains=true \
max_ttl=72h
Выполнить HTTP-запрос для генерации сертификата:
|
В теле HTTP-запроса передаются параметры сертификата в формате |
curl -H "X-Vault-Token: token" \
-d '{"common_name": "app.example.com", "ttl": "24h"}' \
http://192.0.2.1:8200/v1/pki/issue/example-dot-com
Ответ:
{
"request_id": "e86ed1f5-f7bb-1f6a-a864-6a5540c92191",
"lease_id": "",
"renewable": false,
"lease_duration": 0,
"data": {
"certificate": "-----BEGIN CERTIFICATE....",
"issuing_ca": "-----BEGIN CERTIFICATE-----...",
"private_key": "-----BEGIN RSA PRIVATE KEY-----..."
},
"wrap_info": null,
"warnings": null,
"auth": null,
"mount_type": "pki"
}
Правила формирования URL на основе запроса:
-
определить схему:
pki://; -
извлечь путь из URL HTTP-запроса
http://192.0.2.1:8200/v1/pki/issue/example-dot-com, исключив базовую частьhttp://192.0.2.1:8200/v1/:pki/issue/example-dot-com; -
добавить к схеме
pki://полученный путьpki/issue/example-dot-com:kv://secret/data/snmp; -
добавить параметры из тела запроса после символа
?:pki://pki/issue/example-dot-com?common_name="app.example.com"&ttl="24h";Из
JSON-формата{"common_name": "app.example.com", "ttl": "24h"}формируется строка параметров:common_name="app.example.com"&ttl="24h". -
указать конкретный сертификат или ключ для получения через символ
#:-
для сертификата:
pki://pki/issue/example-dot-com?common_name="app.example.com"&ttl="24h"#certificate -
для закрытого ключа:
pki://pki/issue/example-dot-com?common_name="app.example.com"&ttl="24h"#private_key -
для сертификата УЦ:
pki://pki/issue/example-dot-com?common_name="app.example.com"&ttl="24h"#issuing_ca
-
Настройка подключения к Хранилищу секретов из CLI
Для настройки Хранилища секретов используются команды:
-
указание URL-адреса для Хранилища секретов:
set openbao url <URL-адрес>
Пример значения параметра: http://192.0.2.10:8200
|
-
указание VRF для подключения к Хранилищу секретов (по умолчанию –
default):
set openbao vrf <имя_VRF>
-
задание максимально допустимого времени (в секундах) ожидания ответа HTTP-запроса от API-сервера (по умолчанию –
60):
set openbao request-timeout <значение>
-
задание интервала (в секундах) повторной отправки HTTP-запроса при возникновении ошибки (по умолчанию –
10):
set openbao retry-interval <значение>
-
задание интервала (в секундах) обновления токена авторизации (по умолчанию –
3600):
set openbao renew-token-interval <значение>
-
задание интервала (в секундах) обновления секретов (по умолчанию –
1800):
set openbao renew-secret-interval <значение>
| Termidesk Connect с заданной периодичностью будет отправлять запросы в Хранилище секретов для получения новых значений секретов. |
-
задание интервала (в секундах) обновления сертификатов (по умолчанию –
86400):
set openbao renew-cert-interval <значение>
| Termidesk Connect с заданной периодичностью будет отправлять запросы в Хранилище секретов для получения новых значений сертификатов. |
-
(опционально) указание пространства имен (Namespace), заданного в Хранилище секретов:
set openbao ns <значение>
-
настройка параметров аутентификации Termidesk Connect в Хранилище секретов:
-
указание пути к методу аутентификации (auth method) в Хранилище секретов:
set openbao auth mount <значение> -
задание идентификатора роли (RoleID) для метода аутентификации AppRole:
set openbao auth approle <значение> -
указание пути к файлу, содержащему идентификатор секрета (SecretID) или токен для его раскрытия (unwrapping):
set openbao auth secret-file <значение> -
указание флага использования упакованного токена (wrapped-token) для идентификатора секрета (SecretID) (по умолчанию –
true):set openbao auth wrapping-token <true/false>Возможные значения:
-
true– содержимое файла будет предварительно раскрыто (unwrapped) для получения действительного идентификатора секрета (SecretID); -
false– содержимое файла будет упаковано (wrapped) для получения действительного идентификатора секрета (SecretID).
-
-
-
(опционально) настройка параметров SSL-подключения к Хранилищу конфигурации:
-
задание файла сертификата УЦ (указывается полный путь и имя файла с расширением):
set openbao ssl ca-cert <имя_файла>Пример значения параметра: /dev/shm/server.cert. -
задание файла сертификата (указывается полный путь и имя файла с расширением):
set openbao ssl cert <имя_файла> -
задание файла ключа (указывается полный путь и имя файла с расширением):
set openbao ssl key <имя_файла>
-
-
применение заданных настроек:
commit
-
сохранение настроек:
write
Настройка подключения к Хранилищу секретов из WUI
Для отображения настроек подключения к Хранилищу секретов следует перейти «Настройки – Безопасность – Хранилище секретов».
Для настройки подключения к Хранилищу секретов следует активировать «Хранилище секретов» и заполнить данные, перечисленные в столбце «Параметр» следующей таблицы (см. таблицу Основные параметры настройки подключения к Хранилищу секретов).
| Параметр | Описание |
|---|---|
Общие настройки |
|
«URL» |
URL-адрес Хранилища секретов. Пример значения параметра: «\http://192.0.2.10:8200» |
«VRF» |
Имя VRF для подключения к Хранилищу секретов. Значение по умолчанию: «default» |
«Время ожидания ответа HTTP-запроса, с» |
Максимально допустимое время (в секундах) ожидания ответа HTTP-запроса от API-сервера. Значение по умолчанию: «60» |
«Интервал повторной отправки HTTP-запроса, с» |
Интервал (в секундах) повторной отправки HTTP-запроса при возникновении ошибки. Значение по умолчанию: «10» |
«Интервал обновления токена авторизации, с» |
Интервал (в секундах) обновления токена авторизации. Значение по умолчанию: «3600» |
«Интервал обновления секретов, с» |
Интервал (в секундах) обновления секретов. Termidesk Connect с заданной периодичностью будет отправлять запросы в Хранилище секретов для получения новых значений секретов. Значение по умолчанию: «1800» |
«Интервал обновления сертификатов, с» |
Интервал (в секундах) обновления сертификатов. Termidesk Connect с заданной периодичностью будет отправлять запросы в Хранилище секретов для получения новых сертификатов. Значение по умолчанию: «86400» |
«Пространство имён в Vault Enterprise» |
Пространство имен (Namespace), заданное в Хранилище секретов |
Секция «Проверка токена» |
|
«Путь к методу аутентификации в OpenBao» |
Путь к методу аутентификации (auth method) в Хранилище секретов |
«Идентификатор роли для метода аутентификации AppRole» |
Идентификатор роли (RoleID) для метода аутентификации AppRole |
«Полный путь к файлу с Secret ID или токеном для unwrapping» |
Путь к файлу, содержащему идентификатор секрета (SecretID) или токен для его раскрытия (unwrapping) |
«Wrapping Token» |
Настройка использования упакованного токена (wrapped-token) для идентификатора секрета (SecretID). При активации параметра содержимое файла будет предварительно раскрыто (unwrapped) для получения действительного идентификатора секрета (SecretID). При отключении параметра содержимое файла будет упаковано (wrapped) для получения действительного идентификатора секрета (SecretID) |
Секция «SSL/TLS соединение» |
|
«Полный путь к файлу ключа» |
Полный путь к файлу сертификата УЦ (указывается полный путь и имя файла с расширением) |
«Полный путь к файлу сертификата» |
Полный путь к файлу сертификата (указывается полный путь и имя файла с расширением) |
«Полный путь к файлу сертификата УЦ» |
Полный путь к файлу ключа (указывается полный путь и имя файла с расширением) |
Для применения параметров следует нажать экранную кнопку [Применить].
Объект openbao
Доступные команды объекта openbao приведены в таблице (см. таблицу Доступные команды объекта openbao).
| Команда | Описание |
|---|---|
|
Настройка параметров аутентификации Termidesk Connect в Хранилище секретов, параметром может быть:
|
|
Пространство имен (Namespace), заданное в Хранилище секретов |
|
Интервал (в секундах) обновления сертификатов (по умолчанию – |
|
Интервал (в секундах) обновления секретов (по умолчанию – |
|
Интервал (в секундах) обновления токена авторизации (по умолчанию – |
|
Максимально допустимое время (в секундах) ожидания ответа HTTP-запроса от API-сервера (по умолчанию – |
|
Интервал (в секундах) повторной отправки HTTP-запроса при возникновении ошибки (по умолчанию – |
|
Настройка параметров SSL-подключения к Хранилищу конфигурации, параметром может быть:
|
|
URL-адрес Хранилища секретов. Пример значения параметра: |
|
Имя VRF для подключения к Хранилищу секретов (по умолчанию – |