【问题标题】:How can I secure Solr 5.3.1 only admin pages如何保护 Solr 5.3.1 仅管理页面
【发布时间】:2015-11-17 05:51:56
【问题描述】:

我对 Solr 还很陌生,过去一天半来我一直在研究这个问题,最后转向这里。

我有一个 Solr 服务器启动并运行,我让我的网络管理员在防火墙中配置了一个规则,以便我们可以访问它以从我的 JavaScript 应用程序进行查询。这行得通。我遇到的问题是 Solr 管理页面对世界完全开放,我已经尝试了各种帖子中描述的所有内容,但 ZooKeeper 方法除外,我真的不想尝试因为我对设置不感兴趣ZooKeeper 和 SolrCloud。

参考帖子:http://muddyazian.blogspot.com/2013/11/how-to-require-password-authentication.html 和其他一些人

我所做的是修改 /opt/solr/server/etc 中的 jetty.xml 并添加了这个

<Call name="addBean">
  <Arg>
    <New class="org.eclipse.jetty.security.HashLoginService">
      <Set name="name">Solr Admin Access</Set>
      <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
      <Set name="refreshInterval">0</Set>
    </New>
  </Arg>
</Call>

然后我在 /opt/solr/server/solr-webapp/webapp/WEB-INF 中的 web.xml 中添加了下面的配置

<security-constraint>
    <web-resource-collection>
      <web-resource-name>Solr authenticated application</web-resource-name>
      <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>admin</role-name>
    </auth-constraint>
  </security-constraint>

  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Solr Admin Access</realm-name>

  </login-config>

然后我创建了一个 realm.properties 文件,根据这篇文章 Jetty/SOLR Admin Panel Password 对密码进行哈希处理

Solr 现在是安全的,但一切都受密码保护,我希望我的查询是开放的,其余的都受到保护。我尝试添加不同的 url 模式,例如 /admin/* 、 /mycollection/dataimport/* 等,但这些似乎都不会影响查询也是安全的事实。参考https://gist.github.com/jstrassburg/9777027

【问题讨论】:

  • 我自己偶然发现了这个。从 5.4 开始,添加了更多基于角色的安全功能,并且我已经设法使用 here 中描述的规则锁定读取和更新。但是,管理面板本身仍然是敞开的。我们要做的就是需要基本身份验证才能访问 Solr 5 中的任何内容。
  • 啊哈。发布赏金后不久,我看到this answer 实际上确实有解决方案,但它仅适用于 SolrCloud。 Solr 尚不支持独立模式下的基本身份验证。我假设他们在the APF JIRA 有一张票,但我找不到。
  • 您没有在帖子中提及您是如何以及在何处创建 realm.properties。当您添加此内容时,您将不再依赖参考帖子,从而使此帖子能够自我维持。

标签: security solr jetty


【解决方案1】:

按照Exclude a JSP from web.xml's security-contraint 的建议,您可以保持配置不变,但公开您希望公开的端点。

因此,您可以将这样的&lt;security-constraint&gt; 添加到您的web.xml,但为匹配的&lt;url-pattern&gt; 省略&lt;auth-constraint&gt;。这将使其向公众开放。除了 Solr 实例其余部分的基本身份验证之外,您还可以逐步公开应该公开的核心或处理程序。

<security-constraint>
  <web-resource-collection>
    <web-resource-name>mycollection</web-resource-name>
    <url-pattern>/mycollection/*</url-pattern>
  </web-resource-collection>
</security-constraint>

需要注意的是,您需要添加应作为自己的 URL 模式公开的 任何内容。但这也可能是一个优点,因为您可以选择对集合进行细粒度的访问控制 - 例如每个集合一个用户。

【讨论】:

  • 为我工作。谢谢!希望这个解决方案可以在某个时候在 Solr 文档中得到解释,因为它们越来越注重安全性,并且很多人运行单独的非云实例。
  • 不客气。我们还在运行一个单独的非云实例:)
猜你喜欢
  • 1970-01-01
  • 2017-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
相关资源
最近更新 更多