2015-11-17 98 views
12

我對Solr相當新穎,我一直在研究這一切,過去一天和一半,最後轉向這裏。我如何確保Solr 5.3.1只有管理頁面

我有一個Solr服務器啓動並運行,我的網絡管理員在防火牆中配置了一條規則,以便我們可以從我的JavaScript應用程序訪問它。這工作。我遇到的問題是Solr管理頁面完全向全世界開放,我嘗試了各種帖子中所描述的一切,除了ZooKeeper方法之外,我不想試試因爲我對設置不感興趣up ZooKeeper和SolrCloud。

參考職位:http://muddyazian.blogspot.com/2013/11/how-to-require-password-authentication.html和其他一些

我所做的修改的jetty.xml的/ opt/Solr的/服務器的/ etc,並將此

<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> 

然後我加入web.xml in /opt/solr/server/solr-webapp/webapp/WEB-INF下面的配置

<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

+0

我自己偶然發現了這個。從5.4開始,已經添加了更多基於角色的安全功能,並且我已經設法鎖定使用規則的讀取和更新,如[此處]所述(https://cwiki.apache.org/confluence/display/solr/)基於規則的+授權+插件)。但是,管理面板本身仍然是開放的。 我們所要做的就是要求基本認證來訪問Solr 5中的任何東西。 –

+0

另請參閱:http://stackoverflow.com/questions/33263535/ –

+0

Aha。發佈賞金後不久,我發現[這個答案](http://stackoverflow.com/a/34348204/27614)實際上有一個解決方案,但它只適用於SolrCloud。 Solr尚不支持獨立模式下的基本身份驗證。我假設他們在[APF JIRA](https://issues.apache.org/jira/)上有這張票,但我找不到它。 –

回答

3

根據Exclude a JSP from web.xml's security-contraint的建議,您可以保持您的配置原樣,但公開您希望公開的端點。

所以,你可以添加一個<security-constraint>這樣您的web.xml,但離開了<auth-constraint>的匹配<url-pattern>。這將會向公衆開放。除了Solr實例其他部分的基本身份驗證之外,您還可以逐步公開核心或處理程序。

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

這方面的一個需要注意的是,你將需要添加任何應公開爲自己的URL模式。但是這也可能是一個優點,因爲您可以選擇對集合進行細粒度訪問控制 - 例如,每個集合一個用戶。

+1

適合我。謝謝!希望這個解決方案能夠在某些時候在Solr文檔中得到解釋,因爲他們越來越關注安全問題,大量人員運行單獨的非雲實例。 –

+0

歡迎您。我們也在運行獨立的非雲實例:) – cheffe