s_tajima:TechBlog

渋谷で働くインフラエンジニアのTechブログです。

ElasticSearch + Kibana3のアクセスコントロールについて

Elasticsearch + Kibana3でログ解析環境を構築する際、アクセスコントロールの設定に困ったのでそれを解決したというメモ

通常Kibana3は、以下の図のようにブラウザが直接ElasticSearchにリクエストをかけている。

f:id:s_tajima:20140219122410j:plain

ただし、この状態ではKibana3の利用者が自由にElasticSearchにクエリをなげられてしまうし、利用者自体の制限もできない。
ということでElasticSearchの前段にReverseProxyをはさむことで、クエリの制限とユーザ認証をかけたい。
今回やりたかったのはReverseProxyとしてhttpdをはさんでBASIC認証(+LDAPによるユーザの制御)を入れるということ。
素直にやると以下のようになる。

f:id:s_tajima:20140219122414j:plain

しかしこれだと問題が発生。
"httpd: VH2" にBASIC認証をかけると、アクセス時には
リクエストヘッダにAuthorizationヘッダが付与されていなければいけないのだが、
この構成ではElasticSearchのXHRの通信にAuthorizationヘッダが付与されない。
するとブラウザからElasticSearchへのリクエストが通らないためKibana3は動かない。

この問題を解決するために以下のような構成に変更。

f:id:s_tajima:20140219122418j:plain

kibana3のconfig.jsの elasticsearch: の設定を、
kibana3自身を返すHost, Portと同じものにしてpathを/esとする。
この構成ならばXHRにAuthorizationヘッダが付与されるのでElasticSearchへのアクセスに認証がかけられる。
具体的な設定は以下のような感じ。