OpenSearch — это платформа поиска и анализа с открытым исходным кодом, основанная на Elasticsearch — Версия Kibana с открытым исходным кодом (7.10.2 до) развития. он состоит из Amazon Web Services (AWS) Лидирующая компания, стремящаяся предоставить пользователям высокопроизводительные, масштабируемые и безопасные решения для поиска и анализа. OpenSearch широко используется в таких сценариях, как анализ журналов, визуализация данных в реальном времени, полнотекстовый поиск и мониторинг приложений.
Здесь мы используем TarBall для установки и развертывания.
# Введите каталог установки и распакуйте сжатый пакет.
cd /data
tar -zxvf opensearch-2.14.0-linux-x64.tar.gz
useradd opensearch
groupadd opensearch
usermod -a -G opensearch opensearch
# Все файлы конфигурации opensearch находятся в каталоге config.
cd /data/opensearch-2.14.0/config
# Изменить jvm.options
vi jvm.options
# Отрегулируйте квоту памяти кучи JVM в соответствии с ресурсами памяти компьютера и измените следующее содержимое.
-Xms32g
-Xmx32g
# Сохранить и выйти
:wq
# Устанавливается в соответствии с реальными потребностями
export OPENSEARCH_INITIAL_ADMIN_PASSWORD=password
Создайте корневой сертификат в качестве корневого сертификата для других сертификатов.
openssl genrsa -out root-ca-key.pem 2048
openssl req -x509 -new -nodes -key root-ca-key.pem -sha256 -days 3650 -out root-ca.pem \
-subj "/C=CA/ST=State/L=City/O=MyOrg/OU=MyUnit/CN=RootCA"
В Opensearch учетная запись администратора является учетной записью суперадминистратора.
Сертификат администратора в основном используется для получения расширенных разрешений, связанных с выполнением подключаемых модулей безопасности в кластере.
openssl genrsa -out admin-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out admin-key.pem
openssl req -new -key admin-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=A" -out admin.csr
openssl x509 -req -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem -days 730
В текущей среде имеется 3 узла, поэтому нам необходимо сгенерировать сертификаты для каждого узла.
Примечание. Поскольку внутренняя проверка сертификата Opensearch чрезвычайно сложна, чтобы избежать различных проблем с запуском сертификата, вызванных несогласованной проверкой subjectAltName во время запуска кластера, таких как неизвестные сертификаты, нераспознанные сертификаты, сбои чтения сертификатов, невозможность подключения узлов и т. д. вопросы. ; Рекомендуется генерировать сертификаты для всех узлов на одной машине на основе root-ca.pem.
После создания сертификата узла скопируйте файлы node.pem и node-key.pem соответствующего узла на соответствующий узел. В то же время установите разрешения сертификата для учетной записи opensearch. Избегайте невозможности прочитать сертификат из-за проблем с разрешениями.
Необходимо обратить внимание при настройке subj и subjectAltName. Рекомендуется установить имя хоста, чтобы избежать сбоя при запуске службы из-за неспособности имени хоста и IP-адреса совпадать при распознавании сертификата.
# Node cert 1
openssl genrsa -out Node1-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in Node1-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out Node1-key.pem
openssl req -new -key Node1-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=DATA-01" -out Node1.csr
echo 'subjectAltName=DNS:Node1' > Node1.ext
openssl x509 -req -in Node1.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out Node1.pem -days 730 -extfile Node1.ext
# Node cert 2
openssl genrsa -out Node2-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in Node2-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out Node2-key.pem
openssl req -new -key Node2-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=Node2" -out Node2.csr
echo 'subjectAltName=DNS:Node2' > DATA-02.ext
openssl x509 -req -in Node2.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out Node2.pem -days 730 -extfile Node2.ext
# Node cert 3
openssl genrsa -out Node3-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in Node3-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out Node3-key.pem
openssl req -new -key Node3-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=Node3" -out Node3.csr
echo 'subjectAltName=DNS:Node3' > Node3.ext
openssl x509 -req -in Node3.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out Node3.pem -days 730 -extfile Node3.ext
openssl genrsa -out client-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in client-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out client-key.pem
openssl req -new -key client-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=client" -out client.csr
echo 'subjectAltName=DNS:client' > client.ext
openssl x509 -req -in client.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out client.pem -days 730 -extfile client.ext
# Введите каталог конфигурации
cd /data/opensearch-2.14.0/config
# Редактировать opensearch.yml
vi opensearch.yml
# Измените следующие части
cluster.name: test-opensearch
node.name: Node1
path.data: /data/opensearchdata
path.logs: /var/log/opensearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["NodeIP1", "NodeIP2", "NodeIP3"]
cluster.initial_cluster_manager_nodes: ["Node1", "Node2"]
node.roles: [cluster_manager, data, ingest]
plugins.security.disabled: false
plugins.security.ssl.transport.pemtrustedcas_filepath: /data/opensearch-2.14.0/config/root-ca.pem
plugins.security.ssl.transport.pemcert_filepath: /data/opensearch-2.14.0/config/Node1.pem
plugins.security.ssl.transport.pemkey_filepath: /data/opensearch-2.14.0/config/Node1-key.pem
plugins.security.ssl.http.pemcert_filepath: /data/opensearch-2.14.0/config/Node1.pem
plugins.security.ssl.http.pemkey_filepath: /data/opensearch-2.14.0/config/Node1-key.pem
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemtrustedcas_filepath: /data/opensearch-2.14.0/config/root-ca.pem
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
plugins.security.authcz.admin_dn:
- "CN=A,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA"
plugins.security.nodes_dn:
- "CN=Node1,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA"
- "CN=Node2,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA"
- "CN=Node3,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA"
transport.port: 9300
cluster.initial_master_nodes: ["Node1", "Node2"]
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.transport.resolve_hostname: false
Поскольку запуск Opensearch с учетной записью root невозможен, для запуска нам необходимо использовать учетную запись Opensearch. Чтобы избежать сбоя при запуске из-за проблем с разрешениями, нам также необходимо выполнить соответствующие операции авторизации учетной записи в каталоге и файлах Opensearch.
chown -R opensearch:opensearch /path/to/opensearch
Здесь мы напрямую регистрируем сервис Opensearch как системный и используем systemctl для управления.
# Создайте файл opensearch.service
vi /etc/systemd/system/opensearch.service
# Добавьте следующее
[Unit]
Description=OpenSearch
Wants=network-online.target
After=network-online.target
[Service]
Type=forking
RuntimeDirectory=data
WorkingDirectory=/data/opensearch-2.14.0
ExecStart=/data/opensearch-2.14.0/bin/opensearch -d
User=opensearch
Group=opensearch
StandardOutput=journal
StandardError=inherit
LimitNOFILE=65535
LimitNPROC=4096
LimitAS=infinity
LimitFSIZE=infinity
TimeoutStopSec=0
KillSignal=SIGTERM
KillMode=process
SendSIGKILL=no
SuccessExitStatus=143
TimeoutStartSec=75
[Install]
WantedBy=multi-user.target
# Перезагрузить службу systemctl
systemctl daemon-reload
# Запустите службу opensearch.service
systemctl enable opensearch.service
# Запустить открытый поиск
systemctl start opensearch
# Посмотреть статус Opensearch
systemctl status opensearch
После запуска, как показано на рисунке:
После запуска кластера Opensearch плагины и функции, связанные с безопасностью, необходимо инициализировать перед использованием, прежде чем их можно будет использовать в обычном режиме.
Сценарий инициализации хранится в каталоге /path/to/opensearch/plugins/opensearch-security/tools/.
# Изменить разрешения для связанных сценариев
chmod 755 /path/to/opensearch-2.14.0/plugins/opensearch-security/tools/*.sh
# Войдите в каталог Opensearch
cd /path/to/opensearch
# руководить Инициализация разрешений безопасности
./plugins/opensearch-security/tools/securityadmin.sh \
-arc \
-h NodeIP \
-cd /data/opensearch-2.14.0/config/opensearch-security/ \
-icl \
-key /data/opensearch-2.14.0/config/admin-key.pem \
-cert /data/opensearch-2.14.0/config/admin.pem \
-cacert /data/opensearch-2.14.0/config/root-ca.pem \
-nhnv
# Объявите переменную среды при вызове сценария, чтобы избежать проблем.
OPENSEARCH_JAVA_HOME=/path/to/opensearch-2.14.0/jdk ./hash.sh
# Введите необходимый пароль в командной строке и запишите выходной хэш.
# Откройте файл Internal_users.yml.
vi /path/to/opensearch-2.14.0/config/opensearch-security/internal_users.yml
# В разделе учетной записи администратора замените хеш выходным файлом hash.sh, указанным на предыдущем шаге.
admin:
hash: "$2y$1EXAMPLEQqwS8TUcoEXAMPLEeZ3lEHvkEXAMPLERqjyh1icEXAMPLE."
reserved: true
backend_roles:
- "admin"
description: "Admin user"
# Перезапустите службу Opensearch после внесения изменений.
systemctl restart opensearch.service
curl https://IP:9200 -u admin:password -k
Результат возврата следующий: