SolrにBasic認証を設定する

Solrの管理画面やAPIへのアクセスに認証を掛けることができます。この記事ではBASIC認証を設定してみます。

SolrCloudの環境では Zookeeper の /security.json に設定ファイルを置きます。 Solrリファレンス にはユーザ:solr パスワード:SolrRocks で設定する例が載っています。

$ ./zkcli.sh -zkhost localhost:9983 -cmd put /security.json '{
"authentication":{
   "blockUnknown": true,
   "class":"solr.BasicAuthPlugin",
   "credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="}
 }
}'

この後Solrの再起動でBASIC認証が有効になり、管理画面にブラウザでアクセスすると、ユーザ名とパスワードの入力を促されます。ここで solr と SolrRocks で確かにログインできます。

このままリファレンスに載っているユーザとパスワードを使い続ける訳にはいかないので、別のユーザを追加することを考えます。初めは security.json に追加の設定を記載するのかと思いましたが、パスワードをSolrが期待する形式でハッシュ化する方法が分かりませんでした。結局のところ、リファレンスに書いてある通り、APIで設定変更するしかなさそうです。

ここで、APIへのHTTPアクセスにも認証が必要となります。

新しいユーザの追加

curl --user solr:SolrRocks http://localhost:8983/solr/admin/authentication -H 'Content-type:application/json' -d '{"set-user": {"solradmin":"solrpass"}}'

最初に設定した solr ユーザの削除

curl --user solr:SolrRocks http://localhost:8983/solr/admin/authentication -H 'Content-type:application/json' -d  '{"delete-user": ["solr"]}'

追加と削除の後の security.json の内容を確認

$ server/scripts/cloud-scripts/zkcli.sh -zkhost localhost:9983 -cmd get /security.json
{"authentication":{
    "blockUnknown":true,
    "class":"solr.BasicAuthPlugin",
    "credentials":{"solradmin":"AkZTG0uVSAgfzB/OC+kI1tqw9aeR8pP05tpNdcnnfN8= wRKTRwEcTX5eiCgEmCfIRXdRf9zIq2/Aef/LP6ZzdIQ="},
    "":{"v":13}}}

確かに変わっています。パスワードもハッシュ化されています。

管理画面だけではなく、コマンドラインツールも認証が必要になります。

bin/post -c mycollection data.json
POSTing file data4.json (application/json) to [base]/json/docs
SimplePostTool: WARNING: Solr returned an error #401 (require authentication) for url: http://localhost:8983/solr/mycollection/update/json/docs
SimplePostTool: FATAL: Looks like Solr is secured and would not let us in. Try with another user in '-u' parameter

オプションで指定するだけなので簡単。

bin/post -u solradmin:solrpass -c mycollection data.json

昔は認証が必要な場合は Jetty 側でなんとかしていたようですが、今は Solr 側で設定できるようになっています。Solr 8.4 からは認証が設定されていない場合にはAPI経由での設定ファイルのアップロード(というかアップロードする設定の内容)に制限が付くこともあるので、この辺の設定もきちんと押さえておきたいところです。

コメント