Руководство по установке#

В руководстве приведены инструкции по установке компонента Аудит (AUDT) продукта Platform V Audit SE (AUD).

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

Настройки безопасности окружения и перечень платформенных (дополнительных внешних) продуктов, используемых для установки, настройки и контроля в конечной информационной системе (далее — ИС), выбираются клиентом при разработке конечной ИС, исходя из характера обрабатываемой в ней информации и иных требований информационной безопасности (далее — ИБ), предъявляемых к ней.

Системное программное обеспечение#

Ниже представлены категории системного программного обеспечения (далее — ПО), которые обязательны или опциональны для установки, настройки, контроля и функционирования компонента. В каждой категории перечислены все поддерживаемые продукты сторонних правообладателей. Отдельно обозначены варианты, которые рекомендует АО «СберТех» (маркировка «Рекомендовано» в столбце «Продукт, функциональная совместимость с которым подтверждена»). Клиенту необходимо выбрать один из продуктов в каждой категории, исходя из условий использования конечной ИС.

Категория ПО

Обязательность установки*

Наименование ПО

Версия

Продукт, функциональная совместимость с которым подтверждена **

Назначение категории ПО

Операционная система

Да

ОС Альт 8 СП

8

Рекомендовано

ОС контейнеров для запуска модулей компонента

Операционная система

Да

ОС RedHat Enterprise Linux 7.7

8

Опционально

ОС контейнеров для запуска модулей компонента

Среда контейнеризации

Да

Kubernetes

1.21.8

Рекомендовано

Платформа контейнеризации для запуска компонентов сервиса

Среда контейнеризации

Да

RedHat OpenShift

4.7

Опционально

Платформа контейнеризации для запуска компонентов сервиса

Средство контейнеризации

Да

Docker CE

19.0.3.8

Рекомендовано

Инструмент для автоматизации работы с контейнерами

Инструмент сборки, тестирования, развертывания контейнеризованных приложений

Да

Jenkins

2.319.3

Рекомендовано

Сервер автоматизации, используемый для внедрения непрерывной интеграции и непрерывной доставки (CI/CD) для проектов программного обеспечения

Java-машина

Да

OpenJDK

8

Рекомендовано

Окружение для работы модулей компонента

Программное обеспечение для сбора и перемещения больших объемов потоковых данных

Да

Apache Flume

1.9.0

Рекомендовано

ETL-сервис, который должен использоваться при формировании некоторых контейнеров в Kubernetes.

Сервер приложений

Да

Nginx

1.20.1

Рекомендовано

Сервер для балансировки внешних и внутренних запросов между сервисами

Сервер приложений

Да

WildFly

15

Опционально

Сервер для запуска пользовательского интерфейса Platform V Audit SE (AUD)

Браузер

Да

Яндекс.Браузер

19.10.1+

Рекомендовано

Браузер для входа в UI

Браузер

Да

Internet Explorer (IE)

11+

Опционально

Браузер для входа в UI

Брокер сообщений

Да

Apache Kafka

3.0.3-5.1.6

Опционально.
Правообладателем АО "СберТех" также рекомендован брокер сообщений, основанный на Kafka - Kafka Sber Edition (KFKA) из состава Platform V Coraх. См. раздел "Платформенные зависимости"

Событийный обмен сообщениями между модулями компонента.

Система хранения данных

Да

Sber Data Platform (SDP)

3.5

Рекомендовано

Кластер для хранения данных о событиях, подлежащих аудиту

Система хранения данных

Да

Cloudera Manager (CDH)

6.3.1 (CDH 6.3.2)

Опционально

Кластер для хранения данных о событиях, подлежащих аудиту

Инструмент управления проектом

Да

Apache Maven

3.8.2

Рекомендовано

Фреймворк для автоматизации сборки проектов на основе описания их структуры в файлах на языке POM

Сервис централизованного хранения репозиториев артефактов (хранилище артефактов)

Да

Nexus-Public

2.14.20-02

Рекомендовано

Интегрированная платформа для проксирования, хранения и управления зависимостями Java (Maven), образами, а также распространения ПО

Nexus Repository Manager OSS

2.14.20-02

Рекомендовано

Сервис централизованного хранения репозиториев исходного кода

Да

GitLab Community Edition

20.30.1

Рекомендовано

Хранение конфигураций при автоматизированной установке

Bitbucket

7.6.7

Опционально

Сервис интеграции и оркестрации микросервисов в облаке

Да

Istio

1.11

Рекомендовано.
Правообладателем АО «СберТех» также рекомендован сервис интеграции и оркестрации микросервисов в облаке, основанный на Istio – Platform V Synapse Service Mesh (SSM), см. раздел «Платформенные зависимости»

Сервис интеграции микросервисов в облаке

Примечание:

*

  • Да — категория ПО обязательна для функционирования сервиса (это означает, что сервис не может выполнять свои основные функции без установки данной категории ПО).

  • Нет — категория ПО необязательна для функционирования сервиса (это означает, что сервис может выполнять свои основные функции без установки данной категории ПО).

**

  • Рекомендовано — рекомендованный правообладателем АО «СберТех» продукт.

  • Опционально — альтернативный по отношению к рекомендованному правообладателем АО «СберТех» продукт.

Платформенные зависимости#

Для настройки, контроля и функционирования компонента реализована интеграция с программными продуктами, правообладателем которых является АО «СберТех»:

Наименование продукта

Код

Версия продукта

Код и наименование компонента

Обязательность установки (да/нет)***

Описание

Аналог других производителей****

Platform V IAM SE

IAM

1.3

AUTH IAM Proxy

Да

Сервис выполняет функции аутентификации/авторизации запросов. Взаимодействует с AUTZ или другими провайдерами аутентификации/авторизации

С аналогами других производителей не тестировался.

Platform V IAM SE

IAM

1.3

AUTZ Объединённый сервис авторизации (ОСА)

Да

Сервис для авторизации доступа пользователей на основе проверки прав ролей и прав доступа, а также на основе атрибутов субъектов и объектов доступа.

Сервис успешно прошел испытания и подтвердил свою работоспособность с компонентом AUTH. С аналогами других производителей не тестировался.

Platform V Corax

KFK

5.1.7

KFKA Kafka Sber Edition

Нет

Программный брокер сообщений.

Apache Kafka

Platform V DevopsTools

DOT

1.2

PILP Install_EIP

Нет

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

С аналогами других производителей не тестировался.

Platform V Monitor

OPM

4.1

LOGA Журналирование

Нет

Сервис для хранения лог-файлов

Любой сервис сбора записей о событиях, совместимый с fluent-bit, например: Elasticsearch, InfluxDB.

Platform V Monitor

OPM

4.1

MONA Объединенный мониторинг Unimon

Нет

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

Prometheus 2.21.0

Platform V Synapse Service Mesh

SSM

2.10

POLM Управление политиками

Нет

Сервис для автоматизированной рассылки конфигураций политик управления трафиком, политик безопасности и прочих управляющих команд для сервисов IGEG (Граничный прокси) и SVPX (Сервисный прокси)

Istio

Platform V Synapse Service Mesh

SSM

2.10

SVPX Сервисный прокси

Нет

Сервис для маршрутизации и обеспечения безопасности трафика между приложениями

Istio

Platform V Synapse Service Mesh

SSM

2.10

IGEG Граничный прокси

Нет

Централизованный сервис для входа и выхода в сеть проекта Kubernetes в рамках интеграционных взаимодействий с другими АС

Istio

Platform V Backend

#BD

4.3

OTTS / One-Time-Password (OTP)/OTT

Нет

Сервис для аутентификации и авторизации межсервисных взаимодействий

Примечание:

***

  • Да — компонент или продукт необходим для функционирования сервиса (это означает, что сервис не может выполнять свои основные функции без установки данного компонента).

  • Нет — необязательный для функционирования сервиса компонент или продукт (это означает, что сервис может выполнять свои основные функции без установки данного компонента).

