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

Indeed Log Server

Системные требования

Indeed Log Server (Log Server) — это веб-приложение, работающее на базе HTTP-сервера Kestrel. Данный модуль отвечает за централизованный сбор и аудит событий системы. События записываются в базы данных.

Настройка Log Server с разным типом хранилища данных​

Важно

В этом разделе описаны параметры конфигурационных файлов для каждого типа хранилища. Не изменяйте значения без необходимости. Неправильная конфигурация может привести к неработоспособности компонента.

Чтобы зашифровать или расшифровать чувствительные данные в конфигурационных файлах, используйте утилиту protector.sh. Подробнее — в разделе Шифрование конфигурационных файлов.

Доступные типы хранилища данных:

  • базы данных Microsoft SQL или PostgreSQL
  • хранилище в Syslog
  • резервное хранилище
Microsoft SQL

Microsoft SQL​

Конфигурационный файл am/ls/targets/DbTarget_0.config (название по умолчанию)​

Пример ConnectionString в DbTarget_0.config
    <?xml version="1.0" encoding="utf-8"?>
<Settings>
<ConnectionString>Data Source=192.168.1.22,57974;Initial Catalog=IndeedAM9log;User ID=IndeedAMservice;Password=Q12345qq;TrustServerCertificate=true;</ConnectionString>
</Settings>
Параметры строки ConnectionStringОписание
Data SourceDNS/IP-адрес сервера с базой данных
Initial CatalogИмя базы данных
User IDИмя пользователя, который имеет полные права для базы данных
PasswordПароль пользователя
TrustServerCertificateДоверие серверному сертификату. Значение True — подключение Microsoft SQL к серверу

Порт подключения в строке ConnectionString не прописан, но задан по умолчанию — 1433.

Конфигурационный файл сервера am/ls/clientApps.config​

Пример блока Application в clientApps.config
 <Application Id="ea" SchemaId="eaSchema">
<ReadTargetId>DbTarget_0</ReadTargetId>
<WriteTargets>
<TargetId>DbTarget_0</TargetId>
</WriteTargets>
<AccessControl>
<CertificateAccessControl CertificateThumbprint="01de449b6f4b49e00d1a5b20ffb5d6605cf6cd2a" Rights="Write" />
</AccessControl>
</Application>
Параметры Application Id="ea" SchemaId="eaSchema"Описание
ReadTargetIdИдентификатор хранилища, откуда будет осуществляться чтение событий. Значение DbTarget_0 — это название конфигурационного файла в каталоге am/ls/targets.
WriteTargets:
TargetId
Идентификатор хранилища, куда будет осуществляться запись событий. Значение DbTarget_0 — это название конфигурационного файла в каталоге am/ls/targets.

Идентификаторы заданы в теге Targets, конфигурационные файлы для каждого типа находятся в каталоге am/ls/targets/ с соответствующим именем.
CertificateAccessControl:
CertificateThumbprint
Отпечаток клиентского сертификата Core Server. Указывается при использовании собственного клиентского сертификата.

Настройка дополнительного хранилища (секция Targets)​

При необходимости использовать дополнительное хранилище данных откройте конфигурационный файл сервера am/ls/clientApps.config и раскомментируйте необходимые значения в секции Targets.

Пример секции Targets в clientApps.config
<Targets>
<!-- <Target Id="DbTarget_0" Type="pgsql" /> -->
<Target Id="DbTarget_0" Type="mssql" />
<!-- <Target Id="DbTargetSqlIndeedKey" Type="pgsql" /> -->
<!-- <Target Id="DbTargetMssqlIndeedKey" Type="mssql" /> -->
<Target Id="TargetSyslog" Type="syslog" />
</Targets>
PostgreSQL

PostgreSQL​

Конфигурационный файл am/ls/targets/DbTarget_0.config (название по умолчанию)​

Пример DbTarget_0.config
<?xml version="1.0" encoding="utf-8"?>
<Settings>
<ConnectionString>server=192.168.80.30;port=5432;user id=amservice;password=Q1w2e3r4;database=am_deb_db;SSL Mode=Require;Server Compatibility Mode=Redshift</ConnectionString>
<Options>
<Option Name="EnableShortStringEqualsSearch" Value="True" />
</Options>
</Settings>
Параметры строки ConnectionStringОписание
ServerDNS/IP-адрес сервера с базой данных PostgreSQL
DatabaseИмя базы данных
User IDИмя пользователя, который имеет полные права для базы данных
PasswordПароль пользователя
SSL ModeРежим подключения с использованием SSL.

Если после добавления параметра возникает ошибка 08P01: unsupported startup parameter: ssl_renegotiation_limit, добавьте параметр Server Compatibility Mode=Redshift
Параметры блока OptionsОписание
EnableShortStringEqualsSearchУскоряет поиск в больших базах данных. По умолчанию настройка включена — значение True

