保护 Solr

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

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

使用 TLS (SSL) 证书进行加密

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

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

身份验证和授权

使用管理界面中的 安全界面 屏幕来管理用户、角色和权限。

请参阅 配置身份验证和授权 部分,了解如何使用 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”)。大多数部署都需要将此值更改为限制较少的值,以便可以从其他机器访问它。可以通过在环境的“包含脚本”(solr.in.shsolr.in.cmd)中设置 SOLR_JETTY_HOST 值来完成此操作。

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

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

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

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

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