**** Рекомендуется установка программного продукта, правообладателем которого является АО «СберТех», при этом не исключена возможность (допускается правообладателем) использования аналога других производителей. Аналоги, в отношении которых продукт успешно прошел испытания и подтвердил свою работоспособность, указаны в разделе «Системное программное обеспечение».

Аппаратные требования#

Для установки Аудит (AUDT) компонента требуется следующая конфигурация аппаратного обеспечения:

Характеристики аппаратных элементов вычислительной инфраструктуры (серверов) Platform V Audit SE (AUD)

#

Элемент вычислительной инфраструктуры

Кол-во

CPU (core)

RAM, GB

Локальные диски, GB

Сетевые интерфейсы

1

Кластер Kubernetes

1

20

30

-

1 x 10 GbE

2

Сервер транспортного кластера

3

4

16

250

1 x 10 GbE

3

Сервер кластера Hadoop (SDP)

6

4

64

500

1 x 10 GbE

Состав дистрибутива#

Элемент дистрибутива

Описание

distrib-4.9-MS/doc

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

distrib-4.9-MS/doc/os_props.conf

Конфигурационный файл для установки Platform V Audit SE (AUD).

distrib-4.9-MS/lib/licenses.zip

Лицензионные соглашения для сторонних компонентов.

distrib-4.9-MS/modules/audit2-admin

Бэкенд UI. Реализует доступ к событиям безопасности, хранящимся в оперативном хранилище, метамоделям, доступ к импорту данных из архива в оперативное хранилище.

distrib-4.9-MS/modules/audit2-client-proxy

Обеспечивает сервисам REST API для регистрации событий с последующей передачей в подсистему транспорта (в заданные топики Kafka).

distrib-4.9-MS/modules/audit2-controlplane

Реализует создание тракта для движения данных (событий безопасности и вспомогательных сообщений) каждого из тенантов: передает информацию о тенантах в модуль audit2-synchronizer (откуда она поступает в топик тенантов Kafka), а также в структуры хранения SDP, для поддержки корректного транспорта данных (событий и метамоделей) в рамках тенантов.

distrib-4.9-MS/modules/audit2-flume

Модуль реализует классический ETL-сервис на инфраструктуре фреймворка Apache Flume, который выполняет следующие действия для функционирования Platform V Audit SE (AUD): вычитывает из Kafka опубликованные события аудита в формате json; трансформирует их, преобразуя к универсальному виду; записывает события аудита в оперативное хранилище (Solr) в формате json; записывает события аудита в архивное хранилище (HDFS) в формате avro.

distrib-4.9-MS/modules/audit2-synchronizer

Обеспечивает синхронизацию информации о тенантах между подсистемами Platform V Audit SE (AUD): подсистемой сбора, подсистемой хранения. Предназначен для поддержки модуля audit2-controlplane.

distrib-4.9-MS/modules/audit2-ui

Фронтенд UI. Реализует веб-интерфейс пользователя, представление и формирование экранных форм. Обеспечивает взаимодействие Platform V Audit SE (AUD) с Platform V IAM SE (IAM) (ППО, которое обеспечивает единую точку входа пользователей при доступе к Технологической платформе Platform V с использованием идентификации и двухфакторной аутентификации, а также обеспечивает разграничение доступа к Технологической платформе Platform V).

distrib-4.9-MS/other/ansible

Cкрипты для установки

distrib-4.9-MS/other/ansible/roles/spark/files/lib/archives-spark-application.jar

Приложение для поднятия данных из долговременного хранилища в оперативное хранилище

distrib-4.9-MS/other/client-lib-dependencies

Подключаемые клиентские модули для регистрации событий

distrib-4.9-MS/other/inventory-sample

Пример конфигурационного файла для установки компонента

distrib-4.9-MS/other/Jenkins

Скрипт для склейки дистрибутива из частей owned и party

distrib-4.9-MS/other/roleModel

Ролевые модели аудита, которые загружаются в сервис авторизации

distrib-4.9-MS/other/utils

Cкрипты для генерации конфигурации namespace в Kubernetes

Рекомендуемые настройки безопасности окружения#

Общие указания#

Для реализации функций безопасности среды функционирования Platform V Audit SE (AUD) должны выполняться следующие действия:

  • Необходимо регулярное обновление всех сред функционирования Platform V Audit SE (AUD) до актуальных версий с применением всех необходимых патчей безопасности с официальных сайтов разработчиков сред функционирования.

  • Компоненты операционной системы и сред функционирования Platform V Audit SE (AUD) должны быть максимально ограничены. Компоненты, которые не участвуют в функционировании Platform V Audit SE (AUD), должны быть отключены.

  • Должно обеспечиваться предотвращение несанкционированного доступа к идентификаторам и паролям администраторов среды виртуализации, которые необходимы для управления и технической поддержки среды функционирования Platform V Audit SE (AUD).

  • Должна быть обеспечена физическая сохранность серверной платформы с установленным Platform V Audit SE (AUD) и исключение возможности физического доступа к ней посторонних лиц.

  • Каналы передачи данных Platform V Audit SE (AUD) должны быть либо расположены в пределах контролируемой зоны и защищены с использованием организационно-технических мер, либо, в случае их выхода за пределы контролируемой зоны, должны быть защищены путем применения средств криптографической защиты информации, сертифицированных в системе сертификации ФСБ России.

  • Должна быть исключена возможности использования Platform V Audit SE (AUD) для обработки информации, содержащей сведения, составляющие государственную тайну.

  • Должно быть обеспечено наличие администратора, отвечающего за управление (администрирование) механизмов защиты Platform V Audit SE (AUD).

  • Установка, конфигурирование и управление Platform V Audit SE (AUD) должны выполняться в соответствии с эксплуатационной документацией.

  • Должно обеспечиваться предотвращение несанкционированного доступа к идентификаторам и паролям пользователей Platform V Audit SE (AUD).

  • Должно обеспечиваться хранение информации о событиях безопасности в течение не менее трёх лет.

  • Platform V Audit SE (AUD) должно функционировать на JRE, которая прошла анализ безопасности в рамках сертификационных испытаний Platform V Audit SE (AUD), или на JRE, прошедшей испытания по соответствующему уровню контроля или более высокому в рамках сертификации по соответствующему уровню доверия, в том числе заимствованной из состава другого программного обеспечения, сертифицированного по соответствующему уровню доверия или выше.

  • В виртуальной машине JRE из состава среды функционирования Platform V Audit SE (AUD) должно функционировать только программное обеспечение, необходимое для штатного функционирования компонентов Platform V IAM SE (IAM) или другое ПО, сертифицированное по соответствующему уровню доверия или выше.

  • Для всех компонентов среды функционирования Platform V Audit SE (AUD) должны быть установлены все актуальные обновления программного обеспечения, либо приняты организационно-технические меры, направленные на исключение возможности эксплуатации уязвимостей.

  • На SDP (для Solr, Hbase) и Kafka должен быть настроен SSL. Подключение клиентов также должно выполняться через SSL.

Настройка брандмауэра#

Перед развертыванием Platform V Audit SE (AUD) убедитесь, что настройки брандмауэра разрешают входящие и исходящие соединения по протоколу TCP на следующих портах:

Сервис

Порт

Ambari

8080,
8187,
8440,
8441,
8670

Kafka

9092,
9093,
9393,
9394,
24042

Logger

8080

Spark

7077,
7078,
7337,
18080,
18081,
18088

Zookeeper

2181,
2182,
2888,
3181,
3888,
4181,
9010

Solr

8983,
8985

Hbase

2181,
2888,
3888,
16000,
16010,
16020,
16030,
20550,
8085,
9090,
9095,
11060

HDFS

111,
1004,
1006,
2049,
4242,
8019,
8020,
8022,
8480,
8481,
8485,
9864,
9865,
9866,
9867,
9868,
9869,
9870,
9871,
14000,
50010,
50070,
50079,
50470,
50579,
14000,
14001

Hive

9083,
10000,
10002,
50111

Hue

8888,
8889

Oozie

11000,
11443

YARN