Конфигурационный файл сервера am/ls/clientApps.config​

Пример блока Application в clientApps.config
 <Application Id="ea" SchemaId="eaSchema">
<ReadTargetId>DbTarget_0</ReadTargetId>
<WriteTargets>
<TargetId>DbTarget_0</TargetId>
</WriteTargets>
<AccessControl>
<CertificateAccessControl CertificateThumbprint="01de449b6f4b49e00d1a5b20ffb5d6605cf6cd2a" Rights="Write" />
</AccessControl>
</Application>
Параметры Application Id="ea" SchemaId="eaSchema"Описание
ReadTargetIdИдентификатор хранилища, откуда будет осуществляться чтение событий. Значение DbTarget_0 — это название конфигурационного файла в каталоге am/ls/targets.
WriteTargets:
TargetId
Идентификатор хранилища, куда будет осуществляться запись событий. Значение DbTarget_0 — это название конфигурационного файла в каталоге am/ls/targets.

Идентификаторы заданы в теге Targets, конфигурационные файлы для каждого типа находятся в каталоге am/ls/targets/ с соответствующим именем.
CertificateAccessControl:
CertificateThumbprint
Отпечаток клиентского сертификата Core Server. Указывается при использовании собственного клиентского сертификата.

Настройка дополнительного хранилища (секция Targets)​

При необходимости использовать дополнительное хранилище данных откройте конфигурационный файл сервера am/ls/clientApps.config и раскомментируйте необходимые значения в секции Targets.

Пример секции Targets в clientApps.config
<Targets>
<Target Id="DbTarget_0" Type="pgsql" />
<!-- <Target Id="DbTarget_0" Type="mssql" /> -->
<!-- <Target Id="DbTargetSqlIndeedKey" Type="pgsql" /> -->
<!-- <Target Id="DbTargetMssqlIndeedKey" Type="mssql" /> -->
<Target Id="TargetSyslog" Type="syslog" />
</Targets>
Хранилище в Syslog

Хранилище в Syslog​

Log Server поддерживает формат syslog. Вы можете использовать любой сервер, работающий с этим форматом (например, Syslog Watcher).

Пример настройки Syslog Watcher описан в разделе Настройка окружения.

Конфигурационный файл am/ls/TargetSyslog_0.config (название по умолчанию)​

Пример ConnectionString в TargetSyslog_0.config
<Settings HostName="localhost" Port="514" Protocol="UDP" Format="Plain" />
Параметры строки ConnectionStringОписание
HostNameИмя или IP-адрес Syslog-сервера
PortПорт Syslog-сервера. Значение по умолчанию — 514
ProtocolТип подключения к Syslog-серверу: UDP, TCP, TCPoverTLS
FormatОпциональный параметр. Определяет формат логов: Plain (по умолчанию), CEF, LEEF
SyslogVersionОпциональный параметр. Спецификация протокола: RFC3164, RFC5424

Конфигурационный файл сервера am/ls/clientApps.config​

Пример блока Application в clientApps.config
<Application Id="ea" SchemaId="eaSchema">
<ReadTargetId> </ReadTargetId>
<WriteTargets>
<TargetId>TargetSyslog_0</TargetId>
</WriteTargets>
<AccessControl>
<CertificateAccessControl CertificateThumbprint="001122...AA11" Rights="Read" />
</AccessControl>
</Application>
Параметры блока Application Id="ea"Описание
ReadTargetIdИдентификатор хранилища для чтения событий. Пустое значение — чтение выполняется сторонней программой (например, Syslog Watcher).
WriteTargets:
TargetId
Идентификатор хранилища для записи событий. Значение TargetSyslog_0 — это название конфигурационного файла.

Идентификаторы заданы в теге Targets, конфигурационные файлы для каждого типа находятся в каталоге am/ls/targets/ с соответствующим именем.
CertificateAccessControl:
CertificateThumbprint
Отпечаток клиентского сертификата Core Server. Указывается при использовании собственного клиентского сертификата.
Резервное хранилище

Резервное хранилище​

Log Server поддерживает одновременную запись событий в основное и резервное хранилище. Чтение событий осуществляется только из основного хранилища (DbTarget_0.config). Запись происходит одновременно в основное (DbTarget_0.config) и резервное (DbTarget_1.config).

Конфигурационный файл сервера am/ls/clientApps.config​

В секции Targets содержатся идентификаторы всех хранилищ. Для резервного хранилища добавляется тег Target с произвольным Id (например, DbTarget_1).

Пример секции Targets в clientApps.config
<Targets>
<Target Id="DbTarget_0" Type="pgsql"/>
<Target Id="DbTarget_1" Type="pgsql"/>
<Target Id="TargetSyslog_0" Type="syslog"/>
</Targets>

