Обновление#

Обновление Platform V Audit SE (AUD) до последней версии#

Внимание! Все стендозависимые параметры заполняются администраторами стендов самостоятельно.

Обновление Kafka независимо от типа стенда#

Перед обновлением Platform V Audit SE (AUD) на любом стенде, необходимо привести состав топиков и их настройки в соответствие с таблицей.

Топик

Настройки

audit-global-events, audit-global-operations, audit-global-metamodels, audit-pcidss-events, audit-pcidss-operations, audit-pcidss-metamodels

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

audit-client-ping-topic

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

audit-metamodels-proxy, audit-metamodels-proxy-v6, audit-pcidss-metamodels-proxy, audit-pcidss-metamodels-proxy-v6

Настроить сжатие и удаление данных: 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, audit-events-proxy-v6, audit-pcidss-events-proxy, audit-pcidss-events-proxy-v6, audit-metamodels-proxy-v6-1, audit-migrated-v6-events

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

audit-events-errors, audit-operations-errors, audit-metamodels-errors, audit-events-proxy-errors, audit-metamodels-proxy-errors, audit-events-errors-dc1, audit-operations-errors-dc1, audit-metamodels-errors-dc1, audit-events-proxy-errors-dc1, audit-metamodels-proxy-errors-dc1, audit-events-errors-dc2, audit-operations-errors-dc2, audit-metamodels-errors-dc2, audit-events-proxy-errors-dc2, audit-metamodels-proxy-errors-dc2

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

audit-raw-data

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

Также необходимо настроить ACL на топиках Kafka.

Настройка ACL на основном кластере Kafka#

На текущий момент Platform V Audit SE (AUD) имеет несколько кластеров Kafka с различным функциональным назначением. Все они должны быть закрыты SSL без анонимного доступа и без автосоздания топиков, а также должны быть настроены ACL (как минимум на ПСИ и ПРОМ).

Компоненты, которые взаимодействуют с ними, следующие:

  • Клиентские модули Platform V Audit SE (AUD) 3-го поколения (audit2-client-platform.war). Эти модули работают напрямую с транспортом Kafka, у них могут быть отдельные перекрытия с индивидуальными сертификатами под конкретную АС. Обозначим их сертификаты как clientDN для клиентов в основном контуре и clientPCIDSSDN для клиентов в контуре PCI DSS. Эти сертификаты должны позволять создавать при их отсутствии топики для записи данных (если позволяют настройки Kafka), конфигурировать топики, писать данные в топики. Также эти клиенты опрашивают Kafka, то есть пишут данные в отдельный служебный топик.

  • Прокси-приложение, которое пишет в Kafka, читает метамодели из Kafka и опрашивает состояние тестовыми сообщениями. Назовем его сертификат условно auditProxyDN. Этот сертификат также предлагается использовать для всех сервисов Platform V Audit SE (AUD), разворачиваемых в OpenShift.

  • Flume, сервисы обработки, которые вычитывают события из Kafka и возвращают их в отдельные топики, в случае ошибок обработки. Все Flume используют один сертификат, назовем его условно flumeDN. Этот сертификат должен позволять создавать топики, конфигурировать, писать данные в топики, читать данные из топиков.

  • Перекладчик PCI DSS, читает данные из Kafka контура PCI DSS и перекладывает в Kafka основного контура. Имеет выделенный сертификат transDN. Этот сертификат должен позволять читать данные из всех топиков Kafka контура PCI DSS и писать данные в основную Kafka и при необходимости создавать в ней топики.

  • UI Platform V Audit SE (AUD). Он содержит в себе модуль, выполняющий сбор jmx-метрик с Kafka. Сбор выполняется без SSL. Доступ к топикам не требуется.

Для старых версий клиентского модуля 8.х и старее топики для клиентов индивидуальны для каждого модуля и имеют названия audit-MODULENAME-events, audit-MODULENAME-operations, audit-MODULENAME-metamodels.

Также в Kafka должен быть заранее создан и сконфигурирован топик audit-client-ping-topic. Он используется для определения доступности Kafka с клиента посредством записи в него тестового сообщения с заданной периодичностью. Никаких чувствительных данных в нем не содержится.

Cледующие части Platform V Audit SE (AUD) работают с транзакциями на Kafka:

  • Прокси-приложение, которое пишет в Kafka, читает метамодели из Kafka и опрашивает состояние тестовыми сообщениями. Назовем его сертификат условно auditProxyDN. Этот сертификат также предлагается использовать для всех сервисов Platform V Audit SE (AUD), разворачиваемых в OpenShift.

  • Flume, сервисы обработки, которые вычитывают события из Kafka и возвращают их в отдельные топики, в случае ошибок обработки. Все Flume используют один сертификат, назовем его условно flumeDN. Транзакции в Kafka являются ресурсом, на который надо выдавать права. Подробнее описано ниже, в пункте 7.

Исходя из этого, в ACL основной Kafka должны быть выданы следующие права:

  1. С правами "producer" (в утилите kafka-acls соответствует опции producer, в результате должны появиться права write, create, describe)

На топики:

audit-global-metamodels audit-global-events audit-global-operations audit-client-ping-topic

Для сертификатов:

clientDN (вместо этого подставить DN всех сертификатов, которые используются для клиентского модуля Platform V Audit SE (AUD) - см. артефакт audit2-client в PACMAN) transDN (вместо этого подставить DN сертификата перекладчика событий аудита PCI DSS (см. артефакт audit2-pcidss-transmitter в PACMAN)

Внимание!
При настройке ACL Kafka для доступа к топикам нельзя использовать маску с * (звездочкой). Доступ по маске запрещен по требованиям безопасности. Вместо маски необходимо явно перечислить полные названия топиков (audit-global-events, audit-global-metamodels.)

  1. С правами "producer" (в утилите kafka-acls соответствует опции producer, в результате должны появиться права write, create, describe)

На топики:

audit-metamodels-proxy audit-events-proxy audit-metamodels-proxy-v6 audit-events-proxy-v6 audit-client-ping-topic

Для сертификата:

auditProxyDN (вместо этого подставить DN сертификата, под которым прокси-приложение Platform V Audit SE (AUD) работает с Kafka (см. конфигурацию audit-proxy).

  1. С правами "read"

На топики:

audit-metamodels-proxy audit-metamodels-proxy-v6

Для сертификата:

auditProxyDN (вместо этого подставить DN сертификата, под которым прокси-приложение Platform V Audit SE (AUD) работает с Kafka (см. конфигурацию audit-proxy)).

  1. С правами "All"

На все группы (Group:LITERAL:*)

Для сертификатов:

auditProxyDN (вместо этого подставить DN сертификата, под которым прокси-приложение Platform V Audit SE (AUD) работает с Kafka (см. конфигурацию audit-proxy)).

flumeDN (вместо этого подставить DN сертификата, который используют Flume для подключения к Kafka (см. конфигурацию Flume))

  1. С правами "read"

На все топики (Topic:LITERAL:*):

flumeDN (вместо этого подставить DN сертификата, который используют Flume для подключения к Kafka (см. конфигурацию Flume))

  1. С правами "producer" (в утилите kafka-acls соответствует опции producer, в результате должны появиться права write, create, describe)

На топики:

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

audit-events-errors-dc1 audit-operations-errors-dc1 audit-metamodels-errors-dc1 audit-events-proxy-errors-dc1 audit-metamodels-proxy-errors-dc1

audit-events-errors-dc2 audit-operations-errors-dc2 audit-metamodels-errors-dc2 audit-events-proxy-errors-dc2 audit-metamodels-proxy-errors-dc2

Для сертификата:

flumeDN (вместо этого подставить DN сертификата, который используют Flume для подключения к Kafka (см. конфигурацию Flume))

  1. С правами "producer" (в утилите kafka-acls соответствует опции producer, в результате должны появиться права write, create, describe)

На топики:

audit-XXX-metamodels audit-XXX-events audit-XXX-operations audit-client-ping-topic

Для сертификатов:

DN сертификата системы XXX, для которой выделены отдельные топики. Если такие системы известны.

  1. Принципалу auditProxyDN надо выдать права producer (write,create,describe) на все transactionId (transactionId = ‘*')

  2. Принципалу flumeDN надо выдать права (read) на все transactionId (transactionId = ‘*')

Настройка брокеров Kafka#

В этом разделе представлена типовая конфигурации для ПРОМ.

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

  1. broker.id - уникальный идентификатор сервера Kafka в кластере.

  2. log.dir - директория с данными (не логами) этого сервера Kafka.

  3. zookeeper.connect - строка со связками IP:PORT ZooKeeper для Kafka.

  4. listeners - директива о том какой порт открывать, на каком IP, по какому протоколу.

  5. Пути и пароли до сертификатов для случая "listeners=SSL":

    • ssl.keystore.location

    • ssl.truststore.location

    • ssl.keystore.password

    • ssl.truststore.password

    • ssl.key.password

  6. super.users - список пользователей с повышенными привилегиями на кластере. Может быть указан сертификат.

  7. zookeeper.ssl.client.enable - подключение к Zookeeper по SSL.

  8. Пути и пароли до сертификатов для случая "zookeeper.ssl.client.enable=true":

    • zookeeper.ssl.keystore.location

    • zookeeper.ssl.keystore.password

    • zookeeper.ssl.truststore.location

    • zookeeper.ssl.truststore.password

######[ КОНФИГУРАЦИЯ ПРОМ ОПТИМАЛЬНА ДЛЯ 5 УЗЛОВ В КЛАСТЕРЕ ]####

##########################[ MAIN ]#########################
broker.id = [ Стендозависимый параметр ] example: 4
log.dir = [ Стендозависимый параметр ] example: /kafkadata

########################[ ZOOKEEPER ]######################
zookeeper.connect = [ Стендозависимый параметр ] example: 192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181,192.168.0.4:2181,192.168.0.5:2181
zookeeper.connection.timeout.ms = 30000
zookeeper.session.timeout.ms = 6000

#####################[ AUTHENTICATION ]####################
listeners= [ Стендозависимый параметр ] example: SSL://192.168.1.1:9093
security.inter.broker.protocol = SSL
sasl.enabled.mechanisms = GSSAPI
sasl.mechanism.inter.broker.protocol = GSSAPI
sasl.kerberos.service.name = kafka

ssl.keystore.location = [ Стендозависимый параметр ] example: ssl/kafka-server.jks
ssl.truststore.location = [ Стендозависимый параметр ] example: ssl/kafka-server.jks
ssl.keystore.password = [ Стендозависимый параметр ] example: changeit
ssl.truststore.password = [ Стендозависимый параметр ] example: changeit
ssl.key.password = [ Стендозависимый параметр ] example: changeit
ssl.client.auth = required
ssl.enabled.protocols = TLSv1.2

#####################[ TLS kafka zookeeper ]###################
zookeeper.ssl.client.enable=true
zookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty
zookeeper.ssl.keystore.location= [ Стендозависимый параметр ] example: /opt/Apache/stores/keystore-audit-kafka.jks
zookeeper.ssl.keystore.password= [ Стендозависимый параметр ] example: changeit
zookeeper.ssl.truststore.location= [ Стендозависимый параметр ] example: /opt/Apache/stores/truststore-audit-kafka.jks
zookeeper.ssl.truststore.password= [ Стендозависимый параметр ] example: changeit
zookeeper.ssl.endpoint.identification.algorithm =
zookeeper.ssl.enabled.protocols=TLSv1.2
ssl.cipher.suites = TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

#####################[ AUTHORIZATION ]#####################
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
super.users= [ Стендозависимый параметр ] example: User:CN=ApacheKafka-Audit2-Transport-MC,OU=00CA,O=Company Name,C=RU
allow.everyone.if.no.acl.found=false

###################[ ZK AUTHORIZATION ]####################
zookeeper.set.acl=true

#########################[ TOPICS ]########################
auto.create.topics.enable = false
delete.topic.enable = true
num.partitions = 21
offsets.topic.replication.factor = 3
transaction.state.log.replication.factor = 3
transaction.state.log.min.isr = 3
# Potentially allow to increase message size up to 5MB.
# See also:
# message.max.bytes on broker
# max.message.bytes on topic
# Increasing message size up to 5 MB and more is not recommended
# and is generally a bad practice affecting:
# heap size x5, potential latency increase / throughput decrease
replica.fetch.max.bytes = 5242880

#######################[ CONSUMERS ]#######################
group.max.session.timeout.ms = 300000

############# [ GROUP COORDINATOR SETTINGS ] ##############
# For a better out-of-the-box experience for development
# and testing set this value to 0.
# In production environments the default value of 3 seconds
# is more suitable as this will help to avoid unnecessary,
# and potentially expensive, rebalances during application
# startup.
group.initial.rebalance.delay.ms = 3000

#####################[ SOCKET SERVER ]#####################
socket.send.buffer.bytes = 102400
socket.receive.buffer.bytes = 102400
socket.request.max.bytes = 104857600
num.network.threads = 6
num.io.threads = 8
num.replica.fetchers = 2
num.recovery.threads.per.data.dir = 1

#########################[ LOGS ]##########################

# Выставляется в зависимости от объемов дисков и требований по сохранности для ПРОМ 168 hours это 7 days
log.retention.hours = 168

# 1073741824 bytes is 1 GB
log.segment.bytes = 1073741824
log.retention.check.interval.ms = 300000
log.cleaner.enable = true

############## Confluent Metrics Reporter #################
confluent.support.customer.id = anonymous

#####################[ ADDITIONAL PROPERTIES SPECIFIC FOR Platform V Audit SE (AUD) ]#####################

# 43200 minutes in 30 days
offsets.retention.minutes = 43200
max.incremental.fetch.session.cache.slots = 100000
log.roll.hours = 1
queued.max.requests = 1000
# 2097152 bytes is 2 MB
message.max.bytes = 2097152
default.replication.factor = 3
min.insync.replicas = 2
log.cleaner.threads = 2
unclean.leader.election.enable = false
compression.type = snappy

# The endpoint identification algorithm to validate server hostname using server certificate. default: https
# empty string mean that hostname verification is disabled
ssl.endpoint.identification.algorithm =
listener.name.internal.ssl.endpoint.identification.algorithm =

Тестовые среды#

Cloudera Manager (Install_Eip)#

При обновлении Cloudera Manager средствами Install_Eip, выберите:

Шаг 1 - Обновление Cloudera 6.

OpenShift (Install_Eip)#

Перед обновлением Platform V Audit SE удалите из Install_EIP старые каталоги с сертификатами.

  1. Добавьте в файл <EIP STAND_NAME>/<AUDIT_DIR>/actions.xml шаг обновления OpenShift:

<?xml version="1.0" encoding="UTF-8"?>
<Actions>
  <Deploy>
    <Action name="deploy_to_openshift" visible="true">
      <context/>
      <mode>all</mode>
      <default>true</default>
      <Description>Установка приложения на OpenShift</Description>
      <type>groovy</type>
      <Script>bin/roles/sbt-wildfly-cfg/openshift/deploy_to_openshift_multi.groovy</Script>
    </Action>
 </Deploy>
</Actions>
  1. В файле <EIP STAND_NAME>/<AUDIT_DIR>/os_namespaces.yml укажите настройки для подключения к OpenShift:

---                                               # (опциональный) нотификация, что это YAML
jenkinsVaultCredId: vault_cred             # (опциональный)Если vault id = vault_cred, то указывать не нужно
projects:                                         # (обязательный) структура
- name: "first"                                   # (опциональный) имя секции
  openShiftNamespace: example-audit2                  # (обязательный) В YAML-ах поставки можете использовать ${NAMESPACE} и тогда это значение применится при развертывании.
  openShiftURL: api.example.com:6443                          # (обязательный) В YAML-ах поставки можете использовать ${OPENSHIFT_CLUSTER} и тогда значение url1 без префикса "api." применится при развертывании.
  oc_token: example.audit2_Cloud.audit_token # (обязательный) ID токена Jenkins сервис-аккаунта вашего namespace, который завели в пространстве вашей job Jenkins
  os_props: "os_props1.conf"                      # (опциональный) Параметры подсистемы в конкретном namespace. Если ваш os_props = os_props.conf, то указывать не нужно. В общем случае результирующий файл будет равен os_props.conf + os_props1.conf.
#    os_cluster_props: "os_cluster_props1.conf"      # (опциональный) Параметры кластера для всех подсистем. Лежат в корне стенда. Следует сюда выносить переменные только если эти переменные будут использоваться другими модулями в кластере. Если ваш os_cluster_props = os_cluster_props.conf, то указывать не нужно. В общем случае результирующий файл будет равен os_props.conf + os_cluster_props.conf + os_cluster_props1.conf.
    deleteResources: false                    # (опциональный) Удалять ресурсы перед развертыванием - true/false. По умолчанию - false. Если true, то сначала ищет файл delete.yaml и удаляет только указанные ресурсы. Если файла нет, то удаляет все ресурсы из поставки + все ресурсы из конфигов подсистемы. Если содержимое поставки изменилось, то могут удалиться не все ресурсы. Рекомендуем установить этот параметр в true и указать в файле delete.yaml ресурсы audit-proxy-egress-template, ott-settings-egress и egressgateway-audit-istio-${STAND_NAME}.
  
#    os_delete: delete1.yaml                         # (опциональный) Параметры списка ресурсов подсистемы для удаления в конкретном namespace. Если не указан, то сначала ищем общий файл /openshift/delete.yaml. Если и его нет, то формируется автоматически.
    validateDeploy: false                            # Установите false, потому что эта функция недоступна для Platform V Audit SE (AUD). 
    backupResources: false                           # Установите false, потому что эта функция недоступна для Platform V Audit SE (AUD).
    rollback:                                       # (опциональный) В этой секции находятся параметры отката.
      - needToRollback: false                          # Установите false, потому что эта функция недоступна для Platform V Audit SE (AUD).
#
#  - name: "second"
#    openShiftNamespace: example2-audit2
#    openShiftURL: api.example2.example.com:6443
#    oc_token: audit_2_token
#    os_props: "os_props2.conf"
#    deleteResources: true                           # (опциональный) Удалять ресурсы перед развертыванием - true/false. По умолчанию - false. Если true, то сначала ищет файл delete.yaml и удаляет только указанные ресурсы. Если файла нет, то удаляет все ресурсы из поставки + все ресурсы из конфигов подсистемы. Если содержимое поставки изменилось, то могут удалиться не все ресурсы. Рекомендуем установить этот параметр в true и указать в файле delete.yaml ресурсы audit-proxy-egress-template, ott-settings-egress и egressgateway-audit-istio-${STAND_NAME}.
#    #    os_delete: delete1.yaml                         # (опциональный) Параметры списка ресурсов подсистемы для удаления в конкретном namespace. Если не указан, то сначала ищется общий файл /openshift/delete.yaml, если и его нет, то формируется автоматически.
#    validateDeploy: false                            # Установите false.
#    backupResources: false                           # Установите false.
#    rollback:                                       # (опциональный) В этой секции находятся параметры отката.
#      - needToRollback: false                       # Установите false.
  1. В файл <EIP STAND_NAME>/<AUDIT_DIR>/os_yaml_dirs.conf добавьте следующие строки:

/modules/audit2-proxy/configs
/modules/audit2-divider/configs
/modules/audit2-indicator/configs

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

Также есть дополнительный способ, как избежать установки компонентов и файлов, которые вам не нужны: можно указать в файле <EIP STAND_NAME>/<AUDIT_DIR>/os_ignore.conf список файлов, находящихся по путям из os_yaml_dirs.conf, которые нужно проигнорировать. Подробнее об этом в следующем пункте 4.

  1. В файле <EIP STAND_NAME>/<AUDIT_DIR>/os_ignore.conf укажите список файлов, игнорируемых при развертывании:

Если планируете включать интеграцию с сервисом Secret Management System, добавьте такие строки:

audit2-divider-deployment.yml,audit2-proxy-dc.yml,audit2-indicator-dc.yml

Если не планируете использовать сервис Secret Management System, добавьте такие строки:

audit2-divider-dc-secman.yml,audit2-proxy-dc-secman.yml,audit2-indicator-dc-secman.yml
  1. Скопируйте из дистрибутива содержимое директории distrib-<version>-OS/modules/audit2-proxy/configs/configMaps в директорию <EIP STAND_NAME>/<AUDIT_DIR>/openshift/configs/.

  2. Заполните файл <EIP STAND_NAME>/<AUDIT_DIR>/openshift/configs/audit2-proxy-acl-cfg/acl.yml. В этом файле укажите CN сертификатов клиентских модулей, которым разрешено записывать данные в Platform V Audit через API и при необходимости установите квоту на ширину канала, которые эти модули могут занять, записывая потоки своих данных. Пример конфигурации ACL Proxy:

    acl:
      enable: true
      quotas_refresh_interval_ms: 1000
      quotas: # Квота на запись в Platform V Audit. Мегабайты в секунду.
        audit: 100
        spas: 20
    

    Здесь:

    • enable — состояние фильтра: true = включен, false = выключен;

    • quotas_refresh_interval_ms: периодичность обновления данных о расходе квоты, в миллисекундах; рекомендуем указать значение 1000 миллисекунд (одна секунда);

    • quotas — коллекция квот, содержащая пары «ключ — значение» (CN — квота), также выступая в качестве «белого списка»; значение квоты указывается в мегабайтах в секунду. Настроек по умолчанию не предусмотрено, поэтому вам нужно явно указать параметры для вашей инсталляции Platform V Audit SE (AUD).

  3. Если не планируете использовать Secret Management System:

    a. Cкопируйте из дистрибутива все папки из distrib--OS/other/utils/openshift/certs в директорию конфигурации EIP <EIP STAND_NAME>/<AUDIT_DIR>/openshift/certs.

    b. Cкопируйте из дистрибутива все папки из distrib-<version>-OS/modules/<MODULE_NAME>/configs/certs в директорию конфигурации EIP <EIP STAND_NAME>/<AUDIT_DIR>/openshift/certs.

    c. Заполните в директории <EIP STAND_NAME>/<AUDIT_DIR>/openshift/certs все вложенные файлы сертификатами и паролями от них.

    d. Зашифруйте с помощью ansible-vault все файлы в директории <EIP STAND_NAME>/<AUDIT_DIR>/openshift/certs. Внимание: менять названия папок и файлов нельзя.

  4. Сгенерируйте конфигурации Ingress, Egress и Egress-additional-configs. Поместите получившийся набор файлов-конфигураций в директорию /<AUDIT_DIR>/openshift/templates. Запустите скрипт distrib--OS/other/utils/openshift/audit-proxy-ingress-config-generator/create-ingress-config-file.sh. Параметры для запуска:

Вывод подсказки по использованию:
sh create-ingress-config-file.sh -h

Используются HTTP роуты:
sh create-ingress-config-file.sh --route-protocol http

Используются HTTPS роуты. Сертификаты будут взяты из OSE/K8s:
sh create-ingress-config-file.sh --route-protocol https

Используются HTTPS роуты. Сертификаты будут взяты из Secret Management System:
sh create-ingress-config-file.sh --route-protocol https -s
    
Используются HTTPS роуты. Сертификаты будут взяты из Secret Management System. Включен HorizontalPodAutoscaler для подов Ingress:
sh create-ingress-config-file.sh --route-protocol https -s --hpa
    

Запустите скрипт distrib--OS/other/utils/openshift/audit-proxy-egress-config-generator/create-egress-config-file.sh. Параметры для запуска:

Вывод подсказки по использованию:
sh create-egress-config-file.sh -h

Генерация конфигурации в обычном режиме работы. Сертификаты будут взяты из OSE/K8s:
sh create-egress-config-file.sh

Генерация конфигурации в режиме интеграции с Secret Management System. Сертификаты будут взяты из Secret Management System:
sh create-egress-config-file.sh --secman
    
Генерация конфигурации в режиме интеграции с Secret Management System. Сертификаты будут взяты из Secret Management System. Включен HorizontalPodAutoscaler для подов Egress.  
sh create-egress-config-file.sh --secman --hpa
         

Для направления исходящего из pods Platform V Audit трафика в сервисы, не присутствующие в кластере OSE/K8s (Solr, Zookeeper), необходимо создать ресурсы:

ServiceEntry
Gateway
Service
VirtualService
DestinationRule

Совокупность конфигураций в этих ресурсах дают определенному трафику (в сторону определенного в конфигурации порта, протокола, хоста) возможность выходить из кластера OSE/K8s.

Необходимо создать данный набор ресурсов для каждого хоста, находящегося вне OSE/K8s, к которому будет происходить подключение, с указанием его порта и протокола. Используйте для этого скрипт distrib--OS/other/utils/egress-additional-config-generator/create-egress-additional-config.sh.

Краткое руководство по пользованию скриптом (readme.md) находится в папке egress-additional-config-generator. Результатом работы скрипта является файл конфигурации OSE с типом template - ${build_dir}/egress-${service_name}-additional-config.yaml Описание параметров:

--hosts	FQDN_1,FQDN_2,FQDN_3
Список через запятую хостов в виде FQDN, на которых работает внешний для k8s/OSE сервис (например Kafka).	
--port 9093
Порт внешнего сервиса, работающего на хостах из параметра `--hosts`. 
--mesh-port	9092
Порт, указанный в конфигурации OSE приложения (например, audit2-proxy) для подключения к внешнему сервису. Необязательный.
--protocol TCP 
Протокол, по которому можно подключиться к внешнему сервису. Возможные варианты: `HTTP/HTTPS/TCP/TLS`. Регистр неважен.	
--service kafka-01
Уникальное имя сервиса, до которого требуется открыть доступ. Например: `kafka-01`,`solr`,`logger`. Необходимо для исключения варианта пересечения конфигураций.
Допускается использование латинских букв [A-Z,a-z], цифр [0-9], дефиса "-".
--egress-origination
Включение функции Egress TLS Origination, обеспечивающей организацию TLS на поде Egress.

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

Создание конфигурации для подключения к 3-х нодовому кластеру <Внешнего_сервиса> по TCP.
sh create-egress-additional-config.sh --hosts FQDN_1,FQDN_2,FQDN_3 --port 9092 --protocol tcp --service service-name
Создание конфигурации для подключения к 3-х нодовому кластеру <Внешнего_сервиса> по TLS (TLS организуется на прикладном поде).
sh create-egress-additional-config.sh --hosts FQDN_1,FQDN_2,FQDN_3 --port 9093 --protocol tls --service service-name
Создание конфигурации для подключения к 3-х нодовому кластеру <Внешнего_сервиса> по TLS (TLS организуется на Egress поде). Приложение должно подключаться без SSL/TLS по порту `mesh-port`.
sh create-egress-additional-config.sh --hosts FQDN_1,FQDN_2,FQDN_3 --port 9093 --protocol tls --service service-name --egress-origination --mesh-port 9093

Создание конфигурации для подключения к 3-х нодовому кластеру <Внешнего_сервиса> по HTTP.
sh create-egress-additional-config.sh --hosts FQDN_1,FQDN_2,FQDN_3 --port 8080 --protocol HTTP --service service-name
Создание конфигурации для подключения к 3-х нодовому кластеру <Внешнего_сервиса> по HTTPS (TLS организуется на прикладном поде).
sh create-egress-additional-config.sh --hosts FQDN_1,FQDN_2,FQDN_3 --port 443 --protocol HTTPS --service service-name
Создание конфигурации для подключения к 3-х нодовому кластеру <Внешнего_сервиса> по HTTPS (TLS организуется на Egress поде). Приложение должно подключаться по БЕЗ ssl/tls по порту `mesh-port`!
sh create-egress-additional-config.sh --hosts FQDN_1,FQDN_2,FQDN_3 --port 443 --protocol HTTPS --service service-name --egress-origination --mesh-port 8080

Для каких сервисов требуется отрывать доступ:

Kafka (MAIN_KAFKA, FALLBACK_KAFKA) Solr (Cloudera) Zookeeper (Cloudera) Secret Management System Kerberos (IPA) Server Журналирование (LOGA)
Kafka (JMX port)
Все Flume в Cloudera (JMX port)

Для каждого внешнего сервиса требуется создать конфигурацию с помощью скрипта create-egress-additional-config.sh, кроме Secret Management System, так как для него подключение специфичное и уже включено в скрипт create-egress-config-file.sh.

Для исключения случая наложения конфигураций в OSE/K8s, требуется указывать в скрипте уникальное значение флага --service для каждого сервиса, к которому открывается доступ.

Рекомендуемые команды для каждого внешнего сервиса:

Kafka (MAIN_KAFKA, FALLBACK_KAFKA) - Возможен любой вариант подключения (TCP/PLAINTEXT, TLS на поде, TLS на Egress).

sh create-egress-additional-config.sh --hosts kafka1.fqdn.example.com,kafka2.fqdn.example.com,kafka3.fqdn.example.com --port 9092 --protocol tcp --service kafka-01
sh create-egress-additional-config.sh --hosts kafka1.fqdn.example.com,kafka2.fqdn.example.com,kafka3.fqdn.example.com --port 9093 --protocol tls --service kafka-02
sh create-egress-additional-config.sh --hosts kafka1.fqdn.example.com,kafka2.fqdn.example.com,kafka3.fqdn.example.com --port 9093 --protocol tls --service kafka-03 --egress-origination --mesh-port 9093


Solr (Cloudera) - использовать можно только варианты HTTP и HTTPS на прикладном поде, так как обычно приложение получает порт Solr сервера из ZooKeeper и вручную нет возможности его задать.

sh create-egress-additional-config.sh --hosts solr1.fqdn.example.com,solr2.fqdn.example.com,solr3.fqdn.example.com --port 8983 --protocol HTTP --service solr
sh create-egress-additional-config.sh --hosts solr1.fqdn.example.com,solr2.fqdn.example.com,solr3.fqdn.example.com --port 8985 --protocol HTTPS --service solr

ZooKeeper (Cloudera) - Cloudera 6 не дает возможности закрыть Zookeeper с помощью TLS, поэтому возможен только вариант подключения по TCP.

sh create-egress-additional-config.sh --hosts zk1.fqdn.example.com,zk2.fqdn.example.com,zk3.fqdn.example.com --port 2181 --protocol tcp --service cloudera-zk

Secret Management System - Не требуется генерация, так как для него подключение специфичное и уже включено в скрипт create-egress-config-file.sh.

Kerberos (IPA) Server - обычно Kerberos работает на порту 88 по протоколу TCP.

sh create-egress-additional-config.sh --hosts kerberos.server.example.com --port 88 --protocol tcp --service kerberos

Журналирование (LOGA) - в Logger-sidecar нет требуемых сертификатов для подключения к Logger-server, поэтому возможные подключения HTTP и HTTPS через Egress.

Создание конфигурации для подключения к 3-х нодовому кластеру <Внешнего_сервиса> по HTTP.
sh create-egress-additional-config.sh --hosts logger.fqdn.example.com --port 8080 --protocol HTTP --service logger
sh create-egress-additional-config.sh --hosts logger.fqdn.example.com --port 443 --protocol HTTPS --service logger --egress-origination --mesh-port 8080
  1. Приведите файл конфигурации <EIP STAND_NAME>/<AUDIT_DIR>/openshift/os_props.conf к виду файла os_props.conf из дистрибутива (distrib-<version>-OS/doc/os_props.conf).

  2. Заполните стендозависимые параметры в os_props.conf.

Обязательны к заполнению:

APPLICATION_ROUTE - FQDN хоста для приема REST API запросов клиентов Platform V Audit SE (AUD).  
APPLICATION_NAMESPACE - Namespace приложения. Зайдите в ваш проект в OpenShift. Имя проекта равно этой переменной.
APPLICATION_ROUTE_WITH_OTT - FQDN хоста для приема REST API запросов клиентов Platform V Audit SE (AUD), c авторизацией по One-Time-Password (OTT).
APPLICATION_GEO_ROUTE - FQDN хоста для приема REST API запросов клиентов Platform V Audit SE (AUD), при работе через схему гео-резервирования. 
APPLICATION_GEO_ROUTE_WITH_OTT - FQDN хоста для приема REST API запросов клиентов Platform V Audit SE (AUD), c авторизацией по One-Time-Password (OTT), при работе через схему гео-резервирования.
APPLICATION_REPLICAS_COUNT - Количество Pods для приложения Platform V Audit SE (AUD). Например, 4.
AUDIT_PROXY_SERVICE_NAME - Указано в OpenShift > Networking > Services > Name сервиса Platform V Audit SE (AUD). Например, audit2-client-proxy-lb.
AUDIT_DOCKER_REPOSITORY - Репозиторий для docker images прокси-приложения Platform V Audit SE (AUD).
AUDIT_LIMITS_CPU - Лимит на процессорный ресурс для прокси-приложения Platform V Audit SE (AUD). Установите значение 400m.
AUDIT_LIMITS_MEMORY - Лимит на память для прокси-приложения Platform V Audit SE (AUD). Установите значение 1Gi.
AUDIT_REQUESTS_CPU - Необходимое количество процессорного ресурса для прокси-приложения Platform V Audit SE (AUD). Установите значение 250m.
AUDIT_REQUESTS_MEMORY - Необходимое количество памяти для прокси-приложения Platform V Audit SE (AUD). Установите значение 900Mi.
EGRESS_LIMITS_CPU - Лимит на процессорный ресурс для сервиса Egress. Установите значение 200m.
EGRESS_LIMITS_MEMORY - Лимит на количество памяти для сервиса Egress. Установите значение 250Mi.
EGRESS_REQUESTS_CPU - Необходимое количество процессорного ресурса для сервиса Egress. Установите значение 150m.
EGRESS_REQUESTS_MEMORY - Необходимое количество памяти для сервиса Egress. Установите значение 150Mi.
EGRESS_REPLICAS - Количество Pods для сервиса EGRESS. Например, 2.
LOGGER_SERVICE_PORT - Порт, по которому подключается Logger sidecar к сервису Logger, например, 8080. Заменяется на Egress на реальный порт сервиса Logger.
LOGGER_SIDECAR_IMAGE - Logger image URL в формате image_name@sha256:image_hash.
LOGGER_SIDECAR_LIMITS_MEMORY - Лимит на количество памяти для sidecar Logger. Установите значение 32Mi.
LOGGER_SIDECAR_LIMITS_CPU - Лимит на процессорный ресурс для sidecar Logger. Установите значение 200m.
LOGGER_SIDECAR_REQUESTS_MEMORY - Необходимое количество памяти для sidecar Logger. Установите значение 16Mi.
LOGGER_SIDECAR_REQUESTS_CPU - Необходимое количество процессорного ресурса для sidecar Logger. Установите значение 100m.
LOGGER_KAFKA_BOOTSTRAP_SERVERS - Список серверов Kafka для отправки логов OSE сервисов AUDT, в формате IP1:PORT,IP2:PORT,IP3:PORT.
LOGGER_KAFKA_TOPIC - Имя топика Kafka, куда будут складироваться логи OSE сервисов AUDT. Необходимо завести заявку на LOGE для выделения топика, по их процессу подключения к системе. Например, audit2-logs.
SERVER_MAX_HTTP_HEADER_SIZE - Максимальный размер http-заголовков запросов, принимаемых сервером Platform V Audit (пример: 20000)
STAND_NAME - Параметр, дающий уникальность имен конфигураций OpenShift для случаев, когда в одном кластере OpenShift расположено несколько инсталляций Platform V Audit SE (AUD).
MAIN_KAFKA_BOOTSTRAP_SERVERS=IP1:PORT,IP2:PORT,IP3:PORT - Основные сервера Kafka вашего стенда, откуда вычитываются сообщения.
FALLBACK_KAFKA_BOOTSTRAP_SERVERS=IP1:PORT,IP2:PORT,IP3:PORT - Резервные сервера Kafka вашего стенда.
PROXY_KAFKA_SECURITY_PROTOCOL - Протокол подключения к кластеру Kafka. Укажите PLAINTEXT или SSL. Если для подключения к Kafka используются сертификаты Egress, то этот параметр должен иметь значение PLAINTEXT. 
PROXY_KAFKA_TOPIC_EVENT - Топик Kafka, в который audit-proxy отправляет события. Укажите audit-events-proxy-v6.
PROXY_KAFKA_TOPIC_METAMODEL - Топик Kafka, в который audit-proxy отправляет метамодели. Укажите audit-metamodels-proxy-v6.
PROXY_METAMODEL_CACHE_ENABLE - Состояние кеша метамоделей - включен/выключен (true/false). По умолчанию включен. В случае серьезных проблем с потреблением оперативной памяти в приложении audit-proxy рекомендуется установить значение false. Но в этом случае будет отключена проверка событий по метамодели при регистрации через REST API, события будут зарегистрированы в хранилищах Platform V Audit SE, но в случае отсутствия метамодели в хранилище не будут загружены описания событий и их параметров.
PROXY_METAMODEL_CACHE_TYPE - Тип кеша метамоделей: guava - умный вытесняющий кеш на основе библиотеки Guava; native - кеш на основе ConcurrentHashMap, без реализации вытеснения. Заполняется до размера PROXY_METAMODEL_CACHE_MAX_SIZE, после чего операции добавления игнорируются. По умолчанию установлено значение guava. В случае высокого потребления оперативной памяти приложением audit-proxy, рекомендуем попробовать использовать значение native. 
PROXY_METAMODEL_CACHE_MAX_SIZE - Максимальный размер кеша метамоделей в audit-proxy. По умолчанию - 10000 метамоделей. Значение должно соответствовать количеству метамоделей, зарегистрированных в хранилище метамоделей. При необходимости снизить потребление оперативной памяти в приложении audit-proxy значение может быть уменьшено (например, в два раза). В этом случае при регистрации первых событий проверка по метамодели не будет выполняться, а затем недостающие метамодели будут догружены в audit-proxy взамен редко используемых. 
PROXY_ADDITIONAL_JVM_OPTS - Параметр для добавления Java Options в ConfigMap Audit2-Proxy. Перечисление через пробел. Можно оставить пустым.
CONTAINER_OTT_IMAGE - OTT image URL в формате image_name@sha256:image_hash.
SIDECAR_OTT_LIMITS_CPU - Лимит на процессорный ресурс для sidecar OTT. Установите значение 300m.
SIDECAR_OTT_LIMITS_MEMORY - Лимит на память для sidecar OTT. Установите значение 500Mi.
SIDECAR_OTT_REQUESTS_CPU - Необходимое количество процессорного ресурса для sidecar OTT. Установите значение 200m.
SIDECAR_OTT_REQUESTS_MEMORY - Необходимое количество памяти для sidecar OTT. Установите значение 300Mi.
USE_ISTIO - Включение и выключение sidecar Istio. Укажите true или false.
CONTAINER_ISTIO_PROXY_IMAGE - Envoy image URL в формате image_name@sha256:image_hash.
ISTIO_CONTROL_PLANE - Настройка для sidecar Istio. Зайдите в ваш проект в OpenShift > Projects > Labels > metadata.labels.maistra.io/owner.
CONTROL_PLANE_ISTIOD_SERVICE_NAME - Имя сервиса ISTIOD. Например, istiod-<ISTIO_CONTROL_PLANE>. Значение для вашего namespace зависит от подключенной Control Plane. Точное значение может подсказать администратор Control Plane.
CONTROL_PLANE_ISTIOD_SERVICE_PORT - Порт сервиса ISTIOD. Например, 15012. Значение для вашего namespace зависит от подключенной Control Plane. Точное значение может подсказать администратор Control Plane.
CONTROL_PLANE_JAEGER_SERVICE_NAME - Имя сервиса Jaeger. Например, synapse-tracer-svc. Значение для вашего namespace зависит от подключенной Control Plane. Точное значение может подсказать администратор Control Plane.
CONTROL_PLANE_JAEGER_SERVICE_PORT - Порт сервиса Jaeger. Например, 8788. Значение для вашего namespace зависит от подключенной Control Plane. Точное значение может подсказать администратор Control Plane.
ISTIO_META_DNS_AUTO_ALLOCATE - Включение и выключение режима автоопределения виртуального IP-адреса для внешнего хоста. Принимает значения true или false. По умолчанию - false. При значении true, требуется чтобы в ServiceEntry внешних хостов поле "resolution" имело значение NONE. При значении false, поле "resolution" может принимать значение DNS.
ISTIO_SIDECAR_REQUEST_CPU - Необходимое количество процессорного ресурса для sidecar Istio. Установите значение 250m.
ISTIO_SIDECAR_LIMIT_CPU - Лимит на процессорный ресурс для sidecar Istio. Установите значение 300m.  
ISTIO_SIDECAR_REQUEST_MEM - Необходимое количество памяти для sidecar Istio. Установите значение 450Mi.
ISTIO_SIDECAR_LIMIT_MEM - Настройка для sidecar Istio. Установите значение 800Mi.
INGRESS_REPLICAS_COUNT - Количество Pods для сервиса INGRESS. Например, 2.
INGRESS_LIMITS_CPU - Лимит на процессорный ресурс для сервиса Ingress. Установите значение 400m.
INGRESS_LIMITS_MEMORY - Лимит на память для сервиса Ingress. Установите значение 250Mi.
INGRESS_REQUESTS_CPU - Необходимое количество процессорного ресурса для сервиса Ingress. Установите значение 300m.
INGRESS_REQUESTS_MEMORY - Необходимое количество памяти для сервиса Ingress. Установите значение 150Mi.
INDICATOR_LIMIT_CPU - Лимит на процессорный ресурс для сервиса Indicator. Установите значение 300m.
INDICATOR_LIMIT_MEM - Лимит на память для сервиса Indicator. Установите значение 500Mi.
INDICATOR_REQUEST_CPU - Необходимое количество процессорного ресурса для сервиса Indicator. Установите значение 200m.
INDICATOR_REQUEST_MEM - Необходимое количество памяти для сервиса Indicator. Установите значение 300Mi. 
HBASE_ZOOKEEPER_QUORUM - FQDN серверов ZooKeeper, указанные через запятую. Например, 1.example.com,2.example.com. FQDN можно узнать в Cloudera Manager > ZooKeeper > Instances.
HBASE_RPC_PROTECTION - Уровень шифрования RPC-взаимодействия между клиентом Hbase и сервером. Значение выставляется таким же, какое прописано в конфигурации Hbase Cloudera. Возможные значения: authentication, integrity, privacy.
KUBERNETES_VERSION - Версия Kubernetes.
LOGGER_SERVICE_HOSTNAME - URL сервиса Журналирование (LOGA).
OTT_SERVICE_HOSTS - Список IP1:PORT1, IP2:PORT2 на которых расположен сервис ОТТ, относящийся к вашему стенду.
OTT_AUTH_TLS_TRUST_MODE - Режим авторизации на Ingress (через OTT) с аутентификацией клиентов по mTLS. Может принимать значение true или false.
OTT_CLIENT_BILLING_ACCOUNT - Параметр OTT_CLIENT_BILLING_ACCOUNT нужен для метрики биллинга TokenRequestCount на сервере, чтобы различать, какой сервис какие токены запрашивает. Подробную инструкцию по заполнению параметра смотрите в Руководстве администратора OTTS, в разделе Формат метрики TokenRequestCount.
MASTER_HBASE_PRINCIPAL - "hbase/<master_host>@<realm>". Principal master-сервера hbase. <master_host> - хост master-сервера hbase. <realm> - realm Kerberos, используемый для сервера. Значение должно совпадать с realm в файле krb5.conf, а также с realm, обозначенным в настройках стенда Cloudera. Данный principal должен содержаться в соответствующем ему keytab-файле.
REGION_HBASE_PRINCIPAL - "hbase/_HOST@<realm>". Principal region-сервера hbase. <realm> - realm Kerberos, используемый для сервера. Значение должно совпадать с realm в файле krb5.conf, а также с realm, обозначенным в настройках стенда Cloudera.
KERBEROS_ENABLED - Если Hbase в Cloudera защищен при помощи Kerberos, укажите значение true. Если не защищен, укажите значение false.
DIVIDER_USE_ISTIO - Использование Istio в сервисе divider. Укажите true или false.
DIVIDER_LIMIT_CPU - Лимит на процессорный ресурс для сервиса divider. Установите значение 300m.
DIVIDER_LIMIT_MEM - Лимит на память для сервиса divider. Установите значение 500Mi.
DIVIDER_REQUEST_CPU - Необходимое количество процессорного ресурса для сервиса divider. Установите значение 200m.
DIVIDER_REQUEST_MEM - Необходимое количество памяти для сервиса divider. Установите значение 300Mi.
DIVIDE_STRATEGY - Настройка ротации коллекций Solr. Возможные параметры - timebased или force. Параметр timebased заменяет коллекцию в write-alias только в том случае, если самая свежая коллекция в этом alias была создана более DIVIDER_SCHEDULER_PERIOD_DIVIDE_DATA_MINUTES минут назад. Параметр force принудительно очищает write-alias от находящихся там коллекций и добавляет туда новую. Рекомендуемый - timebased.
DIVIDER_RUNTIME_COLLECTION_STORING_MINUTES - Максимальное время хранения текущих коллекций оперативного хранилища в Solr (в минутах). Рекомендуемое значение - 129600.
DIVIDER_ARCHIVE_COLLECTION_STORING_MINUTES - Максимальное время хранения восстановленных архивных коллекций (в минутах). Рекомендуемое значение - 7200.
DIVIDER_SCHEDULER_PERIOD_DIVIDE_DATA_MINUTES - Интервал в минутах, с которым происходит создание новой коллекции на запись и замена на неё старой. Рекомендуемое значение - 1440.
DIVIDER_SCHEDULER_PERIOD_COLLECT_METADATA_MINUTES - Интервал в минутах, с которым происходит сбор информации о периоде хранения событий в коллекции. Рекомендуемое значение - 30.
DIVIDER_SCHEDULER_PERIOD_DELETE_EXPIRED_COLLECTION_MINUTES - Интервал в минутах, с которым происходит поиск и удаление устаревших коллекций. Рекомендуемое значение - 60.
DIVIDER_RETRY_COUNT - Количество попыток (всего) при разделении, удалении, сборе метаданных (если предыдущая попытка закончилась выбросом ошибки). Рекомендуемое - 3.
DIVIDER_RETRY_BACKOFF_MS - Период в миллисекундах между попытками, указанными в DIVIDER_RETRY_COUNT при разделении, удалении, сборе метаданных (если предыдущая попытка закончилась выбросом ошибки). Рекомендуемое - 60000.
DIVIDER_SCHEDULER_POOL_SIZE - Количество потоков для задач Scheduler. Например, 3.
DIVIDER_ADDITIONAL_JVM_OPTS - Параметр для добавления Java Options в ConfigMap Audit2-Divider. Перечисление через пробел. Можно оставить пустым.  
SOLR_ZOOKEEPER_CONNECTION_STRING=IP1:PORT,IP2:PORT,IP3:PORT - Адреса серверов ZooKeeper.
SOLR_ZOOKEEPER_CHROOT=/solr - Рабочая директория Solr в ZooKeeper.
SOLR_COLLECTION_CONFIG_NAME=splitted-ae-hdfs - Название конфигурации для коллекции Solr. Определяет, где будут храниться данные, на HDFS или на Linux. Принимает значения splitted-ae-hdfs или splitted-ae-disk. Для splitted-ae-hdfs, директория задается вручную в Cloudera Manager > Solr > Configuration, параметр HDFS Data Directory. Для splitted-ae-disk, директория задается вручную в Cloudera Manager > Solr > Configuration, параметр Solr Data Directory.
SOLR_COLLECTION_SHARDS_COUNT - Количество shards для коллекций Solr. Целое число, например, 3. Значение зависит от значений (1) DIVIDER_RUNTIME_COLLECTION_STORING_MINUTES, (2) входящего потока событий и (3) количества серверов, выделенных под Solr. Необходимо выставлять параметры DIVIDER_RUNTIME_COLLECTION_STORING_MINUTES и SOLR_COLLECTION_SHARDS_COUNT таким образом, чтобы средний размер shard не превышал 40 ГБ, чтобы не было деградации записи данных и поиска. В случае отсутствия эмпирических данных можно выставить по следующей формуле: SOLR_COLLECTION_SHARDS_COUNT=(DIVIDER_RUNTIME_COLLECTION_STORING_MINUTES * входящий поток ГБ/сут) / 1000.
SOLR_COLLECTION_MAX_SHARDS_PER_NODE_COUNT - Максимальное количество shards для каждого узла Solr. Целое число, например, 10. Значение должно быть больше величины SOLR_COLLECTION_SHARDS_COUNT * SOLR_COLLECTION_REPLICAS_COUNT / количество серверов Solr. Рекомендуется выставлять вдвое больше.
SOLR_COLLECTION_REPLICAS_COUNT - Количество реплик для коллекций Solr. Целое число, например, 2. Для промышленных сред - 2 и более, в зависимости от требований (если требуется переживать отказ N серверов, то выставить N+1). В случае размещения Solr на HDFS, не рекомендуется выставлять более 2, так как объем данных, хранимых на дисках, зависит от произведения величин replicationFactor для Solr и replicationFactor HDFS. Для тестовых сред допускается 1 и более.
DIVIDER_SOLR_SSL_ENABLED - Значение показывает, активен ли SSL или нет. Возможные значения - true или false. 
DIVIDER_SOLR_HOSTNAME_VERIFICATION_ENABLED - Настройка включает проверку hostname в SAN сертификата Solr сервера. Возможные значения - true или false. Можно установить false на тестовых стендах.

Внимание!

При включении поддержки Kerberos на кластере Hadoop становятся недоступными Hue Web UI и Solr Server Web UI. Для доступа к встроенным в Hadoop утилитам HDFS и HBase потребуется получение keytab в FreeIPA (Kerberos) для HDFS и HBase, и именно для узла, с которым будет происходить взаимодействие пользователя.

Если планируете использовать Platform V Audit SE (AUD) вместе с сервисом Secret Management System, также внесите следующие настройки в os_props.conf:

VAULT_ROLE - Имя роли в Secret Management System, под которой происходит аутентификация и авторизация Vault-Agent. Например: role-ga-secman-aud. Роль выдается при получении доступа к Secret Management System.
VAULT_AGENT_REQUESTS_CPU - Необходимое количество процессорного ресурса для Vault-Agent. Установите значение 250m.
VAULT_AGENT_LIMITS_CPU - Лимит на процессорный ресурс для Vault-Agent. Установите значение 500m.
VAULT_AGENT_REQUESTS_MEMORY - Необходимое количество памяти для Vault-Agent. Установите значение 64Mi.
VAULT_AGENT_LIMITS_MEMORY - Лимит на память для Vault-Agent. Установите значение 128Mi.
VAULT_TENANT_NAME - Идентификатор вашего namespace (тенанта) в Secret Management System. 
VAULT_KV_PATH - Путь до хранилища секретов в формате Key-Value в Secret Management System. Например: A/DEV/AUD/OM/KV.
VAULT_HOST - FQDN сервиса Secret Management System. Например: secman.example.com.
VAULT_PORT - Порт сервиса Secret Management System. Укажите 8443.

Пример заполнения файла:

APPLICATION_ROUTE=demo.audit2-http-proxy.example.com
APPLICATION_NAMESPACE=ci00641491-idevgen-audit-demo
ISTIO_CONTROL_PLANE=ci01994970-idevgen-control-panel-test
LOGGER_SERVICE_HOSTNAME=ci00641491-idevgen-logger-ift.ingress.example.com
APPLICATION_ROUTE_WITH_OTT=demo.audit2-http-proxy-ott.example.com
OTT_SERVICE_HOSTS=10.53.13.110:8080,10.53.13.111:8080
KAFKA_HOSTS='["str-vat-app0488.example.com", "str-vat-app0487.example.com", "str-vat-app0486.example.com"]'
KAFKA_PORT=19092
EGRESS_REPLICAS=1
INGRESS_REPLICAS_COUNT=1
APPLICATION_REPLICAS_COUNT=2
HBASE_PRINCIPAL="none"
KERBEROS_ENABLED=false

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

Для обновления модуля AuditWebUI выполните следующие шаги:

  1. Скопируйте дистрибутив на папку выше для совместимости новой структуры с Install_EIP.

Пример

<Action name="copy_distrib_to_upper_dir" visible="true">
 <context/>
 <mode>all</mode>
 <default>true</default>
 <Description>Копирование дистрибутива на папку выше</Description>
 <Dependency onFail="Skip">server_deploy_seap_mod</Dependency>
 <type>shell</type>
 <Script>cp -R ${env.distrPath}distrib-4.12-OS/* ${env.distrPath}; ls -la ${env.distrPath}</Script>
</Action>
  1. Обновите конфигурацию в PACMAN.

Пример

<Action name="configure_hyperic" visible="true">
 <context />
 <mode>all</mode>
 <default>true</default>
 <Description>Загрузка параметров в PACMAN</Description>
 <Dependency onFail="Skip">copy_distrib_to_upper_dir</Dependency>
 <Dependency onFail="Skip">Audit_cloudera_update</Dependency>
 <type>groovy</type>
 <Script>bin/run_with_password_tool26.groovy action_script=bin/config_by_configurator_cli_with_password.yml host_path=./config/${env.Stand}/hosts.ini key_id=vault_cred</Script>
</Action>
  1. Загрузите ролевую модель в SPAS.

Пример

<Action name="upload_role_model" visible="true">
 <context/>
 <mode>all</mode>
 <default>true</default>
 <Dependency onFail="Skip">copy_distrib_to_upper_dir</Dependency>
 <Dependency onFail="Skip">Audit_cloudera_update</Dependency>
 <Dependency onFail="Skip">configure_hyperic</Dependency>
 <Description>Загрузка ролевой модели в Spas</Description>
 <type>groovy</type>
 <Script>bin/run_with_password_tool26.groovy action_script=bin/config_spas_by_cli_with_password.yml key_id=vault_cred</Script>
</Action>
  1. Перезагрузите WildFly с выключенными модулями.

Пример

<Action name="core_restart_console_wf" visible="true">
 <context />
 <mode>all</mode>
 <default>true</default>
 <Description>Рестарт консоли WildFly (без приклада)</Description>
 <Dependency onFail="Skip">copy_distrib_to_upper_dir</Dependency>
 <Dependency onFail="Skip">Audit_cloudera_update</Dependency>
 <Dependency onFail="Skip">configure_hyperic</Dependency>
 <Dependency onFail="Skip">upload_role_model</Dependency>
 <type>groovy</type>
 <Script>bin/run_with_password_tool26.groovy action_script=bin/tc_restart_wf_false_app.yml host_path=./config/${env.Stand}/hosts.ini hosts_group_WF=11_BA2 key_id=vault_cred</Script>
</Action>
  1. Обновите модуль WebUI.

Пример

<Action name="audit_WebUI_deploy_to_WF" visible="true">
 <context />
 <mode>all</mode>
 <default>true</default>
 <Description>Установка WebUI приложения аудита на WildFly</Description>
 <Dependency onFail="Skip">server_deploy_seap_mod</Dependency>
 <Dependency onFail="Skip">copy_distrib_to_upper_dir</Dependency>
 <Dependency onFail="Skip">Audit_cloudera_update</Dependency>
 <Dependency onFail="Skip">configure_hyperic</Dependency>
 <Dependency onFail="Skip">upload_role_model</Dependency>
 <Dependency onFail="Skip">core_restart_console_wf</Dependency>
 <type>groovy</type>
 <Script>bin/run_with_password_tool26.groovy action_script=bin/install_module_with_password.yml system_conf_WF=../../../distrib/install/install_web.properties hosts_group_WF=11_BA2 key_id=vault_cred</Script>
</Action>
  1. Перезагрузите WildFly и включите все установленные модули.

Пример

<Action name="core_restart_console_wf_enable_app" visible="true">
 <context />
 <mode>all</mode>
 <default>true</default>
 <Description>Рестарт консоли WildFly</Description>
 <Dependency onFail="Skip">copy_distrib_to_upper_dir</Dependency>
 <Dependency onFail="Skip">Audit_cloudera_update</Dependency>
 <Dependency onFail="Skip">configure_hyperic</Dependency>
 <Dependency onFail="Skip">upload_role_model</Dependency>
 <Dependency onFail="Skip">core_restart_console_wf</Dependency>
 <Dependency onFail="Skip">Audit_web_UI_deploy</Dependency>
 <type>groovy</type>
 <Script>bin/run_with_password_tool26.groovy action_script=bin/tc_restart_wf_enable_app.yml host_path=./config/${env.Stand}/hosts.ini hosts_group_WF=11_BA2 key_id=vault_cred</Script>
</Action>

Обновление перекладчика событий PCI DSS Transmitter#

Для обновления модуля выполните следующие шаги:

  1. Обновите конфигурацию в PACMAN.

Пример

<Action name="configure_hyperic" visible="true">
 <context />
 <mode>all</mode>
 <default>true</default>
 <Description>Загрузка параметров в PACMAN</Description>
 <Dependency onFail="Skip">copy_distrib_to_upper_dir</Dependency>
 <type>groovy</type>
 <Script>bin/run_with_password_tool26.groovy action_script=bin/config_by_configurator_cli_with_password.yml host_path=./config/${env.Stand}/hosts.ini key_id=vault_cred</Script>
</Action>
  1. Перезагрузите WildFly с выключенными модулями.

Пример

<Action name="core_restart_console_wf" visible="true">
 <context />
 <mode>all</mode>
 <default>true</default>
 <Description>Рестарт консоли WildFly (без приклада)</Description>
 <Dependency onFail="Skip">copy_distrib_to_upper_dir</Dependency> 
 <Dependency onFail="Skip">configure_hyperic</Dependency>
 <type>groovy</type>
 <Script>bin/run_with_password_tool26.groovy action_script=bin/tc_restart_wf_false_app.yml host_path=./config/${env.Stand}/hosts.ini hosts_group_WF=11_BA2 key_id=vault_cred</Script>
</Action>
  1. Скопируйте файлы-фильтры сообщений для перекладчика.

Пример

<Action name="update_filters" visible="true">
 <context />
 <mode>all</mode>
 <default>true</default>
 <Description>Обновление фильтров сообщений для PCIDSS перекладчика</Description>
 <Dependency onFail="Skip">copy_distrib_to_upper_dir</Dependency>
 <Dependency onFail="Skip">configure_hyperic</Dependency>
 <Dependency onFail="Skip">restart_console_wf</Dependency>
 <type>groovy</type>
 <Script>bin/run_with_password_tool26.groovy action_script=bin/copy_directory_data.yml hosts_group_WF=11_BA2 key_id=vault_cred</Script>
</Action>

Для работы данного шага необходимо задать откуда копировать фильтры из дистрибутива (src_path) и куда их класть на целевом хосте (resources_dir_path).

Это можно сделать, поместив две переменные в //system.conf:

resources_dir_path=/opt/pprb/transmitter-filters/ src_path=config/transmitter-filters/

  1. Обновите модуль перекладчика PCI DSS.

Пример

<Action name="deploy_transmitter_module" visible="true">
 <context />
 <mode>all</mode>
 <default>true</default>
 <Description>Обновление модуля PCIDSS перекладчика</Description>
 <Dependency onFail="Skip">copy_distrib_to_upper_dir</Dependency>
 <Dependency onFail="Skip">configure_hyperic</Dependency>
 <Dependency onFail="Skip">restart_console_wf</Dependency>
 <Dependency onFail="Skip">update_filters</Dependency>
 <type>groovy</type>
 <Script>bin/run_with_password_tool26.groovy action_script=bin/install_module_with_password.yml system_conf_WF=../../../distrib/install/install_transmitter.properties hosts_group_WF=11_BA2 key_id=vault_cred</Script>
</Action>
  1. Перезагрузите WildFly с включением всех установленных модулей.

Пример

<Action name="restart_console_wf_enable_app" visible="true">
 <context />
 <mode>all</mode>
 <default>true</default>
 <Description>Рестарт консоли WildFly</Description>
 <Dependency onFail="Skip">copy_distrib_to_upper_dir</Dependency>
 <Dependency onFail="Skip">configure_hyperic</Dependency>
 <Dependency onFail="Skip">upload_role_model</Dependency>
 <Dependency onFail="Skip">restart_console_wf</Dependency>
 <Dependency onFail="Skip">deploy_transmitter_module</Dependency>
 <type>groovy</type>
 <Script>bin/run_with_password_tool26.groovy action_script=bin/tc_restart_wf_enable_app.yml host_path=./config/${env.Stand}/hosts.ini hosts_group_WF=11_BA2 key_id=vault_cred</Script>
</Action>

Обновление Конфигурации для артефакта audit2#

Обновление выполняется штатно до последней версии.

Дополнительная информация#

Обновление Ролевой модели для модуля Platform V Audit SE (AUD): выполните обновление Ролевой модели модуля Platform V Audit SE (AUD) до текущей версии. Файл roleModel_audit.xml размещен в дистрибутиве по пути distrib-<version>-OS/other/roleModel.

Удаление старых архивных коллекций: удалите cтарые архивные коллекции c названиями в формате YYYY-MM-DD-YYYY-MM-DD. Они будут недоступны для поиска и автоматически не будут удаляться через сервис audit2-divider. Можно удалить через UI или через Solr Server Web UI. Если старые коллекции нужны, выполните заново поднятие из архива.