Руководство по установке#
В руководстве приведены инструкции по установке компонента Поисковой движок (SRHX) продукта Platform V Search (SRH).
Расшифровку основных понятий см. в документе "Термины и определения".
Системные требования#
Настройки безопасности окружения и перечень платформенных (дополнительных внешних) продуктов, используемых для установки, настройки и контроля в конечной информационной системе (далее — ИС), выбираются при разработке конечной ИС, исходя из характера обрабатываемой в ней информации и иных требований информационной безопасности (далее — ИБ), предъявляемых к ней.
Системное программное обеспечение#
Ниже представлены категории системного программного обеспечения (далее — ПО), которые обязательны или опциональны для установки, настройки, контроля и функционирования компонента SRHX. В каждой категории перечислены все поддерживаемые продукты сторонних правообладателей. Отдельно обозначены варианты, которые рекомендует АО «СберТех» (маркировка «Рекомендовано» в столбце «Продукт, функциональная совместимость с которым подтверждена»). Клиенту необходимо выбрать один из продуктов в каждой категории, исходя из условий использования конечной ИС.
Категория ПО |
Обязательность установки* |
Наименование ПО |
Версия |
Продукт, функциональная совместимость с которым подтверждена** |
Описание |
|---|---|---|---|---|---|
Операционная система |
Да |
ОС Альт 8 СП |
8.2 и выше |
Рекомендовано |
Среда для запуска модулей компонента |
Red Hat Enterprise Linux |
7.8, 7.9 |
Опционально |
Среда для запуска модулей компонента |
||
Java-машина |
Да |
OpenJDK |
11 и выше |
Рекомендовано |
Окружение для работы модулей компонента |
Сервис централизованного хранения репозиториев артефактов (хранилище артефактов) |
Да |
Nexus-Public |
2.5.1 и выше |
Рекомендовано |
Интегрированная платформа для проксирования, хранения и управления зависимостями Java , образами, а также распространения ПО |
Сервис централизованного хранения репозиториев исходного кода |
Да |
GitLab CE |
15.0 и выше |
Рекомендовано |
Хранение конфигураций при автоматизированной установке |
Инструмент сборки, тестирования, развертывания контейнеризированных приложений |
Да |
Jenkins |
2.332.4 и выше |
Рекомендовано |
Сервер автоматизации, используемый для внедрения непрерывной интеграции и непрерывной доставки (CI/CD) для проектов программного обеспечения |
Программная платформа |
Да |
NodeJS |
14.21.3 и выше |
Рекомендовано |
Среда выполнения JS |
Примечание
*
Да — категория ПО обязательна для функционирования сервиса (это означает, что сервис не может выполнять свои базовые функции без установки данной категории ПО).
Нет — категория ПО необязательна для функционирования сервиса (это означает, что сервис может выполнять свои базовые функции без установки данной категории ПО).
**
Рекомендовано — рекомендованный правообладателем АО «СберТех» продукт.
Опционально — альтернативный по отношению к рекомендованному правообладателем АО «СберТех» продукт.
Платформенные зависимости#
У компонента SRHX отсутствуют платформенные зависимости.
У компонента SRHX реализована интеграция со следующими компонентами из состава продукта:
Наименование компонента |
Код |
Описание |
|---|---|---|
Индексированный поиск |
IDXS |
Компонент предназначен для эффективного поиска по прикладным и нормативным хранилищам документов с учетом ранжирования и релевантности |
Аппаратные требования#
Для установки компонента SRHX требуется следующая конфигурация аппаратного обеспечения:
Варианты установки |
CPU |
RAM |
Диск под систему |
|---|---|---|---|
run-test |
2 ядра |
2 GB |
HDD: 15GB |
minimum |
4 ядра |
8 GB |
HDD: 20GB |
medium |
8 ядра |
16 GB |
HDD/SSD: 25GB |
optimal |
16 ядер |
32GB |
SSD: 35GB |
high-load |
32 ядер |
64GB |
SSD: 35GB |
Требования к окружению для установки программного компонента#
Компонент SRHX не выдвигает требований к настройкам безопасности окружения.
Состав дистрибутива#
Элемент дистрибутива |
Описание |
|---|---|
Search-server-{server-version}.zip |
Дистрибутив содержит компонент SRHX, управляемый посредством REST |
Security_Plugin-{security-version}.zip |
Дистрибутив содержит плагин для серверной части, отвечающий за шифрование, авторизацию и аутентификацию компонента SRHX |
search-healthcheck-plugin-{healthcheck-version}.zip |
Дистрибутив содержит плагин для серверной части, отвечающий за проверку работоспособности компонента SRHX |
Search-notifications |
Управление уведомлениями от плагинов Search |
Search-security |
Плагин безопасности |
Search-index-management |
Автоматизация действия по управлению индексами |
Search-job-scheduler |
Создание расписаний для общих задач, выполняемых в кластере |
Prometheus-exporter |
Сбор и отправка метрик в формате prometheus |
Выбор способа установки#
Единственным и целевым способом установки является ручной способ.
Подготовка окружения#
Установите java. Версия java должна быть не меньше 11.0.15. Пропишите системную переменную "$JAVA_HOME" в файл etc/profile:
export JAVA_HOME=java_path_on_your_computer
export PATH=$JAVA_HOME/bin:$PATH
Если $JAVA_HOME будет не прописано, то будет использоваться java, которая поставляется с дистрибутивом. Расположена внутри дистрибутива сервера в папке jdk.
Измените настройки Java внутри папки jdk. В каталоге, где находится Java по пути - java_path/lib/security отредактируйте файл default.policy, добавить
//permissions needed by applications using java.desktop module
permission java.lang.RuntimePermission "setContextClassLoader"
При отсутствии данной настройки возникнут ошибки при запуске сервера.
Установите unzip.
Создайте папки, необходимые для конфигурации:
sudo mkdir /var/log/opensearch
sudo mkdir /var/lib/opensearch
sudo mkdir /var/run/opensearch
Убедитесь, что параметру "vm.max_map_count" задано значение не менее 262 144.
cat /proc/sys/vm/max_map_count
Если значение меньше, отредактируйте данный параметр.
sudo nano /etc/sysctl.conf
vm.max_map_count=262144
Выполните перезагрузку
sudo sysctl -p
Убедитесь, что в параметре на открытие файлов для пользователя задано значение не менее 65536.
ulimit -n
Если значение меньше 65536, добавьте параметр – "nofile" и значение – "65536" в файле limits.conf.
Если указываете soft, то hard обязателен.
Формат каждой строки лимита для пользователя следующий:
<domain> <type> <item> <value>
Описание каждого параметра есть в файле limits.conf.
sudo nano /etc/security/limits.conf
Пример:

