Tech Sketch Bucket of Technical Chips by TIS Inc.

fluentd + Elasticsearch + Kibanaで始めるログ解析 (アクセス制御編)

Pocket

この記事はeXcale Developer's Blogから移転されたものです。

eXcale開発チームの平栗です。

今回は、fluentd + Elasticsearch + Kibanaで始めるログ解析 (セットアップ編)で構築した環境に、ベーシック認証を通してアクセスする方法についてご紹介します。

前回の記事では、fluentdでログをElasticsearchに転送し、Elasticsearchで保存したログをKibanaで可視化できる環境を構築しました。
しかし、この環境ではKibanaへのアクセスに対して制限をかけていないので、誰でもKibanaを通してログのデータを見ることができるようになっています。
特に、インターネット経由でKibanaにアクセスできるようにしている場合は、公開したくない情報を誰かに見られてしまう危険性が高くなります。
今回は、この危険性を下げるためにKibanaへのアクセスにベーシック認証をかけるようにします。
合わせて、Nginxにリバースプロキシの設定を入れて、Elasticsearch-Kibanaの通信に使うポートを9200番から80番に変更し、直接Elasticsearchにアクセスできないようにします。

それでは設定していきます。

ベーシック認証用のパスワードファイルを作成する

htpasswdコマンドを使って、ベーシック認証で使うユーザとパスワードを設定します。

htpasswdコマンドを実行すると、ユーザとパスワードが保存されたパスワードファイルが作成されます。
コマンド例では、/usr/local/nginx/conf以下にhtpasswdfileというパスワードファイルが作成されます。

Nginxの設定を変更する

次に、Nginxでベーシック認証とリバースプロキシの設定を入れます。
/usr/local/nginx/conf/nginx.confを下記のように変更します。

この設定により、Kibanaへアクセスする際にユーザとパスワードを聞かれるようになります。
また、NginxがKibanaから80番ポートで送られてきたデータ取得のリクエストをElasticsearchに対して転送するようになります。
今回はNginxの設定を紹介していますが、KibanaのgithubにApacheなどの設定例がありますので参考にしてください。

Kibanaの設定を変更する

KibanaはElasticsearchからデータを取得する際に、80番ポートを使うように設定します。
kibana/config.jsを下記のように変更します。

":80"は記述しなくても問題ありませんが、今回は分かりやすくするために記述しています。

ファイアウォールを変更する

KibanaからElasticsearchへのアクセスが9200番ポートではなくなったので、9200番ポートに対してインターネットからのアクセスを許可している場合は、拒否するようにしましょう。
ログの転送元と通信できるように設定がされていれば問題ありません。

以上で、設定は終了です。

Kibanaにアクセスしてみる

Nginxを起動してKibanaにアクセスすると、ユーザとパスワードを聞かれるので、
htpasswdコマンドで設定したユーザとパスワードを入力してください。
認証をパスすると、Kibanaの画面が表示されるので前回同様、Sample Dashboardを表示してみます。

Sample Dashboardでエラーメッセージが出力されずに、ログのデータが表示されたら作業は終了です。

エンジニア採用中!私たちと一緒に働いてみませんか?