GlassfishにApacheSolrインスタンスをデプロイしており、JavaコードからSolrjを介してこのSolrインスタンスを使用しています。重要なのは、このJavaコードだけがSolrにアクセスできるように(コードは異なるIPアドレスから実行できるように)Solrへのアクセスを制限したいということです。
私が最初に考えたのweb.xml
は、デプロイしたSolrインスタンスを変更して、Glassfishのファイルベースのレルムを使用して基本認証を追加することでした。これを使用して、別のプロジェクトのRESTインターフェースへのアクセスを制限したためです。そこで、Solrweb.xmlに次の行を追加しました。
<security-constraint>
<web-resource-collection>
<web-resource-name>Secure</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>HEAD</http-method>
<http-method>PUT</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<auth-constraint>
<description>has to be a USER</description>
<role-name>USERS</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>userauth</realm-name>
</login-config>
<security-role>
<role-name>USERS</role-name>
</security-role>
しかし、どういうわけか、これはSolrアクセスでは機能しません。別の設定で機能したため、認証ダイアログが表示されません。これはかなり奇妙です。
一般に、Solrインスタンスを保護するこの方法は良いアプローチですか、それとも別の方法を試す必要がありますか?Solrのセキュリティページでは、Solrインスタンスのファイアウォールについて話し合っています。私はLinux管理者ではありませんが、iptablesが解決策になる可能性があり、serverfaultにはいくつかの良い答えがあります(例:これ)。
どう思いますか?