8030,
8031,
8032,
8033,
8040,
8041,
8042,
8044,
8088,
8090,
10020,
10033,
13562,
19888,
19890

Flume

41414

Rest API

80,
443

Audit UI

80,
443

SSH

22

Возможные настройки ОС Альт 8 СП#

Выполните настройки операционной системы Альт 8 СП для организации безопасности. Ниже приведен рекомендуемый (необязательный) список возможных настроек. Исполнение остается на усмотрение администраторов среды функционирования:

  • Удалите беспарольную политику группе wheel (sudo).

  • Удалите разрешения setuid и setgid для всех исполняемых файлов, где они не требуются.

  • Настройте максимальный срок действия пароля 40 дней.

  • Настройте минимальный срок пароля 1 день.

  • Настройте предупреждение об окончании срока пароля 14 дней.

  • Настройте минимальную длину пароля не менее 8 символов.

  • Отключите поддержку USB накопителя.

  • Выделите администратора Linux для проведения работ по тестированию и настройке служб.

  • Включите службу аудита и добавьте файл с правилами. Ссылка: https://raw.githubusercontent.com/Neo23x0/auditd/master/audit.rules.

  • Измените следующие параметры SSH:

    • X11Forwarding no

    • MaxAuthTries 3

    • MaxSessions 2

    • PubkeyAuthentication yes

    • PasswordAuthentication no

    • ListenAddress - установите локальный IP. Сервис SSH не должен слушать сетевой интерфейс.

    • AllowUsers - включите этот параметр и добавьте пользователей.

    • Allowgroups - включите этот параметр и добавьте группу.

  • Отключите поддержку IPv6.

  • Обновите программное обеспечение.

  • Удалите VMware Tools.

Изложенные выше рекомендации к длине, сложности, уникальности и периодичности смены паролей должны применяться в части, не противоречащей обязательным для применения корпоративным, отраслевым, национальным или международным требованиям.

Настройки Kubernetes#

Ниже приведен рекомендуемый (необязательный) список требований безопасности к среде исполнения приложений Kubernetes. Исполнение остается на усмотрение администраторов среды функционирования:

  • Обеспечьте установку новых обновлений безопасности для элементов среды исполнения.

  • Обеспечьте регулярную синхронизацию времени от доверенных источников.

  • Отключите или удалите все неиспользуемые и ненужные пакеты, модули, сервисы и протоколы.

  • Измените, переименуйте или заблокируйте все встроенные учетные записи, включая учетную запись локального администратора (суперпользователя).

  • Обеспечьте разграничение доступа учетных записей пользователей (далее, УЗ) и технологических учетных записей (далее, ТУЗ) в соответствии с ролевой моделью доступа.

  • Используйте межсетевое экранирование для защиты хранимых данных.

  • Включите и настройте механизм шифрования административного доступа.

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

  • Обеспечьте статический (анализ защищенности образов) и динамический (анализ защищенности компонентов и приложений) контроль защищенности, подпись (контроль неизменности) образов по результатам проведения анализа — Vulnerability Management.

  • Обеспечьте сбор журналов доступа и событий безопасности для выявления инцидентов кибербезопасности — SOC Monitoring.

  • Контролируйте и ограничивайте вызов компонентов в целях предотвращения атак типа «отказ в обслуживании» — DoS/DDoS prevention.

  • Контролируйте использование компонентами технических ресурсов, чтобы обеспечить непрерывное функционирование среды исполнения - Resources monitoring.

  • Защищайте используемые в средах исполнения секреты от компрометации, модификации, удаления — Secret Management.

  • Обеспечьте поведенческий анализ с целью выявления несанкционированного доступа, превышения полномочий, наличия недекларированных возможностей путем анализа запущенных процессов: взаимодействие, использование портов, ресурсов файловой системы, обращений к ядру — Behavioral analysis.

  • Для обеспечения аутентифицированного доступа к REST API Audit-client-proxy и шифрования передаваемых данных, рекомендуется настроить TLS на ingress средствами Kubernetes.

Поддерживаемой системой приложений-контейнеров является Kubernetes (использование OpenShift опционально), в инструкциях по настройке, в именах переменных и параметрах системы могут встречаться названия систем контейнеризации, которые одинаковы и применимы для обеих сред контейнеризации.

Настройки Kafka и SDP#

Для настройки безопасного использования воспользуйтесь документацией компонентов Kafka и SDP.

Установка#

Установка продукта Platform V Audit SE (AUD) может осуществляться одним из способов:

  • Ручным способом посредством запуска скриптов Ansible;

  • Автоматизированным способом средствами DevOps Tools Install_EIP (PILP) продукта Platform V DevOps Tools (DOT) (опционально).

Общая информация#

При установке и настройке Platform V Audit SE (AUD) для обеспечения безопасности необходимо выполнение следующих условий:

  • инсталляция Platform V Audit SE (AUD) должна осуществляться на виртуальных серверах в защищенной среде виртуализации сотрудником соответствующей квалификации, имеющим права администратора с присвоенными ему идентификационными данными для работы в среде виртуализации;

  • действия, проводимые при инсталляции и при инициализации Platform V Audit SE (AUD), подлежат логированию с надежными метками времени;

  • установка и конфигурирование Platform V Audit SE (AUD) должны осуществляться в соответствии с эксплуатационной документацией;

  • должно обеспечиваться предотвращение несанкционированного доступа к идентификаторам и паролям пользователей Platform V Audit SE (AUD);

  • должно обеспечиваться предотвращение несанкционированного доступа к идентификаторам и паролям администраторов среды виртуализации, которые необходимы для установки и настройки Platform V Audit SE (AUD). В параметрах развертывания присутствуют следующие порты межсервисного взаимодействия:

  • KAFKA_PORT=9093

  • LOGGER_SERVICE_PORT=8080

  • SPARK_PORT=11000

  • ZOOKEEPER_PORT=2181

  • solr_port=8983

  • hbase_master_port=16000

  • hbase_worker_port=16020

  • hdfs_datanodes_port=50010

  • hdfs_namenode_port=8020 Пользователь получает доступ к REST и к UI Platform V Audit SE (AUD) по портам 80 (HTTP) или 443 (при включенном HTTPS). На рисунке приведена схема развертывания Platform V Audit SE (AUD).

Cхема развертывания Platform V Audit SE

Настройка Kafka#