Убедитесь, что в параметре максимальное число пользовательских процессов задано не менее 4096.
ulimit -u
Если значение меньше 4096, добавьте параметр – "nproc" и значение – "4096" в файле limits.conf
Если указываете soft, то hard обязателен.
Формат каждой строки лимита для пользователя следующий:
<domain> <type> <item> <value>
Описание каждого параметра указано в файле limits.conf.
sudo nano /etc/security/limits.conf
Данные действия выполняются индивидуально для каждой именованной области среды в пределах каждого стенда.
Пример:

Установка#
Ручная установка сервиса#
Установка в узле#
Загрузка и распаковка дистрибутива#
Загрузите дистрибутив на стенд.
Выдайте права на исполнение для архива.
chmod +x <distrib name>
Создайте основную директорию opensearch.
mkdir opensearch
Перенесите в директорию дистрибутив и распакуйте.
unzip distr-name
Установка Search Server#
Создайте директорию server.
mkdir serverПоместите дистрибутив distr-server-name в директорию
server.Перейдите в директорию
serverи распакуйте дистрибутив.unzip distr-server-nameОтредактируйте файл параметров
nano ./config/opensearch.yml.Раскомментируйте строку и проставьте наименование сервера и порта(по-умолчанию 9200) в блоке Network. Проставьте порт xxxx:
network.host: ip-host
http.port: port
Добавьте в блок Discovery:
discovery.type: single-node
Добавьте в блок Paths, если блок Paths, отсутствует, то добавьте его.
path.data: var/lib/opensearch/
path.logs: var/log/opensearch/
Пример:

