はじめに
Kibana2はRailsアプリだったらしいんですが、Kibana3は完全にクライアントJavaScriptのみのアプリ(ちなみにAngularJS)になって、Elasticsearchにはブラウザから直接アクセスします。
でも、Elasticsearchにブラウザから直接アクセスできるようにするのって怖いじゃないですか。
どうするのかなというと公式READMEに以下のように書いてある。
Q: How do I secure this? I don't want to leave 9200 open.
A: A simple nginx virtual host and proxy configuration can be found in the sample/nginx.conf
で、そのファイルがkibana/sample/nginx.conf at master · elasticsearch/kibanaです。
要は参照系はだだ漏れで、Kibanaの情報を保存する口だけBasic認証かけるってことなんですけど、参照系だだ漏れって危ないじゃないですか。
というわけでどうしようかなと思ったんですが、基本的に管理用に見るだけなので、SSHポートフォワードでいいかなと設定したので手順をメモしておきます。
なお、Kibana3のセットアップは以下の記事が参考になります。
前提
- Elasticsearch稼働中
- Kibana3がnginxで稼働中
- Kibana3は/usr/share/nginx/www/kibana3に配置
- 9200ポートはファイアウォールで塞いで、80と22だけ開けます。
手順
Kibanaの設定を変更
config.jsを修正し、ElasticsearchのURLをlocalhost:9200にします。
$ sudo vim /usr/share/nginx/www/kibana3/config.js
...(中略)...
elasticsearch: "http://localhost:9200",
...(中略)...
ローカルからSSHポートフォワードの設定をする
localhost:9200をElasticsearchのサーバーの9200ポートに転送します。
local~$ ssh -i <pemファイル> -C -N -f -L 9200:localhost:9200 <ユーザ>@<Elasticsearchのホスト>
ローカルからブラウザでアクセス
http://<Elasticsearchのホスト>/kibana3
終わりに
ちょっと面倒だけど、まあこれでいいかなあと思ってるのですが、どうでしょうか。
みなさんどうしてるのか知りたいです。他にいい方法あれば教えて下さい。