В целевом виде в кластере Kafka должно быть не менее 3 серверов. Далее приведена конфигурация для целевого вида. По умолчанию предполагается размещение ZooKeeper и брокеров Kafka на одних и тех же машинах. В конфигурационном файле брокера Kafka server.properties, который устанавливается стандартно вместе с ПО Kafka, внесите следующие изменения:

  1. Для параметра broker.id укажите порядковый номер сервера Kafka.

  2. Для параметра log.dir укажите директорию для хранения данных. Пример: log.dir=/kafkadata

  3. Для параметра zookeeper.connect перечислите все IP-адреса серверов и порты, на которых размещен ZooKeeper. Пример: zookeeper.connect=192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181

  4. zookeeper.connection.timeout.ms = 30000

  5. zookeeper.session.timeout.ms = 6000

  6. Для listeners укажите протокол, IP-адрес и порт сервера брокера Kafka. Пример: listeners=SSL://192.168.0.1:9093

  7. security.inter.broker.protocol = SSL

  8. sasl.enabled.mechanisms = GSSAPI

  9. sasl.mechanism.inter.broker.protocol = GSSAPI

  10. sasl.kerberos.service.name = kafka

  11. Для параметра ssl.keystore.location укажите размещение хранилища сертификатов. Пример: ssl.keystore.location=ssl/kafkaserver.jks

  12. Для параметра ssl.truststore.location укажите размещение доверенного хранилища сертификатов. Пример: ssl.keystore.location=ssl/kafkaserver.jks

  13. Для параметра ssl.keystore.password укажите пароль хранилища сертификатов.

  14. Для параметра ssl.truststore.password укажите пароль доверенного хранилища сертификатов.

  15. Для параметра ssl.key.password укажите пароль ключа.

  16. ssl.client.auth = required

  17. ssl.enabled.protocols = TLSv1.2

  18. zookeeper.ssl.client.enable=true

  19. zookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty

  20. Для параметра zookeeper.ssl.keystore.location укажите размещение хранилища сертификатов. Пример: zookeeper.ssl.keystore.location=/opt/Apache/stores/keystore-audit-kafka.jks

  21. Для параметра zookeeper.ssl.keystore.password укажите пароль хранилища сертификатов.

  22. Для параметра zookeeper.ssl.truststore.location укажите размещение доверенного хранилища сертификатов. Пример: /opt/Apache/stores/truststore-audit-kafka.jks

  23. Для параметра zookeeper.ssl.truststore.password укажите пароль доверенного хранилища сертификатов

  24. Укажите пустое значение для параметра zookeeper.ssl.endpoint.identification.algorithm, т.е. zookeeper.ssl.endpoint.identification.algorithm =

  25. zookeeper.ssl.enabled.protocols=TLSv1.2

  26. ssl.cipher.suites = TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

  27. authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer

  28. Для параметра super.users укажите DN сертификата для администрирования кластера Kafka. Пример: super.users = User:CN=MyCN,OU=0001,O=Issue Owner,C=RU

  29. allow.everyone.if.no.acl.found=false

  30. zookeeper.set.acl=true

  31. auto.create.topics.enable = false

  32. delete.topic.enable = true

  33. num.partitions = 21

  34. offsets.topic.replication.factor = 3

  35. transaction.state.log.replication.factor = 3

  36. transaction.state.log.min.isr = 3

  37. replica.fetch.max.bytes = 5242880

  38. group.max.session.timeout.ms = 300000

  39. group.initial.rebalance.delay.ms = 3000

  40. socket.send.buffer.bytes = 102400

  41. socket.receive.buffer.bytes = 102400

  42. socket.request.max.bytes = 104857600

  43. num.network.threads = 6

  44. num.io.threads = 8

  45. num.replica.fetchers = 2

  46. num.recovery.threads.per.data.dir = 1

  47. Для параметра log.retention.hours укажите значение хранения данных на Kafka в часах. Значение следует указывать на основе значений входящего потока данных и размера дисков серверов Kafka. Рекомендуемое значение log.retention.hours = 168.

  48. log.segment.bytes = 1073741824

  49. log.retention.check.interval.ms = 300000

  50. log.cleaner.enable = true

  51. offsets.retention.minutes = 43200

  52. max.incremental.fetch.session.cache.slots = 100000

  53. log.roll.hours = 1

  54. queued.max.requests = 1000

  55. message.max.bytes = 2097152

  56. default.replication.factor = 3

  57. min.insync.replicas = 2

  58. log.cleaner.threads = 2

  59. unclean.leader.election.enable = false

  60. compression.type = snappy

  61. Укажите пустое значение для параметра ssl.endpoint.identification.algorithm, т.е. ssl.endpoint.identification.algorithm =

  62. Укажите пустое значение для параметра listener.name.internal.ssl.endpoint.identification.algorithm, т.е. listener.name.internal.ssl.endpoint.identification.algorithm =

Подробное описание параметров кластера Kafka можно найти в документации Apache Kafka.

Создайте топики в основном кластере Kafka согласно таблице.

Имя топика

Дополнительные параметры топика

audit-global-events; audit-global-operations; audit-global-metamodels

Настройте максимальный размер сообщения: max.message.bytes=2097152

audit-client-ping-topic

Настройте сжатие и удаление данных: retention.ms=3600000; segment.bytes=1048576; cleanup.policy=delete

audit-metamodels-proxy

Настройте сжатие и удаление данных: max.message.bytes=2621440; min.compaction.lag.ms=86400000; retention.ms=2592000000; retention.bytes=1073741824; segment.bytes=104857600; cleanup.policy=delete,compact; min.cleanable.dirty.ratio=0.1

audit-events-proxy

Настройте максимальный размер сообщения: max.message.bytes=2621440

audit-events-errors; audit-operations-errors; audit-metamodels-errors; audit-events-proxy-errors; audit-metamodels-proxy-errors

Настройте максимальный размер сообщения: max.message.bytes=3145728

ssp-audit-topic; ssp-response-topic; audit-tenants-sync

Дополнительные параметры отсутствуют

Если кластер Platform V Corax используется для экспорта данных, создайте в нем топики согласно таблице.

Имя топика

Дополнительные параметры топика

audit-export-events-topic; audit-export-operations-topic

Настройте максимальный размер сообщения: max.message.bytes=2621440

В качестве кластера Kafka для экспорта данных может использоваться основной кластер Platform V Corax или отдельностоящий кластер Platform V Corax.

Настройка элементов кластера Hadoop (SDP)#

Настройка HDFS#

Установите параметры:

  1. Replication Factor = 3

  2. Java Heap Size of Balancer in Bytes = 1 GiB

  3. Java Heap Size of DataNode in Bytes = 1 GiB

  4. Maximum Memory Used for Caching = 2 GiB

  5. Client Java Heap Size in Bytes = 128 MiB

  6. Java Heap Size of HttpFS in Bytes = 256 MiB

  7. Java Heap Size of NameNode in Bytes = 4 GiB

  8. Java Heap Size of Secondary NameNode in Bytes = 4 GiB

  9. Default Umask = 002

Настройка HBase#

Установите параметры:

  1. Client Java Heap Size in Bytes = 256 MiB

  2. Java Heap Size of HBase REST Server in Bytes = 512 MiB

  3. Java Heap Size of HBase Thrift Server in Bytes = 512 MiB

  4. Java Heap Size of HBase Master in Bytes = 1 GiB

  5. Java Heap Size of HBase RegionServer in Bytes = 4 GiB

Настройка Hive#

Установите параметры:

  1. Client Java Heap Size in Bytes = 128 MiB

  2. Java Heap Size of Hive Metastore Server in Bytes = 1 GiB

  3. Java Heap Size of HiveServer2 in Bytes = 1 GiB

  4. В HiveServer2 Advanced Configuration Snippet (Safety Valve) for hive-site.xml добавьте три настройки (для поддержки транзакционности) нажатием на +: a. Настройка 1: Name: hive.txn.manager Value: org.apache.hadoop.hive.ql.lockmgr.DbTxnManager Description: Used for Hive Streaming b. Настройка 2: Name: hive.compactor.initiator.on Value: true Description: Used for Hive Streaming c. Настройка 3: Name hive.compactor.worker.threads Value: 5 Description Used for Hive Streaming

Настройка Solr#

Установите параметры:

  1. Java Heap Size of Solr Server in Bytes = 4 GiB

  2. Java Direct Memory Size of Solr Server in Bytes = 2 GiB

При нестабильной работе Solr на больших объемах данных эти параметры следует увеличивать в два раза пока не будет достигнута стабильность в работе Solr. При этом нужно следить за тем, чтобы сумма параметров Java Heap Size всех сервисов SDP, установленных на сервере, не превышала объем оперативной памяти.

Настройка ZooKeeper#

Установите параметры: Java Heap Size of ZooKeeper Server in Bytes = 4 GiB

Настройка YARN#

Установите параметры:

  1. ApplicationMaster Memory = 1 GiB

  2. ApplicationMaster Java Maximum Heap Size = 768 MiB

  3. Map Task Memory = 1 GiB

  4. Reduce Task Memory = 1 GiB

  5. Map Task Maximum Heap Size = 768 MiB

  6. Reduce Task Maximum Heap Size = 768 MiB

  7. Client Java Heap Size in Bytes = 768 MiB

  8. Java Heap Size of JobHistory Server in Bytes = 1 GiB

  9. Java Heap Size of NodeManager in Bytes = 256 MiB

  10. Container Memory = 8 GiB

  11. Container Virtual CPU Cores = 4

  12. Java Heap Size of ResourceManager in Bytes = 1 GiB

  13. Container Memory Minimum = 0 GiB

  14. Container Memory Increment = 128 MiB

  15. Container Memory Maximum = 2 GiB

Настройка Oozie#

Установите параметр: Java Heap Size of Oozie Server in Bytes = 256 MiB

Порядок установки#

Подготовка дистрибутива Platform V Audit SE (AUD)#

Перед установкой Platform V Audit SE (AUD) необходимо настроить Jenkins freestyle job и выполнить её. Для этого создайте Jenkins freestyle job и укажите в pipeline использование файла consolidate-united-distributive.groovy из состава дистрибутива Platform V Audit SE (AUD). Данный файл может находиться в внутри архива consolidate-united-distrib.zip, внутри которого также содержится файл README.md с описанием параметров groovy-скрипта.

Установка компонентов в кластере Hadoop (SDP)#

Обновление компонентов Platform V Audit SE (AUD), размещенных в кластере Hadoop (SDP) происходит с помощью ansible-скриптов из состава дистрибутива Platform V Audit SE (AUD). Скрипты размещены в дистрибутиве по пути distrib-4.9-MS/other/ansible.

Пререквизиты обновления в кластере Hadoop (SDP)#

Перед самой первой установкой Platform V Audit SE (AUD) на кластере Hadoop (SDP) запустите скрипты из дистрибутива:

  1. Для подготовки структуры директорий на HDFS запустите скрипт audit-prerequisites-hdfs.sh.
    Пример команды: sh distrib-4.9-MS/other/ansible/audit-prerequisites-hdfs.sh ANSIBLE_USER
    где ANSIBLE_USER - ssh-пользователь, под которым будет происходить работа ansible и который входит в состав группы администраторов HDFS - supergroup.
    Важно! При работе скриптов иногда требуется чистка директории audit_resources, поэтому требуется, чтобы на HDFS существовала домашняя директория у пользователя ANSIBLE_USER.

  2. Для выполнения настроек в Linux на всех серверах кластера Hadoop (SDP) выполнить скрипт audit-prerequisites-node.sh. Пример команды: sh distrib-4.9-MS/other/ansible/audit-prerequisites-node.sh ANSIBLE_USER причем команда должна выполняться в режиме sudo.

При последующих обновлениях Platform V Audit SE (AUD) на кластере Hadoop (SDP) шаги из данного раздела выполнять не требуется.

Подготовка к обновлению в кластере Hadoop (SDP)#

Перед запуском ansible-скриптов для обновления компонентов Platform V Audit SE (AUD) в кластере Hadoop (DSP) необходимо скопировать из дистрибутива всю структуру директории distrib-4.9-MS/other/inventory-sample и заполнить в файлах ambari-environment.yml и ambari-vault.yml стендозависимые параметры. Ansible-скрипты рассчитаны только на работу с inventory-файлами, созданными по образцу поставляемых в дистрибутиве по пути distrib-4.9-MS/other/inventory-sample.

Список inventory-файлов и параметров в них

Файл

Параметр

ambari-environment.yml

data_center_id

ambari_server

ambari_server_port

ambari_cluster

kerberos_enabled

service_status_pause_timer

hive_host

hive_port

solr_endpoint

solr_shards

solr_replicas

solr_max_shards

days_for_data_save

ambari-vault.yml

vault_ansible_user

vault_ansible_password

vault_ambari_user

vault_ambari_password

vault_kerberos_hdfs_user

vault_kerberos_hdfs_password

vault_kerberos_hive_user

vault_kerberos_hive_password

vault_hive_principal

vault_kerberos_hbase_user

vault_kerberos_hbase_password

vault_kerberos_solr_user

vault_kerberos_solr_password

vault_solr_principal

tasks-enabler.yml

hide_logs

cleanup_hive

cleanup_hbase

cleanup_solr

Ручное обновление в кластере Hadoop (SDP)#

Выполните обновление схем данных в хранилищах Hive, Solr, Hbase посредством запуска ansible-скриптов из директории дистрибутива distrib-4.9-MS/other/ansible с помощью команды:
ansible-playbook /path/to/audit-ambari-update.yml -i /path/to/inventory, где /path/to/inventory - путь до директории inventory-файлов, созданных по инструкции, описанной в разделе Подготовка.

Автоматическое обновление в кластере Hadoop (SDP) (опционально)#

В компоненте PILP Install_EIP необходимо:

  1. Разместить структуру файлов, созданных по инструкции в разделе Подготовка, в репозитории конфигурации компонента PILP Install_EIP.

  2. Добавить шаг запуска ansible-playbook в файле STAND_NAME/AUDIT_DIR/actions.xml с указанием пути до структуры с inventory-файлами.

  3. Выполнить шаг для запуска соответствующего ansible-playbook.

Установка компонентов в Kubernetes#

Ручное обновление компонентов в Kubernetes#

Для ручного обновления требуется:

  1. Иметь возможность запускать bash-скрипты (.sh).

  2. Локально установленную и настроенную утилиту kubectl (настройка описана ниже в разделе Настройка утилиты kubectl).

  3. Скрипт deploy-k8s.sh, автоматизирующий работу со стендозависимыми параметрами (текст скрипта приведен далее, в разделе Запуск скрипта deploy-k8s.sh).

  4. Заполнить в файле, поставляемом в дистрибутиве по пути distrib-4.9-MS/doc/os_props.conf, параметры приложений, развертываемых в Kubernetes. Путь до этого файла указывается при запуске скрипта deploy-k8s.sh через параметр --param-file.

  5. Скопировать из дистрибутива все файлы из директории distrib-4.9-MS/modules/<module_name>/certs и разместить в одной директории. Заполнить сертификатами и паролями сертификатов все директории. Путь до этой директории указывается при запуске скрипта deploy-k8s.sh через параметр --secrets-dir.

Настройка утилиты kubectl

Для работы с Kubernetes через командную строку, необходимо установить утилиту kubectl и настроить ее для работы с кластером Kubernetes:

  1. Прописать реквизиты кластера
    kubectl config set-cluster <cluster_config_name> --server=https://K8S_ip_address_or_FQDN:6443 --insecure-skip-tls-verify

  2. Прописать учетную запись для подключения к кластеру kubectl config set-credentials <user_config_name> --token=<TOKEN> где <TOKEN> это автоматически сгенерированный логин-токен для вашего сервис-аккаунта. Найти его можно в описание самого сервис-аккаунта. Он прописан как секрет, с именем "<service_account_name>-token-<случайная последовательность символов>". Из этого секрета нужно скопировать содержимое поля token и указать вместо <TOKEN>.

  3. Создать контекст "Context" - информации об адресе подключения и учетных данных:
    kubectl config set-context <context_config_name> --namespace=<k8s_namespace_name> --cluster=<cluster_config_name> --user=<user_config_name>

  4. Включить использование контекста для всех выполняемых команд:
    kubectl config use-context <context_config_name>

  5. Проверить конфигурацию с помощью команды:
    kubectl config view

  6. Проверить какой контекст сейчас используется можно с помощью команды:
    kubectl config current-context

Запуск скрипта deploy-k8s.sh

Для запуска скрипта deploy-k8s.sh выполните команду, указав значения параметров --param-file, --secrets-dir, --create-secrets:
sh deploy-k8s.sh --distrib-dir /path/to/distrib --param-file /path/to/param_file --secrets-dir /path/to/secrets_dir --create-secrets true

В таблице приведено описание параметров скрипта deploy-k8s.sh:

Параметр (флаг)

Описание

Значение по умолчанию

–distrib-dir

путь к дистрибутиву Platform V Audit SE (AUD)

отсутствует

–param-file

путь к файлу параметров (os_props.conf)

…/inventories/kubernetes/os_props_dzo.conf

–templates-dir

путь к директории с template Ingress/Egress

…/inventories/kubernetes/templates/

–secrets-dir

путь к директории с файлами, из которых необходимо создать secret

…/inventories/kubernetes/certs/

–configs-dir

путь к директории с файлами, из которых необходимо создать configMap

…/inventories/kubernetes/configs/

–create-secrets

При значении true включает создание secret в Kubernetes

false

–create-configs

