Ограничение подключений с помощью фильтрации IP-адресов
Вы можете применять фильтрацию IP-адресов к клиентам приложений, клиентам узлов или транспортным клиентам, а также к другим узлам, пытающимся присоединиться к кластеру.
Если IP-адрес узла находится в чёрном списке, функции безопасности Elasticsearch позволяют подключиться к Elasticsearch, но соединение будет немедленно прервано, и запросы не будут обработаны.
Установки Elasticsearch не предназначены для публичного доступа через Интернет. Фильтрация IP-адресов и другие возможности функций безопасности Elasticsearch не изменяют этого условия.
Включение фильтрации IP-адресов
Функции безопасности Elasticsearch содержат функцию контроля доступа, которая позволяет или отклоняет хосты, домены или подсети. Если функция предоставления привилегий оператору включена, только пользователи-операторы могут обновлять эти параметры.
Вы настраиваете фильтрацию IP-адресов, указав параметры xpack.security.transport.filter.allow и xpack.security.transport.filter.deny в elasticsearch.yml. Правила разрешения имеют приоритет перед правилами запрета.
Если не указано иное, параметры xpack.security.http.filter.* по умолчанию принимают значение соответствующего параметра xpack.security.transport.filter.*.
xpack.security.transport.filter.allow: "192.168.0.1" xpack.security.transport.filter.deny: "192.168.0.0/24"
Ключевое слово _all может использоваться для запрета всех подключений, которые не разрешены явно.
xpack.security.transport.filter.allow: [ "192.168.0.1", "192.168.0.2", "192.168.0.3", "192.168.0.4" ] xpack.security.transport.filter.deny: _all
Настройка фильтрации IP-адресов также поддерживает IPv6-адреса.
xpack.security.transport.filter.allow: "2001:0db8:1234::/48" xpack.security.transport.filter.deny: "1234:0db8:85a3:0000:0000:8a2e:0370:7334"
При наличии DNS-разрешений вы также можете фильтровать по именам хостов.
xpack.security.transport.filter.allow: localhost xpack.security.transport.filter.deny: '*.google.com'
Отключение фильтрации IP-адресов
Отключение фильтрации IP-адресов может незначительно улучшить производительность в некоторых условиях. Для полного отключения фильтрации IP-адресов установите значение параметра xpack.security.transport.filter.enabled в файле конфигурации elasticsearch.yml на false.
xpack.security.transport.filter.enabled: false
Вы также можете отключить фильтрацию IP-адресов для транспортного протокола, но включить её только для HTTP.
xpack.security.transport.filter.enabled: false xpack.security.http.filter.enabled: true
Указание профилей транспортного TCP
Профили транспортного TCP позволяют Elasticsearch привязываться к нескольким хостам. Функции безопасности Elasticsearch позволяют применять различную фильтрацию IP-адресов для разных профилей.
xpack.security.transport.filter.allow: 172.16.0.0/24 xpack.security.transport.filter.deny: _all transport.profiles.client.xpack.security.filter.allow: 192.168.0.0/24 transport.profiles.client.xpack.security.filter.deny: _all
Если вы не укажете профиль, default будет использоваться автоматически.
Фильтрация HTTP
Возможно, вам потребуется различная фильтрация IP-адресов для транспортного и HTTP-протоколов.
xpack.security.transport.filter.allow: localhost xpack.security.transport.filter.deny: '*.google.com' xpack.security.http.filter.allow: 172.16.0.0/16 xpack.security.http.filter.deny: _all
Динамическое обновление настроек фильтра IP-адресов
В случае работы в среде с сильно динамичными IP-адресами, например, в облачных хостингах, сложно заранее узнать IP-адреса при развертывании машины. Вместо изменения файла конфигурации и перезапуска узла, можно использовать API Cluster Update Settings. Например:
PUT /_cluster/settings
{
"persistent" : {
"xpack.security.transport.filter.allow" : "172.16.0.0/24"
}
} Также можно динамически полностью отключить фильтрацию:
PUT /_cluster/settings
{
"persistent" : {
"xpack.security.transport.filter.enabled" : false
}
} Чтобы избежать блокировки доступа к кластеру, адрес привязки транспортного протокола по умолчанию никогда не будет запрещён. Это означает, что вы всегда можете подключиться к системе через SSH и использовать curl для внесения изменений.
© 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/7.17/ip-filtering.html