Field-level security
Тема дорожной карты · Elasticsearch
Безопасность на уровне полей (Field-Level Security, FLS) в Elasticsearch — это гранулярная функция авторизации, ограничивающая, какие поля документа пользователь может видеть при выполнении операций поиска и получения. FLS настраивается в определении роли через PUT /_security/role/<role_name> с добавлением блока field_security в раздел привилегий индекса, где указывается либо grant (белый список видимых полей), либо except (чёрный список скрываемых полей). Когда пользователь с ролью, содержащей ограничения FLS, отправляет запрос GET /<index>/_search, Elasticsearch автоматически фильтрует разделы _source и fields совпадающих документов, удаляя поля, к которым у пользователя нет доступа. Безопасность на уровне полей в Elasticsearch широко применяется в мультитенантных средах, чтобы разные группы пользователей, работающие с одним индексом, не могли читать чужие чувствительные столбцы — зарплаты, персональные данные, медицинскую информацию. FLS работает совместно с безопасностью на уровне документов (ограничивающей доступ к конкретным документам) и RBAC, образуя полную модель управления доступом к данным в Elastic Stack.
Как это работает
Field-level security: 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.
Типичные ошибки
Ловушки Field-level security: ES в интернете без security (ransomware за день); elastic superuser везде (rotate + scoped API keys); HTTP-only внутри кластера (eavesdropping); нет мониторинга failed auth attempts.