При значении true включает создание configMap в Kubernetes

false

–create-templates

При true включает создание template в Kubernetes

false

–modules

список модулей Platform V Audit SE (AUD), которые будут установлены в Kubernetes

audit2-admin,audit2-ui,audit2-flume,audit2-client-proxy,audit2-synchronizer,audit2-controlplane

–ignore

список файлов, которые будут проигнорированы (скрипт удаляет их перед шагом установки)

Текст скрипта deploy-k8s.sh:

#!/bin/bash

BUILD_DIR=build

# Default values
PARAM_FILE=../inventories/kubernetes/k8s-props.conf
TEMPLATES_DIR=../inventories/kubernetes/templates/
SECRETS_DIR=../inventories/kubernetes/certs/
CONFIGS_DIR=../inventories/kubernetes/configs/
CREATE_SECRETS=false
CREATE_CONFIGS=false
CREATE_TEMPLATES=false
DEPLOYED_MODULES="audit2-admin,audit2-ui,audit2-flume,audit2-client-proxy,audit2-synchronizer,audit2-controlplane"
IGNORED_FILES="virtualservice-ingress.yml,\
               virtualservice-ingress-mtls.yml,\
               audit2-ui-route.yml,\
               audit2-synchronizer-route.yml,\
               audit2-controlplane-route.yml,\
               audit2-client-proxy-route.yml,\
               audit2-admin-route.yml,\
               deployment-metamodel-avro-kafka-v5-to-kafka-v6-converter-template.yaml,\
               configmap-metamodel-avro-kafka-v5-to-kafka-v6-converter-template.yaml,\
               deployment-events-avro-kafka-v5-to-kafka-v6-converter-template.yaml,\
               configmap-events-avro-kafka-v5-to-kafka-v6-converter-template.yaml,\
               deployment-pkb-events-avro-kafka-to-external-kafka-template.yaml,\
               configmap-pkb-events-avro-kafka-to-external-kafka-template.yaml,\
               deployment-pkb-events-kafka-to-external-kafka-template.yaml,\
               configmap-pkb-events-kafka-to-external-kafka-template.yaml,\
               deployment-simple-events-kafka-to-hbase-template.yaml,\
               configmap-simple-events-kafka-to-hbase-template.yaml"

usage() {
    echo "Usage: $0 --distrib-dir /path/to/distrib [ OPTIONS ]"
    echo ""
    echo "Options:"
    echo "  -h                : Print this usage guide"
    echo "  --distrib-dir     : Path to audit distribution"
    echo "  --param-file      : Path to parameters file                           | Default value: $PARAM_FILE"
    echo "  --templates-dir   : Path to custom templates directory                | Default value: $TEMPLATES_DIR"
    echo "  --secrets-dir     : Path to secrets directory                         | Default value: $SECRETS_DIR"
    echo "  --configs-dir     : Path to configMaps directory                      | Default value: $CONFIGS_DIR"
    echo "  --create-secrets  : Enables secret creation (true/false)              | Default value: $CREATE_SECRETS"
    echo "  --create-configs  : Enables configMaps creation (true/false)          | Default value: $CREATE_CONFIGS"
    echo "  --create-templates: Enables custom templates creation (true/false)    | Default value: $CREATE_TEMPLATES"
    echo "  --modules         : List of audit modules ('module1,module2,module3') | Default value: $DEPLOYED_MODULES"
    echo "  --ignore          : List of ignored files ('file1,file2,file3')       | Default value: $IGNORED_FILES"
    exit 1
}

if [[ $# -eq 0 ]] ; then
    usage
    exit 0
fi

while [[ $# -gt 0 ]]; do
    case "$1" in
        -h) usage;;
        --distrib-dir)      shift; DISTRIB_PATH=$1;;
        --param-file)       shift; PARAM_FILE=$1;;
        --templates-dir)    shift; TEMPLATES_DIR=$1; echo "Used templates dir: $TEMPLATES_DIR";;
        --secrets-dir)      shift; SECRETS_DIR=$1;   echo "Used secrets dir: $SECRETS_DIR";;
        --configs-dir)      shift; CONFIGS_DIR=$1;   echo "Used configMaps dir: $CONFIGS_DIR";;
        --modules)          shift; DEPLOYED_MODULES=$1;;
        --ignore)           shift; IGNORED_FILES=$1;;
        --create-secrets)   shift; CREATE_SECRETS=$1;;
        --create-configs)   shift; CREATE_CONFIGS=$1;;
        --create-templates) shift; CREATE_TEMPLATES=$1;;
        *) usage;;
    esac
    shift
done

DISTRIB_MODULES=$(find $DISTRIB_PATH/modules/ -mindepth 1 -maxdepth 1 -type d -exec basename {} \;)
FLUME_MODULES=$(find $DISTRIB_PATH/modules/audit2-flume/configs/ -mindepth 1 -maxdepth 1 -type d -exec basename {} \;)

