Ограничения безопасности
Плагины
Инфраструктура плагинов Elasticsearch чрезвычайно гибкая в плане расширяемости. Хотя это открывает Elasticsearch для широкого спектра (часто пользовательских) дополнительных возможностей, в области безопасности эта высокая гибкость имеет свои недостатки. Мы не контролируем код сторонних плагинов (открытых или нет) и поэтому не можем гарантировать их соответствие функциям безопасности Elastic Stack. По этой причине сторонние плагины не поддерживаются официально в кластерах с включенными функциями безопасности.
Изменения в поведении подстановочных символов
Кластеры Elasticsearch с включенными функциями безопасности применяют _all и другие подстановочные символы к потокам данных, индексам и алиасам, для которых у текущего пользователя есть привилегии, а не ко всем потокам данных, индексам и алиасам в кластере.
API для множества документов
API multi get и multi term vectors выбрасывают исключение IndexNotFoundException при попытке доступа к несуществующим индексам, для которых у пользователя нет авторизации. Это приводит к утечке информации о том, что поток данных или индекс не существует, в то время как пользователь не имеет права знать об этих потоках данных или индексах.
Отфильтрованные алиасы индексов
Алиасы, содержащие фильтры, не являются безопасным способом ограничения доступа к отдельным документам из-за ограничений, описанных в Утечка имён индексов и полей при использовании алиасов. Функции безопасности Elastic Stack обеспечивают безопасный способ ограничения доступа к документам через функцию управления доступом на уровне документов и полей.
Ограничения безопасности на уровне полей и документов
Когда роль пользователя предоставляет доступ к документам или безопасности на уровне полей для потока данных или индекса:
-
Пользователь не может выполнять операции записи:
- API update не поддерживается.
- Запросы update, включенные в запросы bulk, не поддерживаются.
-
Пользователь не может выполнять операции, которые фактически делают содержимое доступным под другим именем, включая действия из следующих API:
-
Кэш запросов отключен для поисковых запросов, если истинно одно из следующих утверждений:
- Запрос роли, определяющий безопасность на уровне документов, шаблонизирован с использованием хранимого скрипта.
- Целевые индексы — это смесь локальных и удалённых индексов.
Когда роль пользователя включает безопасность на уровне документов для потока данных или индекса:
- Безопасность на уровне документов не влияет на глобальную статистику индекса, используемую для оценки релевантности. Это означает, что оценки вычисляются без учёта запроса роли. Документы, не соответствующие запросу роли, никогда не возвращаются.
-
has_childиhas_parentзапросы не поддерживаются в качестве параметров запроса в определении роли.has_childиhas_parentзапросы могут быть использованы в API поиска с включённой безопасностью на уровне документов. - Выражения Date Math не могут содержать
nowв запросах диапазона с полями даты. -
Любой запрос, выполняющий удалённые вызовы для получения данных запроса, не поддерживается, включая следующие запросы:
-
termsзапрос с поиском по терминам -
geo_shapeзапрос с индексированными формами -
percolateзапрос
-
- Если указаны суффиксы и включена безопасность на уровне документов, указанные суффиксы игнорируются.
- Запрос поиска не может быть профилирован, если включена безопасность на уровне документов.
- API перечисления терминов не возвращает термины, если включена безопасность на уровне документов.
- Запрос
multi_matchне поддерживает указание полей с использованием подстановочных символов.
Хотя безопасность на уровне документов предотвращает просмотр ограниченных документов, всё ещё возможно создать поисковые запросы, возвращающие агрегированную информацию обо всём индексе. Пользователь, чьё разрешение ограничено определёнными документами в индексе, всё ещё может узнать имена полей и термины, существующие только в недоступных документах, и подсчитать, сколько недоступных документов содержат данный термин.
Утечка имён индексов и полей при использовании алиасов
Вызов определённых API Elasticsearch на алиасе может привести к утечке информации об индексах, к которым у пользователя нет доступа. Например, при получении отображения для алиаса с помощью API _mapping ответ содержит имя индекса и отображения для каждого индекса, к которому относится алиас.
До решения этой проблемы избегайте имён индексов и полей, содержащих конфиденциальную или важную информацию.
LDAP-домен
В настоящее время LDAP-домен не поддерживает обнаружение вложенных LDAP-групп. Например, если пользователь является членом group_1, а group_1 является членом group_2, то будет обнаружен только group_1. Однако домен Active Directory поддерживает транзитивное членство в группах.
Проверка совместного использования ресурсов для пользователей и API-ключами
Результат запросов асинхронного поиска и прокрутки может быть получен позже тем же пользователем или API-ключом, который отправил исходный запрос. Проверка подразумевает сравнение имени пользователя, типа домена аутентификации и (для доменов, отличных от файла или родного) имени домена. Если вы использовали API-ключ для отправки запроса, то результаты может получить только этот ключ. Эта логика также имеет несколько ограничений:
- Два разных домена могут иметь одинаковое имя на разных узлах. Это не рекомендуемый способ настройки доменов, поэтому проверка совместного использования ресурсов не пытается обнаружить это несоответствие.
- Домены могут быть переименованы. Это может привести к несоответствию для проверки совместного использования ресурсов, когда вы отправляете асинхронный запрос или запрос прокрутки, затем переименовываете домен и пытаетесь получить результаты. Поэтому переименование доменов следует проводить с осторожностью, так как это может привести к осложнениям для более чем просто проверки совместного использования ресурсов.
- Имя пользователя динамически вычисляется для доменов, поддерживаемых определёнными внешними поставщиками аутентификации. Например, имя пользователя может быть получено из части DN в LDAP-домене. Теоретически возможно, что два разных пользователя из внешней системы будут отображаться под одним и тем же именем пользователя. Мы рекомендуем избегать такой ситуации в первую очередь. Поэтому проверка совместного использования ресурсов не учитывает это потенциальное расхождение.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/security-limitations.html