4

到目前为止,这就是我为保护我的 SOLR 应用程序所做的工作。

在 SOLR 的 web.xml 文件中,我正在尝试执行以下操作

  • 仅允许 /select 请求用户或管理员请求。
  • 除了管理员之外,不允许对 SOLR 的所有其他请求。

我在 SOLR 的 web.xml 文件中添加了安全约束

<security-constraint> 
    <web-resource-collection> 
        <web-resource-name>Solr Admin</web-resource-name> 
        <url-pattern>/*</url-pattern> 
    </web-resource-collection>
    <auth-constraint> 
        <role-name>admin</role-name> 
    </auth-constraint>
</security-constraint> 
<security-constraint> 
    <web-resource-collection> 
        <web-resource-name>Public</web-resource-name> 
        <url-pattern>/primary/select/*</url-pattern> 
        <url-pattern>/reindex/select/*</url-pattern> 
    </web-resource-collection>
    <auth-constraint>
        <role-name>user</role-name>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>

这就是我在客户端应用程序中实例化 SOLR HTTP 连接的方式

//primary core
HttpSolrServer primaryindex = new HttpSolrServer(serverUrl + "/" + PRIMARYINDEX);
    HttpClientUtil.setBasicAuth((DefaultHttpClient) primaryindex.getHttpClient(), "user", "user");

//reindex core
HttpSolrServer reindex = new HttpSolrServer(serverUrl + "/" + REINDEX);
    HttpClientUtil.setBasicAuth((DefaultHttpClient) reindex.getHttpClient(), "user", "user");

tomcat-users.xml 文件的角色和用户设置如下

<role rolename="user"/>
<user username="user" password="user" roles="user"/>
<user password="admin" roles="manager-script,admin" username="admin"/>

以上工作完美。显然在生产中我会有更强大的用户名和密码。

问题

我还需要其他什么来保护我的 SOLR 实例,或者以上内容就足够了吗?我有 1 个运行客户端应用程序和 SOLR 应用程序的 Tomcat 7 实例。这就是我想要达到的目标。

  • 不想让任何人在没有用户名和密码的情况下登录管理员
  • 不希望任何人访问我的客户端应用程序以外的核心

我可以在上述基础上向 SOLR 添加 Spring 安全性,但这有必要吗?

4

2 回答 2

3

如果您启用了复制处理程序,请确保将其放在安全角色之一的后面。我看到人们做的另一件事是在不同的端口上运行 admin。最好在需要身份验证的页面上使用 SSL,这样您就不会发送明文密码,因此管理和复制将发生在 8443 上,而常规查询将发生在 8080 上。

如果您要签署自己的证书,请查看这个有用的 SO 页面:

如何在特定连接上使用不同的证书?

于 2013-07-16T13:17:03.730 回答
3

我不知道 /admin 是 SOLR admin 的上下文,因为 /admin 并没有真正出现在 URL 中。但是security-contraints在 web.xml 中添加 /admin 可以保护管理应用程序。

<security-constraint> 
    <web-resource-collection> 
        <web-resource-name>Admin</web-resource-name> 
        <url-pattern>/admin/*</url-pattern> 
        <url-pattern>/admin.html</url-pattern> 
    </web-resource-collection>
    <auth-constraint> 
        <role-name>admin</role-name> 
    </auth-constraint>
</security-constraint> 

<security-constraint>
    <!-- This one is necessary to show the image on the Solr start page -->
    <web-resource-collection>
        <web-resource-name>Admin images</web-resource-name>
        <url-pattern>*.png</url-pattern>
    </web-resource-collection>
    <auth-contraint>
        <role-name>admin</role-name>
    </auth-contraint>
</security-constraint>

<login-config>
    <auth-method>DIGEST</auth-method>
    <realm-name>admin</realm-name>
</login-config> 
于 2013-08-01T17:54:16.823 回答