Начиная с Elastic Stack 6.8 дистрибутив по умолчанию (лицензия Basic), включает в себя возможность шифрования. Инструкции описывает как подключить шифрование (TLS, SSL) в Elasticsearch.
Функция шифрования доступна для версии с подключенным XPACK. Для OSS версии существуют пакеты только для конкретных версий и рассматриваться не будут.
Установка перемененных окружения
Данный шаг не обязателен, возможно использовать полные пути.
1 2 | ES_HOME=/usr/share/elasticsearch ES_PATH_CONF=/etc/elasticsearch |
Создание сертификата
Переходим в директорию /etc/elasticsearch, создаем каталог для хранения сертификатов и генерируем сами сертификаты
1 2 3 | cd $ES_PATH_CONF mkdir certs openssl req -newkey rsa:4096 -nodes -keyout es.key -x509 -days 3650 -out es.crt |
Настройка elasticsearch.yml
После включения XPACK доступ к ноде будет доступен только по Логину и Паролю, созданному ниже.
В файле настроек добавляем следующие параметры
1 2 3 4 5 6 7 8 9 | xpack.security.enabled: true xpack.security.http.ssl.enabled: true xpack.security.transport.ssl.enabled: true xpack.security.http.ssl.key: certs/node1.key xpack.security.http.ssl.certificate: certs/node1.crt xpack.security.http.ssl.certificate_authorities: certs/ca.crt xpack.security.transport.ssl.key: certs/node1.key xpack.security.transport.ssl.certificate: certs/node1.crt xpack.security.transport.ssl.certificate_authorities: certs/ca.crt |
На других нодах в кластере, генерация сертификата не требуется, переносим уже имеющиеся.
Настройки полностью идентичны.
После изменения настроек потребуется перезапуск ноды
1 | systemctl restart elasticsearch |
Установка пароля встроенных пользователей
Изменение паролей требуется только на одной ноде кластера. Настройки будут применены на все ноды.
1 2 | cd $ES_HOME bin/elasticsearch-setup-passwords auto -u "https://localhost:9200" |
после запуска Elasticsearch сгенерирует пароли для всех встроенных пользователей.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user. The passwords will be randomly generated and printed to the console. Please confirm that you would like to continue [y/N] y Changed password for user apm_system PASSWORD apm_system = <apm_system_password> Changed password for user kibana PASSWORD kibana = <kibana_password> Changed password for user logstash_system PASSWORD logstash_system = <logstash_system_password> Changed password for user beats_system PASSWORD beats_system = <beats_system_password> Changed password for user remote_monitoring_user PASSWORD remote_monitoring_user = <remote_monitoring_user_password> Changed password for user elastic PASSWORD elastic = <elastic_password> |
Если пароли не должны создаваться автоматически, то можно указать свой пароль для каждого пользователя, командой ниже.
1 | bin/elasticsearch-setup-passwords interactive -u "https://localhost:9200" |