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

Термины и сокращения#

Термин/Аббревиатура

Определение

УЦ

Удостоверяющий центр

Jenkins

Программная система для обеспечения процесса непрерывной интеграции программного обеспечения

mTLS

Mutual Transport Layer Security — криптографический протокол взаимной (двусторонней) аутентификацией клиента и брокера, который обеспечивает безопасность транспортного уровня (Transport Layer Security)

TLS-сертификат

Transport Layer Security — криптографический протокол защиты транспортного уровня, предназначенный для защиты обмена данными в сети

CLI

Command Line Interface — интерфейс командной строки

Доступ к приложению#

Доступ к приложению осуществляется через CLI либо с помощью Jenkins.

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

Использование приложения оператором#

Сценарии использования#

Предусловия

  1. Наличие сертификатов TLS для администратора доступа. Перед началом действий поместить сертификаты в домашнюю директорию на сервере, где расположен продукт EVTD.

  2. На сервере, где расположен EVTD, создать файл ssl_adm.properties. Наполнить рекомендуемыми значениями:

security.protocol = SSL;
ssl.keystore.location — полный путь до хранилища ключа.jks;
ssl.truststore.location — полный путь до хранилища ключа.jks;
ssl.keystore.password — пароль хранилища ключа;
ssl.truststore.password — пароль хранилища сертификата ЦС;
ssl.enabled.protocols=TLSv1.2;
ssl.key.password — пароль закрытого ключа;
ssl.endpoint.dentification.algorithm.

Создание новых потоков событий#

На сервере, где расположен EVTD, выполнить команду:

/opt/Apache/kafka/bin/kafka-topics.sh --bootstrap-server hostname -f:<порт> --create --command-config ~/ssl_adm.properties --topic <наименование потока> --partitions <количество партиций> --replication-factor <фактор репликации> --config retention.ms=<сколько хранить события> --config retention.bytes=<максимальный размер партиции> --config max.message.bytes=<максимальный размер сообщения>

где topic - Наименование потока событий в соответствии с правилом наименования: <индентификатор системы-поставщика>.<тип события>EVENT.V<версия формата события>

Например: AS1.ENTITYCHANGEDEVENT.V1

partitions - Количество партиций, рассчитывается исходя из предполагаемой нагрузки; replication-factor - Фактор репликации, отвечает за отказоустойчивость потока, обычно указывается как количество брокеров Apache Kafka - 1; config retention.ms - Время хранения событий в потоке в миллисекундах, по истечении данного времени события будут удалены; config retention.bytes - Максимальный размер партиции в байтах, при его превышении самые старые события будут удалены; config max.message.bytes - Максимальный размер события в потоке в байтах. При попытке публикации события, превышающего данное значение, будет выдана ошибка.

Назначение прав на публикацию событий#

На сервере, где расположен EVTD, выполнить команду:

/opt/Apache/kafka/bin/kafka-acls.sh --bootstrap-server hostname -f:9093 --add --allow-principal <User:полное наименование сертификата (DN) без пробелов при разделении категорий> --producer --topic <наименование потока> --command-config ~/ssl_adm.properties

Назначение прав на подписку на события#

На сервере, где расположен EVTD, выполнить команду:

/opt/Apache/kafka/bin/kafka-acls.sh --bootstrap-server \hostname -f:9093 --add --allow-principal <User:полное наименование сертификата (DN) без пробелов при разделении категорий> --consumer --topic <наименование потока> --group <наименование consumerGroup потребителя> --command-config ~/ssl_adm.properties

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

Тип ошибки

Причина

Возможное решение

Ошибка аутентификации - SSL handshake failed

1. Не корректно сформировано хранилище сертификатов
2. Отсутствует параметр ssl.endpoint.identification.algorithm=

1. Получить вывод команды keytool -v -list -keystore <имя файла кейстора>, проверить в выводе, что в keystore есть PrivateKeyEntry и это именно тот сертификат, для которого выдавались права, а также что данный private key entry подписан правильным Удостоверяющим центром (далее - УЦ) (issuer)
2. Убедиться, что параметр ssl.endpoint.identification.algorithm= установлен в конфигурации клиента

Ошибка авторизации - Not authorized to access topics

1. Используется некорректный Distinguished Name (далее - DN) сертификата
2. Выполняется подключение не к тем брокерам Kafka.
3. Клиент подключается как продьюсер, а должен как консьюмер. И наоборот

1. Необходимо сверить DN сертификата с которым производится подключение, с тем который указывали при выдаче прав. Проверить отсутствие пробелов, русских букв
2. проверить настройки подключения (bootstrap.servers)
3. Проверить корректность подключения и сверить с тем, какие права выдавались

Ошибка авторизации - Not authorized to access group

Используется некорректная группа консьюмеров.

Необходимо сверить наименование consumer group в настройках с той, для которой выдавались права

Topic <topic name> not present in metadata after 60000 ms

Топик не существует

Проверить наименование топика и корректность указанных брокеров Kafka

Connection to node … terminated during authentication

Некорректная настройка окружения

1. Проверить настройки Firewall
2. Проверить настройки service entry при обращении из OpenShift

Group coordinator … is unavailable or invalid, will attempt rediscovery

Не доступен координатор группы

1. Проверить что брокер-координатор не остановился
2. Проверить сетевой доступ

Параметры настройки#

Настройки продукта задаются администратором и указаны в руководстве по установке.

Правила эксплуатации#

Дополнительные правила эксплуатации отсутствуют.