В блоке Application Id="ea" указываются идентификаторы основного и резервного хранилища.

Пример блока Application в clientApps.config
<Application Id="ea" SchemaId="eaSchema">
<ReadTargetId>DbTarget_0</ReadTargetId>
<WriteTargets>
<TargetId>DbTarget_0</TargetId>
<TargetId>DbTarget_1</TargetId>
</WriteTargets>
<AccessControl>
<CertificateAccessControl CertificateThumbprint="001122...AA11" Rights="Read" />
</AccessControl>
</Application>
Параметры блока Application Id="ea"Описание
ReadTargetIdИдентификатор хранилища для чтения событий. Содержит идентификатор основного хранилища (DbTarget_0).
WriteTargets:
TargetId
Идентификаторы хранилищ для записи событий. При использовании резервного хранилища содержит все идентификаторы: основное (DbTarget_0) и резервное (DbTarget_1).

Идентификаторы заданы в теге Targets, конфигурационные файлы для каждого типа находятся в каталоге am/ls/targets/ с соответствующим именем.
CertificateAccessControl:
CertificateThumbprint
Отпечаток клиентского сертификата Core Server. Указывается при использовании собственного клиентского сертификата.

Конфигурационный файл резервного хранилища am/ls/targets/DbTarget_1.config​

Для резервного хранилища создается конфигурационный файл в каталоге am/ls/targets/. Имя файла должно совпадать со значением Id из секции Targets. Формат файла аналогичен основному хранилищу DbTarget_0.config.

Пример DbTarget_1.config
<?xml version="1.0" encoding="utf-8"?>
<Settings>
<ConnectionString>Server=Server;Database=Name;User ID=User;Password=Password</ConnectionString>
</Settings>
Параметры строки ConnectionStringОписание
ServerDNS/IP-адрес сервера с резервной базой данных
DatabaseИмя резервной базы данных
User IDИмя пользователя, который имеет полные права для базы данных
PasswordПароль пользователя

Автоматическая очистка событий​

Очистка работает для хранилищ в базах данных Microsoft SQL и PostgreSQL.

Чтобы включить очистку событий и указать срок хранения данных, используйте мастер конфигурации — шаг Базы данных.

Остальные параметры очистки мастер добавляет в конфигурационный файл am/ls/clientApps.config со значениями по умолчанию после включения очистки.

Важно

Не изменяйте значения параметров без необходимости. Неправильная конфигурация может привести к неработоспособности компонента.

Log Server удаляет события частями. Количество событий, которые удаляются за раз, задает параметр BatchSize (по умолчанию 1000). Удаление повторяется, пока не будут удалены все события с истекшим сроком хранения. Весь цикл ограничен количеством удаленных событий (MaxDeletedRecords) и длительностью (MaxDuration, по умолчанию 1 час).

ПараметрФорматОписание
TargetIdstringЗаполняется мастером конфигурации. Идентификатор хранилища, в котором выполняется очистка. Обязательный параметр.
Возможные значения: идентификатор существующего хранилища.
RetentionPeriodTimeSpanЗаполняется мастером конфигурации. Срок хранения события с момента его создания (TimeCreated).

Значение не может быть ниже Cleanup:MinRetentionPeriod*. Если значение ниже, запись игнорируется, а в лог записывается предупреждение.

Значение по умолчанию: 90.00:00:00 (90 дней).
Возможные значения: от Cleanup:MinRetentionPeriod, без верхней границы.
EnabledbooleanЗаполняется мастером конфигурации. Включение периодической очистки для хранилища.

При значении false периодическая очистка не выполняется, но очистку по-прежнему можно запустить вручную через API.

Значение по умолчанию: true.
Schedulecron-выражениеРасписание запуска периодической очистки.

Значение по умолчанию: 0 0 * * * (раз в сутки в полночь UTC).
BatchSizeintegerКоличество событий, которые Log Server удаляет за один раз.

Значение по умолчанию: 1000.
Возможные значения: от 1 до 2 147 483 647.
DelayBetweenBatchesTimeSpanПауза перед удалением следующих событий в рамках одного запуска очистки. Например, значение 00:00:02 задает паузу в 2 секунды.

Значение по умолчанию: 00:00:00 (без паузы).
Возможные значения: от 00:00:00, без верхней границы.
MaxDeletedRecordsintegerМаксимальное количество событий, удаляемых за один запуск очистки.

Значение по умолчанию: не задано (без ограничения).
Возможные значения: от 1 до 2 147 483 647.
MaxRetryAttemptsintegerКоличество повторных попыток удаления при ошибке базы данных. Когда попытки заканчиваются, запуск очистки прерывается.

