Перейти к основному содержимому
Версия: Indeed Access Manager 9.2

Indeed Key Server

Indeed Key Server (Key Server) — это сервер, необходимый для работы мобильного приложения Indeed Key. С помощью Key Server отправляются push-уведомления и устанавливается связь с Core Server.

Связь с мобильным приложением Indeed Key осуществляется по протоколу HTTP или HTTPS.

При использовании SSL-соединения необходим корневой сертификат и сертификат проверки подлинности веб-сервера. При создании сертификата для Key Server в Common Name укажите имя или IP сервера, к которому настроен доступ для приложения Indeed Key в теге ServerUrl конфигурационного файла сервера Key Server. Если в CN указан IP-адрес, то он должен быть без протокола и порта.

Для записи событий сервера необходима отдельная база данных PostgreSQL.

Создание базы данных и сервисной учетной записи

Key Server поддерживает работу с базой PostgreSQL.

Подробнее о создании базы данных и сервисной учетной записи вы можете узнать в разделе Хранилище данных.

Примечание

После создания базы данных (после первого запроса) можно уменьшить права для пользователя. Достаточно права db_owner для созданной базы данных.

Установка и настройка Indeed Key Server

Прежде чем перейти к установке и настройке Key Server, ознакомьтесь с системными требованиями.

Чтобы установить Key Server на сервере с операционной системой Linux, выполните следующие действия:

  1. Откройте файл am/.env и в переменной COMPOSE_PROFILES добавьте значение indeed-key-server.

  2. Откройте конфигурационный файл am/haproxy.docker-compose.yml и раскомментируйте следующие строки.

    • В блоке depends_on:

      indeed-key 
    • В блоке ports:

      "${INDEED_KEY_HTTPS_PORT}:7443" 
      "${INDEED_KEY_HTTPS_PORT_EXTERNAL}:8443"
  3. Откройте конфигурационный файл am/haproxy/haproxy.cfg и раскомментируйте следующие строки с параметром backend IK_Backend.

    •  default_backend IK_Backend
    • backend IK_Backend
      server docker indeed-key:5443 check inter 5000ms ssl verify required ca-file trusted_ca.crt
  4. Откройте конфигурационный файл am/indeed-key/app-settings.json и в разделе Server в параметре Url укажите URL-адрес для подключения к Key Server. 

    Для параметра {port} укажите значение переменной INDEED_KEY_HTTPS_PORT_EXTERNAL, заданное в файле am/.env.

    Пример
      "Server": {
    "Url": "http(s)://[Server address]:{port}",
    "Logon": {
    "Delay": "00:05:00"
    },
    Информация

    Key Server должен быть доступен с мобильного телефона.

  5. Запустите контейнер с приложением с помощью команды sudo docker-compose up -d.

Настройка событий сервера

Установка и настройка осуществляется на Log Server.

В качестве хранилища можно использовать все способы хранения, которые поддерживает Log Server.

Отслеживать события можно следующими способами: 

  • При хранении в базе данных — сторонними средствами мониторинга или с помощью SQL-запросов.
  • При использовании Syslog — сторонними средствами мониторинга с поддержкой Syslog. 
Важно!

В текущей версии Indeed AM просмотр событий Key Server с помощью Management Console не поддерживается.

Чтобы настроить события Key Server

  1. Откройте файл am/ls/clientApps.config и найдите строчку <Target Id="DbTargetSqlIndeedKey" Type="pgsql" />, где DbTargetSqlIndeedKey — это название конфигурационного файла в папке am/ls/targets.

  2. Откройте файл am/ls/targets/DbTargetSqlIndeedKey.config и в строке ConnectionString укажите следующие данные:

    • Server — DNS/IP-адрес сервера с базой данных PostgreSQL.
    • Database — имя базы данных.
    • Port — порт подключения.
    • User ID — имя пользователя, который имеет полные права для базы данных Database.
    • Password — пароль пользователя. 
    Пример
    <?xml version="1.0" encoding="utf-8"?>
    <Settings>
    <ConnectionString>server=[database host address];port=5432;user id=[database service account];password=[database service password];database=[log server]</ConnectionString>
    </Settings>
  3. Откройте конфигурационный файл сервера Log Server am/ls/clientApps.config.

  4. Раскомментируйте блок <Application Id="akc" SchemaId="akcSchema">.

    Пример
    <Application Id="akc" SchemaId="akcSchema">
    <ReadTargetId>DbTargetSqlIndeedKey</ReadTargetId>
    <WriteTargets>
    <TargetId>DbTargetSqlIndeedKey</TargetId>
    </WriteTargets>
    <AccessControl>
    <CertificateAccessControl CertificateThumbprint="01de449b6f4b49e00d1a5b20ffb5d6605cf6cd2a" Rights="Write" />
    </AccessControl>
    </Application>
    • В тегах ReadTargetId указывается идентификатор хранилища, откуда будет осуществляться чтение событий.
    • В блоке WriteTargets, в тегах TargetId, указывается идентификатор хранилища, куда будет осуществляться запись событий.
    • Идентификаторы заданы в теге Targets, конфигурационные файлы для каждого типа находятся в папке am/ls/targets/ с соответствующим именем.
    • При использовании собственного клиентского сертификата в CertificateThumbprint указывается отпечаток клиентского сертификата Core Server.
  5. При необходимости использовать дополнительное хранилище данных, укажите его в секции Targets:

    Пример
    <Targets>
    ...
    <Target Id="sqlTargetAM" Type="pgsql"/>
    </Targets>

Если в качестве хранилища событий вы используете базу данных, выполните настройку подключения к базе в файле am/ls/targets/DbTargetSqlIndeedKey.config

Важно!

Для событий Key Server необходимо использовать отдельную базу данных. 

Сервис очистки старых данных

В файле am/indeed-key/app-settings.json можно задать параметры сервиса очистки старых данных.

Пример
"CleanAkData": {
"Enabled": true,
"FirstRunTime": "00:00",
"Interval": "1.00:00:00",
"AkDataLifeTime": "1.00:00:00"
}

Описание атрибутов примера

Имя атрибутаОписаниеЗначениеЗначение по умолчаниюМинимально допустимое значение
EnabledФлаг включения сервисаtrue, falsetrueОтсутствует
FirstRunTimeВремя первого запуска сервисаСтрока в формате времени hh:mm00:00 (полночь)Отсутствует
IntervalИнтервал запуска сервисаВременной интервал1.00:00:00 (24 ч)00:10:00
AkDataLifeTimeВремя жизни данныхВременной интервал1.00:00:00 (24 ч)00:10:00

Включить/Отключить шифрование конфигурационного файла

  1. В терминале перейдите в каталог с утилитой для шифрования am/protection.

    cd /am/protection
  2. Выдайте права для запуска скрипта protector.sh.

    sudo chmod 500 protector.sh
  3. Чтобы зашифровать конфигурационные файлы, запустите скрипт protector.sh с параметром protect.

    sudo bash ./protector.sh protect
  4. Чтобы расшифровать конфигурационные файлы, запустите скрипт protector.sh с параметром unprotect.

    sudo bash ./protector.sh unprotect

Проверка состояния сервера

Для проверки рабочего состояния контейнера в Docker используйте метод Healthcheck:

http(s)://<dns_имя_сервера>:<порт>/healthcheck/isHealthy

На странице отображается следующая информация о состоянии компонента:

  • статус компонента Key Server, время обработки запроса к нему;
  • статус последнего запроса;
  • список ошибок при наличии.
Пример результата проверки
{
"Entries": {
"Storage": {
"Data": {
"HealthCheckStatus": {
"PreviousCheckSucceeded": true,
"CheckState": "Succeeded",
"CheckStartDate": "2025-03-17T11:07:55.9606294+00:00",
"CheckDuration": "00:00:00.0014040"
}
},
"Description": null,
"Duration": "00:00:00.0000052",
"Exception": null,
"Status": 2,
"Tags": []
}
},
"Status": 2,
"TotalDuration": "00:00:00.0003921"
}

Сбор логов

Информация по включению логирования и сбору логов компонента Key Server находится в разделе Сбор логов серверных компонентов.