Сохраните данные.
Проверьте запуск server.
./bin/opensearch
Если при запуске ошибок не выявлено, сервер запустится. Выполните проверку работоспособности сервера запросом: "http://хх.хх.хх.х:ххххх/"
Пример ответа:
{
"name" : "<host name>",
"cluster_name" : "opensearch",
"cluster_uuid" : "D95OFChDQ_mrwj1Xtx5Otw",
"version" : {
"distribution" : "opensearch",
"number" : "3.0.0",
"build_type" : "tar",
"build_hash" : "unknown",
"build_date" : "unknown",
"build_snapshot" : true,
"lucene_version" : "9.4.2",
"minimum_wire_compatibility_version" : "2.4.0",
"minimum_index_compatibility_version" : "2.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
Установка Index Management plugin#
Создайте директорию plugins на уровне, где создана директория server.
mkdir plugins
Поместите следующие дистрибутивы в директорию plugins:
opensearch-notifications-core;
opensearch-notifications;
search-job-scheduler;
search-index-management.
Вернитесь в основную директорию server. Вызовите следующую команду для установки каждого из вышеописанных дистрибутивов:
./bin/opensearch-plugin install file:home/full_path_to_archive/opensearch-notifications-core.zip
На вопрос: "Continue with installation? [y/N]" - Нажмите y и Enter.
Установите дистрибутивы в следующем порядке:
opensearch-notifications-core;
opensearch-notifications;
search-job-scheduler;
search-index-management.
Для проверки запустите следующую команду:
./bin/opensearch-plugin list
Данная программа показывает установленные плагины на сервере.
Установка Prometheus-exporter plugin#
Создайте директорию plugins на уровне, где создана директория server.
mkdir plugins
Поместите дистрибутив distr-prometheus-exporter-name в директорию plugins.
Вернитесь в основную директорию server. Вызовите следующую команду для установки плагина.
./bin/opensearch-plugin install file:home/full_path_to_archive/distr-prometheus-exporter-name.zip
На вопрос: "Continue with installation? [y/N]" - Нажмите
yиEnter.Для проверки запустите следующую команду:
./bin/opensearch-plugin list
Данная программа показывает установленные плагины на сервере.
Выполните проверку работоспособности Prometheus-exporter plugin.
https://host:xxxx/_prometheus/metrics
В ответ получен список метрик в prometheus формате.
Установка Security Search Plugin на сервер#
Создайте директорию
pluginsна уровне, где созданаserver.
mkdir plugins
Поместите дистрибутив distr-security-plugin-name в директорию
plugins.Вернитесь в основную директорию
server. Вызовите следующую команду для установки плагина.
./bin/opensearch-plugin install file:full_path_to_archive/distr-security-plugin-name.zip
На вопрос: "Continue with installation? [y/N]" - Нажмите y и Enter
Вы должны увидеть: "-> Installed opensearch-security with folder name opensearch-security"
Для проверки запустите следующую команду:
Данная программа показывает установленные плагины на сервере.
./bin/opensearch-plugin list
Настройте плагин
Securityдля работы сервиса по HTTPS и с шифрованием данных.Загрузите сертификаты, созданные для работы с компонентом в директорию с конфигурацией сервиса.
Отредактируйте файл с конфигурацией сервиса:
sudo nano /opensearch/server/search-0.0.2/opensearch-3.0.0-SNAPSHOT/config/opensearch.yml
Для настройки транспортного уровня добавьте вниз файла:
### TRANSPORT LAYER
plugins.security.ssl.transport.enabled: true
plugins.security.ssl.transport.pemcert_filepath: <cert>
plugins.security.ssl.transport.pemkey_filepath: <key>
plugins.security.ssl.transport.pemtrustedcas_filepath: <ca.cert>
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.transport.enabled_protocols:
- "TLSv1.2"
# plugins.security.ssl.transport.enabled_ciphers:
# - "TLS_DHE_RSA_WITH_AES_256_CBC_SHA"
# - "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256"
Для настройки http уровня добавьте:
### HTTP LAYER
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: <cert-1>
plugins.security.ssl.http.pemkey_filepath: <cert-1-key>
plugins.security.ssl.http.pemtrustedcas_filepath: <ca.cert>
plugins.security.ssl.http.clientauth_mode: REQUIRE
plugins.security.ssl.http.enabled_protocols:
- "TLSv1.2"
plugins.security.ssl.http.enabled_ciphers:
- "TLS_DHE_RSA_WITH_AES_256_CBC_SHA"
- "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256"
Добавьте остальные настройки безопасности:
plugins.security.allow_default_init_securityindex: true
plugins.security.authcz.admin_dn:
- <CN name cert 1>
- <CN name cert 2>
plugins.security.nodes_dn:
- <CN name cert>
plugins.security.disabled: false
plugins.security.audit.type: internal_opensearch
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: [".plugins-ml-model", ".plugins-ml-task", ".opendistro-alerting-config", ".opendistro-alerting-alert*", ".opendistro-anomaly-results*", ".opendistro-anomaly-detector*", ".opendistro-anomaly-checkpoints", ".opendistro-anomaly-detection-state", ".opendistro-reports-*", ".opensearch-notifications-*", ".opensearch-notebooks", ".opensearch-observability", ".opendistro-asynchronous-search-response*", ".replication-metadata-store"]
node.max_local_storage_nodes: 3
plugins.security.cache.ttl_minutes: 720
Изменение ролевой модели и методов аутентификации#
Удалите данные о пользователе "logstash" из файла "/path/to/opensearch/config/opensearch-security/internal_users.yml".
sudo nano opensearch/server/search-0.0.2/opensearch-3.0.0-SNAPSHOT/config/opensearch-security/internal_users.yml
Пример. Найдите и удалите подобные данные, если они имеются в данном файле:
logstash:
hash: "$2a$12$u1ShR4l4uBS3Uv59Pa2y5.1uQuZBrZtmNfqB3iM/.jL0XoV9sghS2"
reserved: false
backend_roles:
- "logstash"
description: "Demo logstash user, using external role mapping"
Удалите данные о роли "logstash" из файла "/path/to/opensearch/config/opensearch-security/roles_mapping.yml".
sudo nano opensearch/server/search-0.0.2/opensearch-3.0.0-SNAPSHOT/config/opensearch-security/roles_mapping.yml
Пример. Найдите и удалите подобные данные, если они имеются в данном файле:
logstash:
reserved: false
backend_roles:
- "logstash"
Для безопасного использования компонента SRHX рекомендуется удалить всех пользователей, которые не предполагаются к использованию (по аналогии с пользователем logstash). У оставшихся пользователей требуется изменить пароли.
Применение новых настроек ролевой модели
Для вступления в силу всех сделанных изменений необходимо, чтобы Server был запущен.
Запустите скрипт.
./opensearch/server/search-0.0.2/opensearch-3.0.0-SNAPSHOT/bin/opensearch
Запустите скрипт для изменения ролевой модели:
./securityadmin.sh -cd /path/to/config/opensearch-security/ -icl -nhnv -h elk.dev.solution.ххх -cacert /path/to/ca.cert -cert /path/to/cert.crt -key /path/to/cert.key
Скрипт прошёл успешно.
Остановите процесс
Server.Раскомментируйте поле plugins.security.ssl.http.enabled_ciphers и принадлежащие ей значения на транспортном и http уровне.
sudo nano opensearch/server/search-0.0.2/opensearch-3.0.0-SNAPSHOT/config/opensearch.yml
Пример:
plugins.security.ssl.transport.enabled_protocols:
- "TLSv1.2"
plugins.security.ssl.transport.enabled_ciphers:
- "TLS_DHE_RSA_WITH_AES_256_CBC_SHA"
- "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256"
### HTTP LAYER
plugins.security.ssl.http.enabled_protocols:
- "TLSv1.2"
plugins.security.ssl.http.enabled_ciphers:
- "TLS_DHE_RSA_WITH_AES_256_CBC_SHA"
- "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256"
Сервер готов. Для проверки запустите
server, а затем используйте следующуюcurlкоманду. Запуск сервера.
./bin/opensearch
Проверьте работоспособность:
curl -k -XGET https://server_name:xxxx -u 'admin:admin'
Пример ответа:
{
"name" : "<host name>",
"cluster_name" : "opensearch",
"cluster_uuid" : "D95OFChDQ_mrwj1Xtx5Otw",
"version" : {
"distribution" : "opensearch",
"number" : "3.0.0",
"build_type" : "tar",
"build_hash" : "unknown",
"build_date" : "unknown",
"build_snapshot" : true,
"lucene_version" : "9.4.2",
"minimum_wire_compatibility_version" : "2.4.0",
"minimum_index_compatibility_version" : "2.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
Установка HealthCheck Plugin на сервер#
Создайте директорию
pluginsна уровне, где создана директорияserver.
mkdir plugins
Поместите дистрибутив health-check-plugin-name в директорию
plugins.Вернитесь в основную директорию server. Вызовите следующую команду для установки плагина.
./bin/opensearch-plugin install file:home/full_path_to_archive/health-check-plugin-name.zip
На вопрос: "Continue with installation? [y/N]" - Нажмите
yиEnter.Для проверки запустите следующую команду: Данная программа показывает установленные плагины на сервере.
./bin/opensearch-plugin list
Выполните проверку работоспособности HealthCheck plugin.
https://host:xxxx/ufs-healthcheck/test
Пример ответа:
{"success":true,"body":"ON"}
Создание файла демо для работы Server компонента SRHX.
Внимание! Замените пути до программы в файле с конфигурацией сервиса на необходимые.
Создайте файл opensearch.service.
sudo nano usr/lib/systemd/system/opensearch.service
Заполните файл opensearch.service конфигурацией.
[Unit]
Description=Platform V Search
Wants=network-online.target
After=network-online.target
[Service]
Type=forking
RuntimeDirectory=data
PrivateTmp=true
WorkingDirectory=/path/to/opensearch
ExecStart=/path/to/opensearch/bin/opensearch -d
User=opensearch
Group=opensearch
StandardOutput=journal
StandardError=inherit
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65535
# Specifies the maximum number of processes
LimitNPROC=4096
# Specifies the maximum size of virtual memory
LimitAS=infinity
# Specifies the maximum file size
LimitFSIZE=infinity
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=0
# SIGTERM signal is used to stop the Java process
KillSignal=SIGTERM
# Send the signal only to the JVM rather than its control group
KillMode=process
# Java process is never killed
SendSIGKILL=no
# When a JVM receives a SIGTERM signal it exits with code 143
SuccessExitStatus=143
# Allow a slow startup before the systemd notifier module kicks in to extend the timeout
TimeoutStartSec=75
[Install]
WantedBy=multi-user.target
Выполните следующие команды.
sudo systemctl enable opensearch.service
sudo systemctl daemon-reload
Выполните команду запуска.
sudo systemctl start opensearch.service
Выполните команду на проверку запуска opensearch.service.
sudo systenctl status opensearch.service
Пример ответа:
opensearch.service - opensearch_service
Loaded: loaded (/usr/lib/systemd/system/opensearch.service; enabled; vendor preset: disabled)
Active: active (running) since <date>; 23h ago
Docs: https://www.elastic.co
Выполните проверку работоспособности Server.
https://host:xxxx/
Пример ответа:
{
"name" : "<node name>",
"cluster_name" : "opensearch",
"cluster_uuid" : "fK3PQhtLR46xjZAce4Qgkg",
"version" : {
"distribution" : "opensearch",
"number" : "3.0.0",
"build_type" : "tar",
"build_hash" : "unknown",
"build_date" : "unknown",
"build_snapshot" : true,
"lucene_version" : "9.4.2",
"minimum_wire_compatibility_version" : "2.4.0",
"minimum_index_compatibility_version" : "2.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
Установка в кластере#
Настройка мастер-node#
Создайте пользователя opensearch:
sudo adduser opensearch
sudo passwd opensearch
Выдайте права пользователю opensearch на управление daemon-сервисом, который будет создан далее.
sudo nano /etc/sudoers.d/opensearch
Необходимо добавить:
opensearch ALL=(ALL) NOPASSWD: /bin/systemctl start opensearch.service
opensearch ALL=(ALL) NOPASSWD: /bin/systemctl restart opensearch.service
opensearch ALL=(ALL) NOPASSWD: /bin/systemctl stop opensearch.service
opensearch ALL=(ALL) NOPASSWD: /bin/systemctl status opensearch.service
opensearch ALL=(ALL) NOPASSWD: /bin/systemctl enable opensearch.service
opensearch ALL=(ALL) NOPASSWD: /bin/systemctl disable opensearch.service
Создайте daemon-сервис для Server:
sudo nano /usr/lib/systemd/system/opensearch.service
Внимание! Замените пути до программы на необходимые.
Добавьте:
[Unit]
Description=Platform V Search
Wants=network-online.target
After=network-online.target
[Service]
Type=forking
RuntimeDirectory=data
PrivateTmp=true
WorkingDirectory=/path/to/opensearch
ExecStart=/path/to/opensearch/bin/opensearch -d
User=opensearch
Group=opensearch
StandardOutput=journal
StandardError=inherit
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65535
# Specifies the maximum number of processes
LimitNPROC=4096
# Specifies the maximum size of virtual memory
LimitAS=infinity
# Specifies the maximum file size
LimitFSIZE=infinity
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=0
# SIGTERM signal is used to stop the Java process
KillSignal=SIGTERM
# Send the signal only to the JVM rather than its control group
KillMode=process
# Java process is never killed
SendSIGKILL=no
# When a JVM receives a SIGTERM signal it exits with code 143
SuccessExitStatus=143
# Allow a slow startup before the systemd notifier module kicks in to extend the timeout
TimeoutStartSec=75
[Install]
WantedBy=multi-user.target
Выполните перезагрузку сервисов:
sudo systemctl daemon-reload
Создайте основную директорию opensearch и выдайте на неё права пользователю opensearch:
mkdir opensearch
sudo chown opensearch:opensearch /opensearch/
Переключитесь на пользователя opensearch:
sudo su - opensearch
Загрузите дистрибутив на стенд.
Перенесите в директорию дистрибутив и распакуйте.
unzip distr-name
Установка Search Server#
Создайте необходимые директории.
mkdir /opensearch/server
mkdir /opensearch/log
mkdir /opensearch/lib
Поместите дистрибутив distr-server-name в директорию server.
Перейдите в директорию server и распакуйте дистрибутив.
unzip distr-server-name
Отредактируйте файл конфигурации nano.
./config/opensearch.yml.
Задайте имя хоста в network.host и укажите порт, который будет использоваться.
network.host: {{ dns-server }}
http.port: xxxx
transport.port: 19301
Задайте имя кластера:
cluster.name: cluster_name
Задайте имя node и укажите её роли в кластере. Минимум одна из node кластера должна иметь роль cluster_manager.
node.name: node_1
node.roles: [ data, cluster_manager ]
Задайте используемые хосты кластера:
discovery.seed_hosts: ["name_host_1", "name_host_2", "name_host_3"]
Удалите строку, если до этого была настроена конфигурация StandAlone.
discovery.type: single-node
Задайте node с ролью cluster_manager (укажите имена всех мастер-node, которые будут в кластере).
cluster.initial_cluster_manager_nodes:
- <имя node_1 с ролью cluster_manager>
- <имя node_2 с ролью cluster_manager>
- <имя node_3 с ролью cluster_manager>
discovery.seed_hosts:
- name_host_1:xxxx
- name_host_2:xxxx
- name_host_3:xxxx
Добавьте в блок Paths. Если блок Paths, отсутствует, то добавьте его.
path.data: var/lib/opensearch/
path.logs: var/log/opensearch/
Пример:

Сохраните данные.
Добавьте привилегии в политику Java:
sudo nano /opensearch/server/search-0.0.2/opensearch-3.0.0-SNAPSHOT/jdk/lib/security/default.policy
Добавьте под комментарием:
//permissions needed by applications using java.desktop module
permission java.lang.RuntimePermission "setContextClassLoader"
Настройте автозапуск ранее созданного daemon-сервиса и запустите его:
sudo systemctl enable opensearch.service
sudo systemctl restart opensearch.service
Проверьте работоспособность запущенного daemon-сервиса:
sudo systemctl status opensearch.service
Пример ответа:
opensearch.service - Platform V Search
Loaded: loaded (/usr/lib/systemd/system/opensearch.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2023-04-04 17:12:58 MSK; 22h ago
Main PID: 18827 (bash)
CGroup: /system.slice/opensearch.service
Выполните проверку работоспособности
Server.
https://host:xxxx/
Пример ответа:
{
"name" : "<node name>",
"cluster_name" : "opensearch",
"cluster_uuid" : "fK3PQhtLR46xjZAce4Qgkg",
"version" : {
"distribution" : "opensearch",
"number" : "3.0.0",
"build_type" : "tar",
"build_hash" : "unknown",
"build_date" : "unknown",
"build_snapshot" : true,
"lucene_version" : "9.4.2",
"minimum_wire_compatibility_version" : "2.4.0",
"minimum_index_compatibility_version" : "2.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
Установка Security Search Plugin на сервер#
Внимание!
Для настройки шифрования потребуются два сертификата c разными CN в них и корневой сертификат, которым они подписаны. Один сертификат будет использоваться администратором, для применения настроек безопасности. Второй, для остального: шифрование транспортного и REST-уровня самого компонента SRHX, его node. Далее в инструкции используется – имя для общего сертификата – для сертификата администратора и <ca.cert> – для корневого. При создании сертификатов и в блок [altnames] необходимо добавить имена хостов и ip-адреса кластера компонента SRHX.
Пример блока [altnames]:
[alt_names]
DNS.1 = vm-srhx-1.dev.ххх
DNS.2 = vm-srhx-2.dev.ххх
DNS.3 = vm-srhx-3.dev.ххх
DNS.4 = xxx
DNS.5 = xxx
DNS.6 = xxx
Сертификаты должны быть клиент-серверными. Они должны содержать параметр:
extendedKeyUsage=serverAuth, clientAuth
Они могут лежать в любом месте, но для удобства лучше поместить их в /path/to/opensearch/config и ссылаться относительно заполняемого конфигурационного файла.
Установка описана в разделе Установка в узле настоящего документа.
Установка HealthCheck Plugin на сервер#
Выполнение данного шага обязательно. Описание установки приведено выше в разделе Установка в узле настоящего документа.
Установка Index Management plugin#
Выполнение данного шага обязательно. Описание установки приведено выше в разделе Установка в узле настоящего документа.
Установка Prometheus-exporter plugin#
Выполнение данного шага обязательно. Описание установки приведено выше в разделе Установка в узле настоящего документа.
Изменение ролевой модели и методов аутентификации#
Выполнение данного шага обязательно. Описание установки приведено выше в разделе Установка в узле настоящего документа
Применение новых настроек ролевой модели.
Для вступления в силу всех сделанных изменений необходимо, чтобы Server был запущен.
Запустите скрипт.
./opensearch/server/search-0.0.2/opensearch-3.0.0-SNAPSHOT/bin/opensearch
Запустите скрипт для изменения ролевой модели:
./securityadmin.sh -cd /path/to/config/opensearch-security/ -icl -nhnv -h elk.dev.solution.ххх -cacert /path/to/ca.cert -cert /path/to/cert.crt -key /path/to/cert.key
Скрипт прошёл успешно.
Остановите процесс
Server.Раскомментируйте поле plugins.security.ssl.http.enabled_ciphers и принадлежащие ей значения на транспортном и http уровне.
sudo nano opensearch/server/search-0.0.2/opensearch-3.0.0-SNAPSHOT/config/opensearch.yml
Пример
plugins.security.ssl.transport.enabled_protocols:
- "TLSv1.2"
plugins.security.ssl.transport.enabled_ciphers:
- "TLS_DHE_RSA_WITH_AES_256_CBC_SHA"
- "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256"
### HTTP LAYER
plugins.security.ssl.http.enabled_protocols:
- "TLSv1.2"
plugins.security.ssl.http.enabled_ciphers:
- "TLS_DHE_RSA_WITH_AES_256_CBC_SHA"
- "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256"
Запустите daemon-сервис
Server.
sudo systemctl restart opensearch.service
Проверьте работоспособность запущенного daemon-сервиса:
sudo systemctl status opensearch.service
Пример ответа:
opensearch.service - Platform V Search
Loaded: loaded (/usr/lib/systemd/system/opensearch.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2023-04-04 17:12:58 MSK; 22h ago
Main PID: 18827 (bash)
CGroup: /system.slice/opensearch.service
Выполните проверку работоспособности
Server.
https://host:xxxx/
Пример ответа:
{
"name" : "<node name>",
"cluster_name" : "opensearch",
"cluster_uuid" : "fK3PQhtLR46xjZAce4Qgkg",
"version" : {
"distribution" : "opensearch",
"number" : "3.0.0",
"build_type" : "tar",
"build_hash" : "unknown",
"build_date" : "unknown",
"build_snapshot" : true,
"lucene_version" : "9.4.2",
"minimum_wire_compatibility_version" : "2.4.0",
"minimum_index_compatibility_version" : "2.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
Обязательное ограничение доступа к директории config#
После успешной установки закройте доступ к директории config, где хранится файл с конфигурацией Server и используемые сертификаты.
Выполните команду получения списка файлов, чтобы проверить права на данную директорию.
ls -l /opensearch/server/search-0.0.2/opensearch-3.0.0-SNAPSHOT
Пример ответа:
drwx------ 4 opensearch opensearch 4096 Mar 31 09:39 config
Настройка slave-node#
Создайте пользователя opensearch:
sudo adduser opensearch
sudo passwd opensearch
Выдайте права пользователю opensearch на управление daemon-сервисом, который будет создан далее.
sudo nano /etc/sudoers.d/opensearch
Добавьте:
opensearch ALL=(ALL) NOPASSWD: /bin/systemctl start opensearch.service
opensearch ALL=(ALL) NOPASSWD: /bin/systemctl restart opensearch.service
opensearch ALL=(ALL) NOPASSWD: /bin/systemctl stop opensearch.service
opensearch ALL=(ALL) NOPASSWD: /bin/systemctl status opensearch.service
opensearch ALL=(ALL) NOPASSWD: /bin/systemctl enable opensearch.service
opensearch ALL=(ALL) NOPASSWD: /bin/systemctl disable opensearch.service
Создайте daemon-сервис для Server:
sudo nano /usr/lib/systemd/system/opensearch.service
Добавьте:
[Unit]
Description=Platform V Search
Wants=network-online.target
After=network-online.target
[Service]
RuntimeDirectory=opensearch
PrivateTmp=true
WorkingDirectory=/opensearch/server/search-0.0.2/opensearch-3.0.0-SNAPSHOT
User=opensearch
Group=opensearch
ExecStart=/bin/bash -c '/opensearch/server/search-0.0.2/opensearch-3.0.0-SNAPSHOT/bin/opensearch &> /opensearch/log/server.log'
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65535
# Specifies the maximum number of processes
LimitNPROC=4096
# Specifies the maximum size of virtual memory
LimitAS=infinity
# Specifies the maximum file size
LimitFSIZE=infinity
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=0
# SIGTERM signal is used to stop the Java process
KillSignal=SIGTERM
# Send the signal only to the JVM rather than its control group
KillMode=process
# Java process is never killed
SendSIGKILL=no
# When a JVM receives a SIGTERM signal it exits with code 143
SuccessExitStatus=143
# Allow a slow startup before the systemd notifier module kicks in to extend the timeout
TimeoutStartSec=75
[Install]
WantedBy=multi-user.target
Выполните перезагрузку сервисов:
sudo systemctl daemon-reload
Создайте основную директорию opensearch и выдайте на неё права пользователю opensearch:
mkdir opensearch
sudo chown opensearch:opensearch /opensearch/
Переключитесь на пользователя opensearch:
sudo su - opensearch
Загрузите дистрибутив на стенд.
Перенесите в директорию дистрибутив и распакуйте.
unzip distr-name
Установка Search Server#
Создайте необходимые директории.
mkdir /opensearch/server
mkdir /opensearch/log
mkdir /opensearch/lib
Поместите дистрибутив distr-server-name в директорию
server.Перейдите в директорию
serverи распакуйте дистрибутив.
unzip distr-server-name
Отредактируйте файл конфигурации nano.
./config/opensearch.yml.
Задайте имя хоста в network.host и укажите порт, который будет использоваться.
network.host: {{ dns-server }}
http.port: xxxx
transport.port: 19301
Задайте имя кластера:
cluster.name: cluster_name
Задайте имя nod и укажите её роли в кластере. Минимум одна из nod кластера должна иметь роль cluster_manager.
node.name: node_1
node.roles: [ data, cluster_manager ]
Задайте используемые хосты кластера:
discovery.seed_hosts: ["name_host_1", "name_host_2", "name_host_3"]
Удалите строку, если до этого была настроена конфигурация StandAlone.
discovery.type: single-node
Задайте node с ролью cluster_manager (укажите имена всех мастер-node, которые будут в кластере)
cluster.initial_cluster_manager_nodes:
- <имя node_1 с ролью cluster_manager>
- <имя node_2 с ролью cluster_manager>
- <имя node_3 с ролью cluster_manager>
discovery.seed_hosts:
- name_host_1:xxxx
- name_host_2:xxxx
- name_host_3:xxxx
Добавьте в блок Paths, Если блок Paths, отсутствует, то добавьте его.
path.data: var/lib/opensearch/
path.logs: var/log/opensearch/
Сохраните данные.
Добавьте привилегии в политику Java:
sudo nano /opensearch/server/search-0.0.2/opensearch-3.0.0-SNAPSHOT/jdk/lib/security/default.policy
Добавьте под комментарием:
//permissions needed by applications using java.desktop module
permission java.lang.RuntimePermission "setContextClassLoader"
Настройте автозапуск ранее созданного daemon-сервиса и запустите его:
sudo systemctl enable opensearch.service
sudo systemctl restart opensearch.service
Проверьте работоспособность запущенного daemon-сервиса:
sudo systemctl status opensearch.service
Пример ответа:
opensearch.service - Platform V Search
Loaded: loaded (/usr/lib/systemd/system/opensearch.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2023-04-04 17:12:58 MSK; 22h ago
Main PID: 18827 (bash)
CGroup: /system.slice/opensearch.service
Выполните проверку работоспособности
Server.
https://host:xxxx/
Пример ответа:
{
"name" : "<node name>",
"cluster_name" : "opensearch",
"cluster_uuid" : "fK3PQhtLR46xjZAce4Qgkg",
"version" : {
"distribution" : "opensearch",
"number" : "3.0.0",
"build_type" : "tar",
"build_hash" : "unknown",
"build_date" : "unknown",
"build_snapshot" : true,
"lucene_version" : "9.4.2",
"minimum_wire_compatibility_version" : "2.4.0",
"minimum_index_compatibility_version" : "2.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
Установка HealthCheck Plugin на сервер#
Выполнение данного шага обязательно. Описание установки приведено выше в разделе Установка в кластере.
Установка Security Search Plugin на сервер#
Создайте директорию plugins на уровне, где создана директория
server.
mkdir plugins
Поместите дистрибутив distr-security-plugin-name в директорию
plugins.Вернитесь в основную директорию
server. Вызовите следующую команду для установки плагина.
./bin/opensearch-plugin install file:/full_path_to_archive/distr-security-plugin-name.zip
На вопрос: "Continue with installation? [y/N]" - Нажмите
yиEnter. Вы должны увидеть: "-> Installed opensearch-security with folder name opensearch-security"Для проверки запустите следующую команду:
./bin/opensearch-plugin list
Данная программа показывает установленные плагины на сервере.
Настройте плагин Security для работы сервиса по HTTPS и с шифрованием данных.
Загрузите сертификаты, созданные для работы с компонентом SRHX в директорию с конфигурацией сервиса.
Начните редактирование файла с конфигурацией сервиса:
sudo nano /opensearch/server/search-0.0.2/opensearch-3.0.0-SNAPSHOT/config/opensearch.yml
Для настройки транспортного уровня вниз файла добавьте:
### TRANSPORT LAYER
plugins.security.ssl.transport.enabled: true
plugins.security.ssl.transport.pemcert_filepath: <cert-1>
plugins.security.ssl.transport.pemkey_filepath: <cert-1-key>
plugins.security.ssl.transport.pemtrustedcas_filepath: <ca.cert>
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.transport.enabled_protocols:
- "TLSv1.2"
plugins.security.ssl.transport.enabled_ciphers:
- "TLS_DHE_RSA_WITH_AES_256_CBC_SHA"
- "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256"
Для настройки http уровня добавьте:
### HTTP LAYER
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: <cert-1>
plugins.security.ssl.http.pemkey_filepath: <cert-1-key>
plugins.security.ssl.http.pemtrustedcas_filepath: <ca.cert>
plugins.security.ssl.http.clientauth_mode: REQUIRE
plugins.security.ssl.http.enabled_protocols:
- "TLSv1.2"
plugins.security.ssl.http.enabled_ciphers:
- "TLS_DHE_RSA_WITH_AES_256_CBC_SHA"
- "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256"
Добавьте остальные настройки безопасности:
plugins.security.allow_default_init_securityindex: true
plugins.security.authcz.admin_dn:
- <CN name cert 1>
plugins.security.nodes_dn:
- <CN name cert Dashboard cert>
- <CN name cert>
plugins.security.disabled: false
plugins.security.audit.type: internal_opensearch
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: [".plugins-ml-model", ".plugins-ml-task", ".opendistro-alerting-config", ".opendistro-alerting-alert*", ".opendistro-anomaly-results*", ".opendistro-anomaly-detector*", ".opendistro-anomaly-checkpoints", ".opendistro-anomaly-detection-state", ".opendistro-reports-*", ".opensearch-notifications-*", ".opensearch-notebooks", ".opensearch-observability", ".opendistro-asynchronous-search-response*", ".replication-metadata-store"]
node.max_local_storage_nodes: 3
plugins.security.cache.ttl_minutes: 720
Выполните рестарт
Serverдля применения всех параметров:
sudo systemctl restart opensearch.service
Проверьте работоспособность запущенного daemon-сервиса:
sudo systemctl status opensearch.service
Пример ответа:
opensearch.service - Platform V Search
Loaded: loaded (/usr/lib/systemd/system/opensearch.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2023-04-04 17:12:58 MSK; 22h ago
Main PID: 18827 (bash)
CGroup: /system.slice/opensearch.service
Выполните проверку работоспособности
Server.
https://host:xxxx/
Пример ответа:
{
"name" : "<node name>",
"cluster_name" : "opensearch",
"cluster_uuid" : "fK3PQhtLR46xjZAce4Qgkg",
"version" : {
"distribution" : "opensearch",
"number" : "3.0.0",
"build_type" : "tar",
"build_hash" : "unknown",
"build_date" : "unknown",
"build_snapshot" : true,
"lucene_version" : "9.4.2",
"minimum_wire_compatibility_version" : "2.4.0",
"minimum_index_compatibility_version" : "2.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
Установка Index Management plugin#
Выполнение данного шага обязательно. Описание установки приведено выше в разделе Установка в кластере настоящего документа.
Установка Prometheus-exporter plugin#
Выполнение данного шага обязательно. Описание установки приведено выше в разделе Установка в кластере настоящего документа.
Обязательное ограничение доступа к директории config#
Выполнение данного шага обязательно. Описание установки приведено выше в разделе Установка в кластере настоящего документа.
Проверка работоспособности кластера компонента SRHX#
Выполните запрос.
curl -XGET https://host:xxxx/_cat/nodes?v -u 'user:user' --insecure
Пример ответа:
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role node.roles cluster_manager name
10.**.**.1 48 97 4 0.04 0.09 0.12 dm cluster_manager,data * node_1
10.**.**.2 52 85 5 0.16 0.14 0.14 dm cluster_manager,data - node_2
10.**.**.3 26 90 7 0.17 0.19 0.22 dm cluster_manager,data - node_3
Создание Технических Учётных Записей для компонента Индексированный поиск (IDXS) (опционально)#
Создайте роль для технических учётных записей.
PUT https://host:xxxx/_plugins/_security/api/roles/technical_role
{
"cluster_permissions": [
"cluster:admin/*",
"cluster:monitor/*",
"indices:data/read/scroll/clear",
"indices:admin/index_template/put"
],
"index_permissions": [
{
"index_patterns": [
"*"
],
"fls": [],
"masked_fields": [],
"allowed_actions": [
"indices:admin/*",
"indices:data/*",
"indices:monitor/*"
]
}
],
"tenant_permissions": []
}
Создайте пользователей для технических учётных записей.
PUT https://host:xxxx/_plugins/_security/api/internalusers/<etl_user>
{
"password": "<etl_password>"
}
PUT https://host:xxxx/_plugins/_security/api/internalusers/<proxy_user>
{
"password": "<proxy_password>"
}
Прикрепите созданных пользователей к роли технических учётных записей.
PUT https://host:xxxx/_plugins/_security/api/rolesmapping/technical_role
{
"users": [
"<etl_user>",
"<proxy_user>"
]
}
Обновление#
Для обновления компонента SRHX необходимо удалить компонент SRHX текущей версии и выполнить установку. Установку новой версии компонента SRHX необходимо осуществить согласно описанным шагам в пункте Установка текущего документа. Дополнительных настроек не требуется.
Удаление#
Удаление дополнительных средств защиты информации осуществляется в соответствии с документацией к ним. Для удаления компонента SRHX необходимо удалить главную папку opensearch:
```bash
rm -rf opensearch
```
Проверка работоспособности#
Убедитесь в зеленом статусе кластера.
Учетная запись для проверки – Auth: admin/admin.
Проверка жизнеспособности кластера cluster/health
Выполните запрос.
GET https://host:xxxx/_cluster/health
Пример ответа:
Статус 200 Ок
{
"cluster_name": "{имя кластера}",
"status": "green",
"timed_out": false,
"number_of_nodes": {количество node},
"number_of_data_nodes": {количество node},
"active_primary_shards": {количество primary shards},
"active_shards": {количество активных shards},
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 0,
"delayed_unassigned_shards": 0,
"number_of_pending_tasks": 0,
"number_of_in_flight_fetch": 0,
"task_max_waiting_in_queue_millis": 0,
"active_shards_percent_as_number": {процент количества активных shards}
}
Доступность сервера
Запрос на проверку жизнеспособности компонента SRHX:
GET https://localhost:xxxx
Пример ответа:
Статус 200 Ок
{
"name" : "hostname-here",
"cluster_name" : "opensearch",
"cluster_uuid" : "7Nqtr0LrQTOveFcBb7Kufw",
"version" : {
"distribution" : "opensearch",
"number" : "2.4.0",
"build_type" : "zip",
"build_hash" : "77ef9e304dd6ee95a600720a387a9735bbcf7bc9",
"build_date" : "2022-11-05T05:50:15.404072800Z",
"build_snapshot" : false,
"lucene_version" : "9.4.1",
"minimum_wire_compatibility_version" : "7.10.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
Проверка наличия плагина HealthCheck
После успешной установки компонента SRHX необходимо:
проверить, что плагин HealthCheck был установлен;
проверить в списке пришедших плагинов наличие плагина HealthCheck;
выполнить запрос в Server на получение списка установленных плагинов:
GET https://localhost:xxxx/_cat/plugins?v
Пример ответа:
Статус 200 Ок
name |
component |
version |
|---|---|---|
srv-32-8.xxx.dev.ххх |
opensearch-security |
3.0.0.0-SNAPSHOT |
srv-32-8.xxx.dev.ххх |
search-healthcheck-plugin |
1.0.0 |
Проверка работоспособности плагина HealthCheck
Плагин HealthCheck отвечает за периодическую отправку запросов к компоненту SRHX, проверяющих жизнеспособность. Проверьте, что данный Endpoint работоспособен.
Выполните запрос healthcheck:
GET https://localhost:xxxx/ufs-healthcheck/
Пример ответа:
Статус 200 Ок
{
"success": true,
"body": "ON"
}
Проверка наличия плагинов
Выполните запрос на получение списка плагинов в кластере компонента SRHX:
Пример ответа:
GET https://host:xxxx/_cat/plugins
Статус 200 Ок
name |
component |
version |
|---|---|---|
srv-32-8.xxx.dev.ххх |
opensearch-security |
3.0.0.0-SNAPSHOT |
С проверкой работоспособности остальных компонентов можно ознакомиться в разделе Установка настоящего документа.
Откат#
Автоматической процедуры отката нет.
Откат к предыдущей версии компонента SRHX представляет собой удаление и установку последней стабильной версии компонента SRHX.
Для отката необходимо выполнить установку предыдущей стабильной версии компонента SRHX в соответствии с разделом Установка текущего документа.
Чек-лист валидации установки#
Убедитесь, что выполнена подготовка окружения согласно разделу Подготовка окружения данного документа.
Выполните проверку работоспособности компонента SRHX согласно разделу Проверка работоспособности настоящего документа.