Конфигурация 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: значение пароля, зашифрованное с использованием алгоритма по умолчанию.