Elasticsearch 安全原则

编辑

保护您的 Elasticsearch 集群及其包含的数据至关重要。实施深度防御策略可提供多层安全性,以帮助保护您的系统。以下原则为以安全方式运行 Elasticsearch 奠定了基础,有助于缓解对您系统的多层次攻击。

启用安全功能运行 Elasticsearch

编辑

永远不要在未启用安全功能的情况下运行 Elasticsearch 集群。这个原则再怎么强调也不为过。在未启用安全功能的情况下运行 Elasticsearch 会使您的集群暴露给任何可以向 Elasticsearch 发送网络流量的人,允许这些人下载、修改或删除您集群中的任何数据。请自动启用安全功能启动 Elastic Stack手动配置安全功能,以防止未经授权的访问您的集群,并确保节点间通信的安全。

使用专用的非 root 用户运行 Elasticsearch

编辑

永远不要尝试以 root 用户身份运行 Elasticsearch,这将使任何防御策略失效,并允许恶意用户在您的服务器上执行任何操作。您必须创建一个专用的、非特权用户来运行 Elasticsearch。默认情况下,Elasticsearch 的 rpmdebdocker 和 Windows 包包含一个具有此范围的 elasticsearch 用户。

保护 Elasticsearch 免受公共互联网流量的影响

编辑

即使启用了安全功能,也永远不要将 Elasticsearch 暴露给公共互联网流量。使用应用程序来清理对 Elasticsearch 的请求仍然存在风险,例如,恶意用户编写 _search 请求可能会使 Elasticsearch 集群不堪重负并使其崩溃。尽可能保持 Elasticsearch 的隔离,最好是在防火墙和 VPN 之后。任何面向互联网的应用程序都应该运行预定义的聚合,或者根本不运行聚合。

虽然您绝对不应该直接将 Elasticsearch 暴露给互联网,但您也不应该直接将 Elasticsearch 暴露给用户。相反,请使用中间应用程序代表用户发出请求。这种实现方式允许您跟踪用户行为,例如可以提交哪些请求,以及提交到集群中的哪些特定节点。例如,您可以实现一个应用程序,该应用程序接受来自用户的搜索词,并通过 simple_query_string 查询进行处理。

实施基于角色的访问控制

编辑

为您的用户定义角色分配适当的权限,以确保用户仅能访问他们需要的资源。此过程确定传入请求背后的用户是否被允许运行该请求。