Скрипты и безопасность
Painless и Elasticsearch реализуют уровни безопасности, чтобы создать стратегию защиты в глубину для безопасного выполнения скриптов.
Painless использует детализированный белый список. Всё, что не входит в белый список, приводит к ошибке компиляции. Эта возможность является первым уровнем безопасности в стратегии защиты в глубину для скриптов.
Вторым уровнем безопасности является Java Security Manager. Elasticsearch при запуске включает Java Security Manager, чтобы ограничить действия, которые могут выполнять части кода. Painless использует Java Security Manager в качестве дополнительного уровня защиты, предотвращая выполнение скриптов таких действий, как запись файлов и прослушивание сокетов.
Elasticsearch использует seccomp в Linux, Seatbelt в macOS и ActiveProcessLimit в Windows в качестве дополнительных уровней безопасности, чтобы предотвратить создание виртуальных копий или запуск других процессов Elasticsearch.
Вы можете изменить следующие параметры скрипта, чтобы ограничить типы разрешенных скриптов и контролировать доступные контексты для выполнения скриптов. Чтобы реализовать дополнительные уровни в вашей стратегии защиты в глубину, следуйте принципам безопасности Elasticsearch.
Параметр разрешенных типов скриптов
Elasticsearch поддерживает два типа скриптов: inline и stored. По умолчанию Elasticsearch настроен на выполнение обоих типов скриптов. Чтобы ограничить типы выполняемых скриптов, установите script.allowed_types на inline или stored. Чтобы предотвратить выполнение любых скриптов, установите script.allowed_types на none.
Если вы используете Kibana, установите script.allowed_types на both или inline. Некоторые функции Kibana полагаются на встроенные скрипты и не будут работать должным образом, если Elasticsearch не разрешает встроенные скрипты.
Например, чтобы выполнить скрипты типа inline, но не скрипты типа stored:
script.allowed_types: inline
Параметр разрешенных контекстов скриптов
По умолчанию разрешены все контексты скриптов. Используйте параметр script.allowed_contexts, чтобы указать разрешенные контексты. Чтобы не разрешить никакие контексты, установите script.allowed_contexts на none.
Например, чтобы разрешить выполнение скриптов только в контекстах scoring и update:
script.allowed_contexts: score, update
© 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/modules-scripting-security.html