function copyManifests {
  echo ""
  echo "============ COPYING MANIFESTS ==========="
  for module_name in $DISTRIB_MODULES; do
    if [ "$module_name" == "audit2-flume" ]; then
      for flume_module in $FLUME_MODULES; do
        mkdir -p $BUILD_DIR/$module_name/
        echo "---- Copying $module_name/$flume_module manifests ----"
        cp $DISTRIB_PATH/modules/$module_name/configs/$flume_module/*.yaml $BUILD_DIR/$module_name
      done
    else
      mkdir -p $BUILD_DIR/$module_name
      echo "---- Copying $module_name manifests ----"
      cp $DISTRIB_PATH/modules/$module_name/configs/*.yml $BUILD_DIR/$module_name
    fi
  done

  if $CREATE_TEMPLATES; then
    mkdir -p $BUILD_DIR/templates
    cp $TEMPLATES_DIR/* $BUILD_DIR/templates
  fi
}

function removeIgnoredFiles {
  echo ""
  echo "============ REMOVING IGNORED MANIFESTS ==========="
  while IFS=',' read -ra FILES_TO_REMOVE; do
    for removed_file in "${FILES_TO_REMOVE[@]}"; do
      echo "---- Removing $removed_file ----"
      find $BUILD_DIR -type f -name $removed_file -delete
    done
  done <<< "$IGNORED_FILES"
}

function createSecrets {
  echo ""
  echo "============ CREATING SECRETS ==========="
  mkdir -p $BUILD_DIR/secrets
  for secret_name in `ls $SECRETS_DIR`; do
    echo "---- Creating Secret file $secret_name ----"
    kubectl create secret generic $secret_name \
      --from-file=$SECRETS_DIR/$secret_name/ \
      --dry-run=client \
      -o yaml >> $BUILD_DIR/secrets/$secret_name.yml
  done
}

function createConfigMaps {
  mkdir -p $BUILD_DIR/configmaps
  echo ""
  echo "============ CREATING CONFIGMAPS ==========="
  for configmap_name in `ls $CONFIGS_DIR`; do
    echo "--- Creating ConfigMap file $configmap_name ----"
    kubectl create configmap $configmap_name \
      --from-file=$CONFIGS_DIR/$configmap_name/ \
      --dry-run=client \
      -o yaml >> $BUILD_DIR/configmaps/$configmap_name.yml
  done
}

function processPlaceholders {
  echo ""
  echo "============ PROCESS PLACEHOLDERS ==========="
  # Read with:
  # IFS (Field Separator) =
  # -d (Record separator) newline
  # first field before separator as key
  # second field after separator and reminder of record as value
  while IFS='=' read -d $'\n' -r key value; do
    # Skip lines starting with sharp or lines containing only space or empty lines
    [[ "$key" =~ ^([[:space:]]*|[[:space:]]*#.*)$ ]] && continue
    echo "Replacing parameter $key with value = $value"

    if [[ "$OSTYPE" == "linux-gnu"* ]]; then
      # RHEL
      find $BUILD_DIR -type f -exec sed -i "s|\${$key}|$value|g" {} \;
      else
      # MacOS
      find $BUILD_DIR -type f -exec sed -i '' "s|\${$key}|$value|g" {} \;
    fi
  done < $PARAM_FILE
}

function replaceIstioName {
    local old_istio_name="istiod-basic"
    local new_istio_name="istiod-common-install"

    if [[ "$OSTYPE" == "linux-gnu"* ]]; then
      # RHEL
      find $BUILD_DIR -type f -exec sed -i "s|$old_istio_name|$new_istio_name|g" {} \;
      else
      # MacOS
      find $BUILD_DIR -type f -exec sed -i '' "s|$old_istio_name|$new_istio_name|g" {} \;
    fi
}

function deployToK8S {
    local path_to_manifests=$1
    find $path_to_manifests -type f -exec kubectl apply -f {} \;
#    find $path_to_manifests -type f -exec echo {} \;
}

rm -r $BUILD_DIR

copyManifests
removeIgnoredFiles
createSecrets
createConfigMaps
processPlaceholders
replaceIstioName

echo ""
echo "============ APPLY MODULES MANIFESTS ==========="
for module_name in $DISTRIB_MODULES; do
  if [[ $DEPLOYED_MODULES == *"$module_name"* ]];
    then
    echo "--- Apply module $module_name manifests ----"
    deployToK8S $BUILD_DIR/$module_name
    else
    echo "--- Skip apply module $module_name manifests ----"
  fi
done

if $CREATE_SECRETS; then
  echo ""
  echo "============ APPLY SECRETS ==========="
  deployToK8S $BUILD_DIR/secrets
fi

if $CREATE_CONFIGS; then
  echo ""
  echo "============ APPLY CONFIGMAPS ==========="
  deployToK8S $BUILD_DIR/configmaps
fi

if $CREATE_TEMPLATES; then
  echo ""
  echo "============ APPLY CUSTOM TEMPLATES ==========="
  deployToK8S $BUILD_DIR/templates
fi
Автоматическое обновление компонентов в Kubernetes (опционально)#
Шаг 1.#

В файл конфигурации PILP Install_EIP STAND_NAME/AUDIT_DIR/os_yaml_dirs.conf внести список директорий с модулями Platform V Audit SE (AUD), которые предназначены для установки в Kubernetes:

distrib-4.9-MS/modules/audit2-client-proxy/configs
distrib-4.9-MS/modules/audit2-admin/configs
distrib-4.9-MS/modules/audit2-controlplane/configs
distrib-4.9-MS/modules/audit2-synchronizer/configs
distrib-4.9-MS/modules/audit2-ui/configs
distrib-4.9-MS/modules/audit2-flume/configs/common
distrib-4.9-MS/modules/audit2-flume/configs/events-avro-kafka-to-external-kafka
distrib-4.9-MS/modules/audit2-flume/configs/events-kafka-to-external-kafka
distrib-4.9-MS/modules/audit2-flume/configs/events-kafka-to-hive
distrib-4.9-MS/modules/audit2-flume/configs/events-kafka-to-hive-proxy
distrib-4.9-MS/modules/audit2-flume/configs/events-kafka-to-solr
distrib-4.9-MS/modules/audit2-flume/configs/events-kafka-to-solr-proxy
distrib-4.9-MS/modules/audit2-flume/configs/invalid-events-kafka-to-hbase
distrib-4.9-MS/modules/audit2-flume/configs/invalid-events-kafka-to-hbase-proxy
distrib-4.9-MS/modules/audit2-flume/configs/invalid-metamodel-kafka-to-hbase
distrib-4.9-MS/modules/audit2-flume/configs/invalid-metamodel-kafka-to-hbase-proxy
distrib-4.9-MS/modules/audit2-flume/configs/invalid-operation-kafka-to-hbase
distrib-4.9-MS/modules/audit2-flume/configs/metamodel-kafka-to-hbase
distrib-4.9-MS/modules/audit2-flume/configs/metamodel-kafka-to-hbase-proxy
distrib-4.9-MS/modules/audit2-flume/configs/operation-kafka-to-external-kafka
distrib-4.9-MS/modules/audit2-flume/configs/operation-kafka-to-hbase
Шаг 2.#

В файл конфигурации PILP Install_EIP STAND_NAME/AUDIT_DIR/os_ignore.conf внести список файлов, игнорируемых при развертывании:

parameters.conf
audit2-client-proxy-route.yml
audit2-admin-route.yml
audit2-controlplane-route.yml
audit2-synchronizer-route.yml
audit2-ui-route.yml
virtualservice-ingress.yml
virtualservice-ingress-mtls.yml
Эти файлы необходимы только при развертывании компонентов в отдельном namespace.
Шаг 3.#

Необходимо скопировать из дистрибутива все директории из distrib-4.9-MS/modules/MODULE_NAME/configs/certs (для сервисов обработки соответственно distrib-4.9-MS/modules/audit-cloud-flume/configs/common/certs) в директорию конфигурации EIP STAND_NAME/AUDIT_DIR/openshift.

Сервисы обработки

  • events-kafka-to-solr

  • events-kafka-to-hive

  • operation-kafka-to-hbase

  • metamodel-kafka-to-hbase

  • invalid-events-kafka-to-hbase

  • invalid-operation-kafka-to-hbase

  • invalid-metamodel

  • events-kafka-to-solr-proxy

  • events-kafka-to-hive-proxy

  • metamodel-kafka-to-hbase-proxy

  • invalid-events-kafka-to-hbase-proxy

  • invalid-metamodel-kafka-to-hbase-proxy

  • events-avro-kafka-to-external-kafka

  • events-kafka-to-external-kafka

  • operation-kafka-to-external-kafka

Шаг 4.#

Заполните в PILP Install_EIP в директории STAND_NAME/AUDIT_DIR/openshift все вложенные файлы с сертификатами и паролями от них, после чего зашифруйте их с помощью утилиты ansible-vault. Внимание! Менять названия папок и файлов запрещено, потому что это приведет к некорректной установке компонентов.

Шаг 5.#

Замените в PILP Install_EIP файл конфигурации STAND_NAME/AUDIT_DIR/os_props.conf файлом из дистрибутива distrib-4.9-MS/doc/os_props.conf и заполните его стендозависимыми значениями. Файл os_props.conf содержит все параметры всех модулей Platform V Audit SE (AUD), которые предназначены для установки в Kubernetes. Примечание: Дублирующиеся параметры закомментированы, а не удалены для того, чтобы было понятно, в конфигурацию какого модуля они попадают.

Шаг 5.1 - Настройка параметров журналирования в компоненте Журналирование (LOGA) продукта Platform V Monitor (OPM)

По умолчанию, сведения о работе Platform V Audit SE (AUD) сохраняются локально в журналах подов в Kubernetes. Чтобы обеспечить централизованное хранение и доступ к журналам при помощи компонента Журналирование (LOGA) продукта Platform V Monitor (OPM), внесите следующие настройки в конфигурационный файл os_props.conf.

В разделе AUDIT-CLIENT-PROXY:

LOGGER_SERVICE_HOSTNAME="стендо-зависимое имя домена, назначенное поду с установленным компонентом Журналирование (LOGA) продукта Platform V Monitor (OPM)"
LOGGER_SIDECAR_IMAGE="стендо-зависимый URL к репозиторию в Nexus, где находится вспомогательное приложение sidecar, ответственное за сбор локальных журналов и отправку их в компонент Журналирование (LOGA) продукта Platform V Monitor (OPM)"
LOGGER_SERVICE_PORT="8080"

За более детальной информацией обратитесь к документации для компонента Журналирование (LOGA) продукта Platform V Monitor (OPM).

Шаг 5.2 - Настройка параметров для инструментов аутентификации и авторизации Platform V IAM SE (IAM)

Для подключения к компонентам AUTH и AUTZ аутентификации и авторизации Platform V IAM SE (IAM), внесите следующие настройки в конфигурационный файл os_props.conf, в раздел AUDIT-CLOUD-ADMIN:

OSA_BASE_URL="URL, по которому расположена развернутая служба аутентификации и авторизации Platform V IAM SE (IAM)"
IAM_AUTH_PUBLICKEY_LOCATIONS="URL, по которым расположены публичные ключи к сертификатам безопасности"

За более детальной информацией обратитесь к документации сервиса Platform V IAM SE (IAM).

Шаг 6.#

Запустите задачу в PILP Install_EIP для обновления компонентов Platform V Audit SE (AUD) в Kubernetes.

Обновление Platform V Audit SE (AUD)#

Обновление Platform V Audit SE (AUD) включает в себя два основных этапа:

  1. Обновление компонентов Platform V Audit SE (AUD) в кластере Hadoop (SDP). На этом этапе выполняются перереквизиты и обновляются схемы данных.

  2. Обновление приложений Platform V Audit SE (AUD) в Kubernetes. Используется стратегия обновления Rolling Update, обязывающая Kubernetes поднимать контейнеры с новой версией, и при успешном подъеме удалять старую версию приложения

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

Удаление#

Для удаления компонентов Platform V Audit SE (AUD), выполните следующие действия:

  1. Удалите из Kubernetes ресурсы, содержащие слово audit в имени. Список используемых ресурсов:

  • ConfigMap

  • Sidecar

  • ServiceEntry

  • DestinationRule

  • Gateway

  • VirtualService

  • Service

  • EnvoyFilter

  • Deployment

  • Route

  • DeploymentConfig

  1. Удалите на всех серверах кластера Hadoop (SDP) директорию /var/sbt/audit.

  2. Очистите хранилища данных в кластере Hadoop (SDP):

    • Удалите папки на HDFS с помощью команды hdfs dfs -rm -r /events_avro /events_proxy_avro /audit_resources.

    • Удалите таблицы в Hbase: audit_data, audit_operations, audit_metamodels, audit_invalid_events, audit_invalid_operations, audit_invalid_metamodels, audit_proxy_invalid_events, audit_proxy_invalid_metamodels, pkb_filters, ip_data_mart.

    • Удалите коллекцию audit_events в Solr. Для выполнения этого шага можно запустить ansible-скрипт из состава дистрибутива Platform V Audit SE (AUD) do-not-use-in-prom-audit-cleanup.yml, указав в inventory-файле значение для переменной days_for_data_save=0.

  3. Для удаления данных с транспортного компонента Kafka удалите директорию $KAFKA_DATA с серверов, на которых размещен транспортный компонент Kafka.

Проверка работоспособности#

  1. Открыть UI Platform V Audit SE (AUD) и выполнить поиск. Убедиться, что поиск выполнился без ошибок.

  2. Подождать несколько минут и повторить поиск в режиме Lucene за текущие сутки по критерию module:audit. Убедиться, что в событиях присутствует запись о поиске в Аудите (п.2.).

  3. Зайти в Ambari Web и проверить состояние сервисов.

  4. Убедиться, что после обновления в логах сервисов обработки отсутствуют записи с уровнем ERROR и WARN.

  5. Проверить работоспособность прокси-приложения. Для этого выполнить (требуется наличие на машине предустановленного сертификата, подписанного удостоверяющим центром):

    curl --header "Content-type: application/json" --header "X-Node-ID: MY_FQDN" --cacert ./ca.crt --key ./mycertificate_key.key  --cert ./mycertificate.cer --request POST --url https://SERVER_PROXY_AUDIT/v1/event -v -k -d "json"
    

    Ожидаемый ответ, подтверждающий работоспособность прокси-приложения:

   {"code":"400.1","message":"Validation error, uuid_error = 4e245634-d23a-4a4f-99e5-664d8eb494d9","description":"name: must not be null, metamodelVersion: must not be null, userLogin: must not be null, module: must not be null, userNode: must not be null, createdAt: must not be null"}

Откат#

Внимание! Если Platform V Audit SE (AUD) функционирует штатно, то откат к предыдущей версии не требуется. Влияния на работу клиентских модулей более старых версий, пишущих в Platform V Audit SE, не будет. Данные, поступающие от модулей в Platform V Audit SE, будут регистрироваться корректно, так как Platform V Audit SE поддерживает обратную совместимость на несколько версий.

Platform V Audit SE состоит из пяти частей, которые могут разворачиваться отдельно друг от друга:

  • Клиентский модуль (audit-client-core2, audit2-client-core, audit2-api, audit2-proxy-client-OTT, audit2-proxy-client).

  • UI (audit2-ui, audit2-admin, audit2-synchronizer, audit2-controlplane).

  • Структуры хранения (archives-spark-application).

  • Прокси-приложение (audit2-client-proxy).

  • Сервисы обработки (events-avro-kafka-to-external-kafka, events-kafka-to-external-kafka,events-kafka-to-hive,events-kafka-to-hive-proxy,events-kafka-to-solr,events-kafka-to-solr-proxy,invalid-events-kafka-to-hbase,invalid-events-kafka-to-hbase-proxy,invalid-metamodel-kafka-to-hbase,invalid-metamodel-kafka-to-hbase-proxy,invalid-operation-kafka-to-hbase,metamodel-kafka-to-hbase,metamodel-kafka-to-hbase-proxy, operation-kafka-to-external-kafka, operation-kafka-to-hbase)

Откат схем данных не предусмотрен. UI и прокси-приложение откатываются путем удаления из Kubernetes ресурсов, содержащих слово audit в имени, и переустановкой модулей из предыдущих версий Platform V Audit SE (AUD). Клиентский модуль откатывается средствами отката той системы, в которой клиентский модуль используется для регистрации событий в Platform V Audit SE (AUD).

Часто встречающиеся проблемы и пути их устранения#

Не зафиксировано часто встречающихся проблем при установке.

При возникновении проблем рекомендуется просмотреть логи. Логирование всех процессов работы Platform V Audit SE (AUD) ведется средствами Hadoop (SDP) и Kubernetes. Просмотр логов Hadoop (SDP) доступен через интерфейс Apache Ambari. Примеры типовых ошибок из логов вы можете посмотреть в Руководстве администратора, разделе Рекомендации при ошибках и сбоях Platform V Audit SE (AUD).

Чек-лист валидации установки#

После установки (обновления версии) необходимо выполнить следующие действия, чтобы убедиться в успешности обновления:

  1. Зайти в Kubernetes и убедиться, что подняты модули UI (audit2-ui, audit2-admin, audit2-synchronizer, audit2-controlplane), прокси-приложение (audit2-client-proxy), сервисы обработки (events-avro-kafka-to-external-kafka, events-kafka-to-external-kafka, events-kafka-to-hive, events-kafka-to-hive-proxy, events-kafka-to-solr, events-kafka-to-solr-proxy, invalid-events-kafka-to-hbase, invalid-events-kafka-to-hbase-proxy, invalid-metamodel-kafka-to-hbase, invalid-metamodel-kafka-to-hbase-proxy, invalid-operation-kafka-to-hbase, metamodel-kafka-to-hbase, metamodel-kafka-to-hbase-proxy, operation-kafka-to-external-kafka, operation-kafka-to-hbase). Для этого необходимо перейти в кластер Kubernetes и перейти во вкладку Deployments. Убедитесь, что в списке Deployments присутствуют перечисленные модули. Убедитесь, что в столбце Labels параметр app.version равен версии установленного дистрибутива. Зайдите в каждый Deployment на вкладку ReplicaSets и убедитесь, что активные Pods (столбец Status) есть только у последней реплики (столбец Created).

  2. Убедиться, что в Solr появилась коллекция audit-events. Для этого воспользуйтесь утилитой Solr Server Web UI из состава SDP.

  3. Убедиться, что в Hbase создана схема данных audit:audit_metamodels. Для этого воспользуйтесь интерфейсом Apache Ambari, перейдя в нем на сервис Hbase.

  4. Убедиться, что на HDFS созданы директории /events_avro и /events_proxy_avro. Для этого зайдите на сервер с установленным HDFS и выполните команду для просмотра директорий на HDFS.

  5. Убедиться, что на HDFS размещен файл /audit_resources/spark/lib/archives-spark-application.jar.