保护 Solr

包括 Admin UI 在内的任何 Solr API 都不适合向非可信方公开。调整防火墙,以便仅允许受信任的计算机和人员访问。因此,该项目不会将例如 Admin UI XSS 问题视为安全漏洞。但是,我们仍然要求您在 JIRA 中报告此类问题。

在规划如何保护 Solr 时,您应该考虑哪些可用功能或方法适合您

使用 TLS (SSL) 证书加密

加密到/从 Solr 以及 Solr 节点之间的流量可以防止敏感数据在网络上泄露。在使用身份验证时,TLS 通常也是防止凭据嗅探的必要条件。

有关详细信息,请参阅部分 启用 SSL

身份验证和授权

使用 Admin UI 中的 Security UI 屏幕管理用户、角色和权限。

请参阅部分 配置身份验证和授权 以了解如何使用 security.json 文件。

身份验证插件

身份验证可确保您知道用户的身份。Solr 附带的身份验证插件是

基本身份验证插件

Kerberos 身份验证插件

JWT 身份验证插件

证书认证插件

Hadoop 认证插件

授权插件

授权可确保只有具有必要角色/权限的用户才能访问任何给定资源。Solr 附带的授权插件是

基于规则的授权插件

外部角色基于规则的授权插件

审计日志记录

审计日志记录将记录传入群集的请求的审计跟踪,例如拒绝用户访问管理 API。在部分 审计日志记录 中了解有关审计日志记录以及如何实现审计记录器插件的更多信息。

IP 访问控制

通过环境变量或在 solr.in.sh/solr.in.cmd 中设置 SOLR_IP_ALLOWLIST/SOLR_IP_DENYLIST 来限制对特定主机的网络访问。

# Allow IPv4/IPv6 localhost, the 192.168.0.x IPv4 network, and 2000:123:4:5:: IPv6 network.
SOLR_IP_ALLOWLIST="127.0.0.1, [::1], 192.168.0.0/24, [2000:123:4:5::]/64"
# Explicitly deny access to two problematic hosts.
SOLR_IP_DENYLIST="192.168.0.3, 192.168.0.4"

保护 ZooKeeper 流量

ZooKeeper 是 SolrCloud 群集的核心重要部分,了解如何保护其内容在部分 ZooKeeper 访问控制 中进行了介绍。

网络配置

管理员应仔细考虑其安全设置,作为转向生产环境的重要步骤。Solr 提供了许多开箱即用的功能来满足用户的安全需求:可以使用一系列安全插件配置身份验证和授权,可以通过启用 SSL/TLS 来增强隐私,并且(在 SolrCloud 中)可以使用 ACL 规则保护 ZooKeeper 数据以防止未经授权的读取和写入。

即使采取了这些或其他措施,强烈建议始终使用防火墙保护 Solr。Solr 不适合在开放的互联网上公开。

强烈建议 Solr 仅侦听严格必需的那些网络接口。为了防止管理员无意中更广泛地公开 Solr,Solr 默认仅侦听环回接口(“127.0.0.1”)。大多数部署都需要将此值更改为限制较少的某个值,以便可以从其他计算机访问。这可以通过在环境的“include 脚本”(solr.in.shsolr.in.cmd)中设置 SOLR_JETTY_HOST 值来完成

 ----
 SOLR_JETTY_HOST="0.0.0.0"
 ----

相同的设置也可用作 -Dsolr.jetty.host 系统属性。

如果与 Solr 一起运行,嵌入式 Zookeeper 也是如此。默认情况下,嵌入式 Zookeeper 仅侦听环回接口(“127.0.0.1”)。绑定主机通过环境的“include 脚本”(solr.in.shsolr.in.cmd)中的 SOLR_ZK_EMBEDDED_HOST 值进行控制

 ----
 SOLR_ZK_EMBEDDED_HOST="0.0.0.0"
 ----

相同的设置也可用作 -Dsolr.zk.embedded.host 系统属性。