Конфигурация blitz-keeper#
Конфигурация запуска#
Для конфигурации запуска используется файл параметров загрузки /etc/blitz-keeper/boot.conf:
Параметры:
app-home.root-dir: путь к директории с конфигурационным файлом сервисаblitz-keeper.master-key: мастер-ключ для шифрования/дешифрования секретов.Совет
Необязательное значение при использовании незашифрованного файла конфигурации в dev-режиме.
node-name: опциональное название ноды для аудита. Может использоваться для переопределения системногоhostnameили когда системныйhostnameневозможно определить.
{
"app-home": {
"root-dir": "/opt/docker/conf/blitz-keeper"
},
"master-key": "master-key",
"node-name": "blitz-keeper-main"
}
Конфигурация сервиса#
Конфигурация сервиса описывается в файле root-dit/blitz-keeper.conf, где root-dir - это значение настройки app-home.root-dir из конфигурации запуска /etc/blitz-keeper/boot.conf.
{
"handlers": {
"debug": {
"type": "debug",
"name": "DEBUG"
}
},
"services" : {
"my-service" : {
"display-name" : "Тест",
"host" : "localhost",
"locations" : {
"/foo" : {
"reverse-proxy": {
"proxy-pass": "https://protected-host.com/redirect/foo",
"proxy-headers": [
{
"name": "X-Extra-Header",
"value": "Add-Me"
},
{
"name": "X-Redundant-Header"
}
]
},
"type": "debug",
"name": "DEBUG",
"methods": ["get"]
},
"/bar" : {
"reverse-proxy": {
"proxy-pass": "https://protected-host.com"
},
"handler": "debug",
"methods": ["get"]
}
}
}
},
"proxy": {
"net-interface": "0.0.0.0",
"port": 8080,
"max-request-buffer-size-in-bytes": 0,
"global-request-context": {
"foo": "bar"
},
"request-id-header-name": "X-Request-Id",
"max-redirects": 3,
"extra-allowed-headers": ["X-Custom-Header"]
},
"clients": {
"blitz-idp": {
"uri": "http://localhost/blitz",
"client-id": "client-id",
"client-secret": {
"value": "client-secret",
"__enc_alg": "default"
},
"required-scopes": "blitz_api_sys_users blitz_api_sys_groups blitz_rights_full_access blitz_token_introspect",
"refresh-before-expiration": 10,
"retry": {
"max-retries": 5,
"base-delay": "50 millis",
"max-delay": "1 second"
},
"cache": {
"capacity": 1000,
"record-ttl-in-secs": 60
}
}
},
"audit": {
"settings": {
},
"jdbc" : {
"conn-url" : "jdbc:postgresql://PG_HOSTNAME:5432/PG_DB_NAME?user=PG_USERNAME&password=${pswd}&tcpKeepAlive=true&loggerLevel=DEBUG",
"keyAlias" : "jdbc",
"db-name" : "<db-name>",
"enc-params" : {
"pswd" :{
"value": "PG_PASSWORD",
"__enc_alg": "default"
}
},
"pool" : {
"max-total-conn" : 20,
"max-idle-conn" : 5,
"min-idle-conn" : 1,
"max-wait-conn-in-millis" : 30000
}
}
}
}
Секции/параметры:
handlers: описание общих настроек обработчиков запросов. Подробнее о доступных обработчиках и их настройке см. в Обработчики запросов."handlers": { "debug": { "type": "debug", "name": "DEBUG" } }
services: список сервисов, доступ к которым осуществляется черезblitz-keeper."services" : { "my-service" : { "display-name" : "Тест", "host" : "localhost", "locations" : { "/foo" : { "reverse-proxy": { "proxy-pass": "https://protected-host.com/redirect/foo", "proxy-headers": [ { "name": "X-Extra-Header", "value": "Add-Me" }, { "name": "X-Redundant-Header" } ] }, "type": "debug", "name": "DEBUG", "methods": ["get"] }, "/bar" : { "reverse-proxy": { "proxy-pass": "https://protected-host.com" }, "handler": "debug", "methods": ["get"] } } } }
my-service: настройки конкретного сервиса.host: адрес сервиса.locations: настройки обработки запросов к сервису в зависимости от конкретного URL./foo,/bar: относительный URL-запроса. Может включать плейсхолдеры*(один элемент пути) или**(произвольное число элементов в конце пути).reverse-proxy: настройки проксирования - см. Reverse Proxy.proxy-headers: опциональная секция с заголовками.
methods: HTTP-методы, для которых будет обрабатываться запрос.type,name: описание обработчика запроса через полную конфигурацию.handler: обработчик запроса из секцииhandlers.
proxy: базовые настройки проксирования."proxy": { "net-interface": "0.0.0.0", "port": 8080, "max-request-buffer-size-in-bytes": 0, "global-request-context": { "foo": "bar" }, "request-id-header-name": "X-Request-Id", "max-redirects": 3, "extra-allowed-headers": ["X-Custom-Header"] }
net-interface: сетевой интерфейс, который будет слушать Reverse Proxy. По умолчанию0.0.0.0.port: сетевой порт, который будет слушать Reverse Proxy. По умолчанию8080.max-request-buffer-size-in-bytes: максимальный размер тела запроса в байтах. Если размер тела запроса превышает заданное значение,blitz-keeperвернет ошибку. При значении0или меньше0допускаются только запросы без тела. Значение по умолчанию:2097152(2 Мб).global-request-context: опциональный глобальный контекст обработчиков запросов в формате ключ-значение. По умолчанию пустой. Все указанные значения будут доступны в контексте обработчиков запросов - подробнее см. Контекст обработчиков.request-id-header-name: опциональное имя заголовка, который будет добавляться в выходной запрос с уникальнымidзапроса. Если опция не задана, заголовок сidзапроса добавляться не будет.max-redirects: максимальное количество перенаправлений, которое выполнит прокси. По умолчанию3.extra-allowed-headers: опциональный список дополнительных разрешенных заголовков. Подробнее см. Удаление заголовков из запросов.
clients: настройки специфического подключения клиентов к внешним сервисам.Внимание
Данная секция и вложенные настройки являются опциональными, но должны быть заполнены при использовании зависящих от клиентов обработчиков, иначе
blitz-keeperвернет ошибку при запуске.{ "clients": { "blitz-idp": { "uri": "http://localhost/blitz", "client-id": "client-id", "client-secret": { "value": "client-secret", "__enc_alg": "default" }, "required-scopes": "blitz_api_sys_users blitz_api_sys_groups blitz_rights_full_access blitz_token_introspect", "refresh-before-expiration": 10, "retry": { "max-retries": 5, "base-delay": "50 millis", "max-delay": "1 second" }, "cache": { "capacity": 1000, "record-ttl-in-secs": 60 } } } }
blitz-idp: пример настройки клиентаblitz-idp.client-secret: секретное поле, требует шифрования для запуска в режиме PROD.required-scopes: список разрешений, необходимых для системного режима доступа в Blitz Identity Provider изblitz-keeper.refresh-before-expiration: системный токен будет обновляться за указанное число секунд до истечения своего срока действия.cache: опциональные настройки кэширования ответов от Blitz Identity Provider. По умолчанию кэширование выключено.capacity: размер кэша для каждого вида запроса.Примечание
Всего клиент использует 5 видов запросов. Соответственно максимальное количество записей в кэше равно пятикратному значению
capacity.record-ttl-in-secs: время жизни записи в кэше.
audit: настройки аудита.{ "audit": { "settings": {}, "jdbc": { "conn-url": "jdbc:postgresql://PG_HOSTNAME:5432/PG_DB_NAME?user=PG_USERNAME&password=${pswd}&tcpKeepAlive=true&loggerLevel=DEBUG", "keyAlias": "jdbc", "db-name": "<db-name>", "enc-params": { "pswd": { "value": "PG_PASSWORD", "__enc_alg": "default" } }, "pool": { "max-total-conn": 20, "max-idle-conn": 5, "min-idle-conn": 1, "max-wait-conn-in-millis": 30000 } } } }
settings: настройки аудита - подробнее см. Передача событий безопасности в файл или БД.jdbc: опциональные настройки подключения к БД аудита.Внимание
Требуются только при использовании приемника
audit-store.enc-params: секция зашифрованных параметров, которые будут подставлены вconn-url.pswd: значение пароля, зашифрованное с использованием алгоритма по умолчанию.