TLS шифрование
Тема дорожной карты · Elasticsearch
TLS-шифрование в Elasticsearch защищает как транспортный уровень (используемый для внутренней коммуникации между узлами кластера), так и HTTP-уровень (используемый клиентами, Kibana и Beats для обращения к REST API). Elasticsearch требует отдельных TLS-сертификатов для этих двух каналов, настраиваемых в elasticsearch.yml в пространствах имён xpack.security.transport.ssl и xpack.security.http.ssl соответственно. Простейший способ создать необходимые сертификаты — использовать утилиту командной строки elasticsearch-certutil, которая может сгенерировать центр сертификации и сертификаты для каждого узла в форматах PEM или PKCS#12. Без включённого TLS-шифрования на HTTP-уровне Elasticsearch по умолчанию отклоняет учётные данные basic-auth в производственном режиме, чтобы пароли не передавались в открытом виде. После включения TLS клиенты должны подключаться по HTTPS (например, GET https://localhost:9200/_cluster/health) и либо доверять сертификату CA, либо отключать проверку имени хоста во время разработки через настройку Kibana elasticsearch.ssl.verificationMode: none.
Как это работает
TLS шифрование: built-in security (бесплатно с 7.x): аутентификация (native realm, LDAP, SAML, OIDC, Kerberos), TLS encryption (transport + HTTP — обязателен с 8.x по дефолту), RBAC (built-in + custom roles), Document/Field-level security (ограничивают, какие поля юзер может читать). API keys для service-to-service auth. Audit logs для compliance. Без security ES wide open — любой с network access читает/пишет.
Когда применять
Включайте security с первого дня — 8.x делает on-by-default, не выключайте. API keys для app-to-ES auth (не пароли). TLS на transport (inter-node) + HTTP — нетривиальный certificate setup но обязателен для prod. Field-level security для PII handling. Audit logs для удовлетворения compliance.
Типичные ошибки
Ловушки TLS шифрование: ES в интернете без security (ransomware за день); elastic superuser везде (rotate + scoped API keys); HTTP-only внутри кластера (eavesdropping); нет мониторинга failed auth attempts.