Значение по умолчанию: 5.
Возможные значения: от 0 до 2 147 483 647.
DelayBetweenRetryAttemptsTimeSpanПауза перед повторной попыткой удаления при ошибке базы данных.

Значение по умолчанию: 00:00:02 (2 секунды).
Возможные значения: от 00:00:00, без верхней границы.
MaxDurationTimeSpanМаксимальная суммарная длительность одного запуска очистки. Пустое значение — без ограничения.

Значение по умолчанию: 01:00:00 (1 час).
Возможные значения: больше 00:00:00, без верхней границы.

* Cleanup:MinRetentionPeriod — минимально допустимое значение RetentionPeriod. Ограничение действует и для параметров очистки, и для ручного запуска, чтобы не допустить удаления всех событий в случае ошибки в сроке хранения. Задается в секции Cleanup файла app-settings.json, значение по умолчанию — 1 сутки. Измененное значение применяется после перезапуска Log Server.

Ручной запуск очистки​

Очистку можно запустить вручную, не дожидаясь очередного запуска по расписанию. Значение параметра Enabled на ручной запуск не влияет, поэтому очистить можно и хранилище с выключенной периодической очисткой.

Ответ приходит сразу, до завершения очистки, и не содержит результат очистки. Количество удаленных событий или текст ошибки записываются в логе Log Server.

Для одного хранилища одновременно выполняется только один ручной запуск. Пока очистка не завершилась, повторный запрос отклоняется с кодом 409. Периодическая очистка при этом может выполняться параллельно с ручной.

POST api/Cleanup/Trigger
Объект запроса
{
"targetId": "sampleDb",
"retentionPeriod": "1.00:00:00",
"maxDuration": "02:00:00"
}

В объекте запроса:

  • targetId — обязательный параметр. Идентификатор хранилища, в котором выполняется очистка.
  • retentionPeriod, maxDeletedRecords, maxDuration, batchSize, delayBetweenBatches, maxRetryAttempts, delayBetweenRetryAttempts — необязательные параметры. Переопределяют одноименные параметры конфигурационного файла только для этого запуска. Значение retentionPeriod не может быть меньше Cleanup:MinRetentionPeriod.

Параметры, не указанные в запросе, берутся из конфигурационного файла.

Пример запроса
curl -X POST https://<log-server-host>/api/Cleanup/Trigger \
--cert client.crt --key client.key \
-H "Content-Type: application/json" \
-d '{"targetId": "sampleDb"}'
Объект ответа
{
"code": 0,
"errorMessage": ""
}

Возможные ошибки:

КодПричина
400Не указан targetId или тело запроса не является корректным JSON.

Значение retentionPeriod отрицательно или ниже Cleanup:MinRetentionPeriod.

Значения maxDeletedRecords, maxDuration или batchSize не положительны.

Значения delayBetweenBatches, maxRetryAttempts или delayBetweenRetryAttempts отрицательны.

Клиентский сертификат не авторизован для этого хранилища.
404Указан неизвестный targetId.
409Для этого хранилища уже выполняется ручная очистка. Дождитесь ее завершения и повторите запрос.

Настройка кеширования событий​

Если Log Server недоступен, события кешируются в локальный каталог am/ls/EventCash.

Информация о недоступности Log Server отображается в событиях Windows во вкладке Приложение.

  • Код события — 500.

  • Текст — Log server client fluentSchedulerBackgroundLoaderTask. Iteration WEB exception: Время ожидания операции истекло.

Чтобы изменить параметры хранения событий:

  1. Откройте конфигурационный файл app-settings.json серверного компонента (Core Server, Management Console, User Console).
  2. Внесите следующие изменения:
  • Чтобы задать путь к каталогу для хранения событий, измените значение параметра location в теге logServer. Значение по умолчанию — ./EventCache.

  • Чтобы изменить время отправки логов после возобновления работы LogServer, измените значение параметра FlushInterval в теге logServer. Значение по умолчанию — 10 минут.

    Не рекомендуется устанавливать значение для параметра EventCacheSendingIntervalSec менее 30 секунд.

Локализация​

В данный момент в схеме есть локализация событий ru-Ru и en-En. Когда с сервера поступает запрос на ru-Ru события, будут выбраны имеющиеся события с локализацией ru-Ru.

Если с сервера поступает запрос с неизвестной локализацией, то будут выбраны события с локализацией, заданной по умолчанию.

Чтобы настроить локализацию:

  1. Откройте конфигурационный файл am/ls/eaSchema.config.

  2. Измените значение параметра DefaultLanguage.

Пример локализации событий en-En
<Languages DefaultLanguage="en-En">
Пример локализации событий ru-RU
<Languages DefaultLanguage="ru-RU">
  1. Сохраните изменения.

Сбор логов​

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