ElasticSearch + Kibana3のアクセスコントロールについて
Elasticsearch + Kibana3でログ解析環境を構築する際、アクセスコントロールの設定に困ったのでそれを解決したというメモ
通常Kibana3は、以下の図のようにブラウザが直接ElasticSearchにリクエストをかけている。
ただし、この状態ではKibana3の利用者が自由にElasticSearchにクエリをなげられてしまうし、利用者自体の制限もできない。
ということでElasticSearchの前段にReverseProxyをはさむことで、クエリの制限とユーザ認証をかけたい。
今回やりたかったのはReverseProxyとしてhttpdをはさんでBASIC認証(+LDAPによるユーザの制御)を入れるということ。
素直にやると以下のようになる。
しかしこれだと問題が発生。
"httpd: VH2" にBASIC認証をかけると、アクセス時には
リクエストヘッダにAuthorizationヘッダが付与されていなければいけないのだが、
この構成ではElasticSearchのXHRの通信にAuthorizationヘッダが付与されない。
するとブラウザからElasticSearchへのリクエストが通らないためKibana3は動かない。
この問題を解決するために以下のような構成に変更。
kibana3のconfig.jsの elasticsearch: の設定を、
kibana3自身を返すHost, Portと同じものにしてpathを/esとする。
この構成ならばXHRにAuthorizationヘッダが付与されるのでElasticSearchへのアクセスに認証がかけられる。
具体的な設定は以下のような感じ。