Управление Keystore через API
API позволяет получать информацию о ключах внутри keystore, добавлять, обновлять и удалять их.
Секреты сохраненных подключений хранилищ записываются в ключи sme.core.system_connections.password.<имя> или sme.core.system_connections.api_key.<имя>. Проверяйте результат записи на узлах: успешный HTTP-код сам по себе не подтверждает, что ключ обновлен на всех узлах.
Если для keystore задан пароль, передайте его в теле запроса. Например:
GET _core/keystore
{
"keystore_password": "MyP@ssw0rd"
}
Чтобы выполнить запрос только на выбранных узлах, используйте параметр nodeid.
В значении можно указать имя сервера, IP-адрес или атрибут. Поддерживаются шаблоны wildcard (подробнее).
Примеры:
Добавить пароль uba.sme.pass всем узлам, имена которых начинаются на smos-m:
POST _core/keystore/uba.sme.pass?nodeid=smos-m*
{
"value" : "UbaPASS"
}
Добавить пароль plugins.security.ssl.transport.external_truststore_password всем узлам с ролью data:
POST _core/keystore/plugins.security.ssl.transport.external_truststore_password?nodeid=data:true
{
"value" : "ExternalTruststorePASS"
}
Добавить ключ можно также через консоль:
curl -XPOST -k -u admin "https://127.0.0.1:9200/_core/keystore/plugins.security.ssl.transport.external_truststore_password?nodeid=data:true" -H "Content-Type: application/json" -d '{"value" : "ExternalTruststorePASS"}'
Добавить пароль jobscheduler.email.pass всем узлам с ролью data:
POST _core/keystore/jobscheduler.email.pass?nodeid=routing_mode:hot
{
"value" : "JobSchedulerPASS"
}
Операции
Для взаимодействия с ключами внутри keystore, необходимо выдать разрешения кластера. Название разрешения указано в каждой операции.
Получение списка ключей
Запрос возвращает информацию о размещении ключей на серверах.
Пример:
GET _core/keystore
Разрешение:
cluster:admin/sm/keystore/list
Пример ответа:
{
"HIPMpNAmSuC7JUpBm1T33w": [
"jobscheduler.email.pass",
"keystore.seed",
"uba.sme.pass"
],
"Pd779Sf9RrSYiLrpA4wyxA": ["keystore.seed", "uba.sme.pass"]
}
Добавление ключа
Запрос позволяет добавить новый ключ.
Доступны названия ключей, которые определены внутри SM Data Storage или в модулях системы Smart Monitor. При добавлении сторонних будет выведена ошибка.
Значение ключа необходимо передать в теле запроса, используя поле value.
Пример:
POST _core/keystore/jobscheduler.email.pass?nodeid=172.16.0.3*
{
"value" : "emailPass"
}
Разрешение:
cluster:admin/sm/keystore/add
Обновление ключа
Запрос позволяет обновить существующий ключ. Передайте новое значение в теле запроса в поле value, как и при добавлении ключа.
Разрешение:
cluster:admin/sm/keystore/update
Удаление ключа
Запрос позволяет удалить существующий ключ.
Пример:
DELETE _core/keystore/uba.sme.pass
Разрешение:
cluster:admin/sm/keystore/delete