Kibanaは標準では認証機能がありません。
そこでKibanaのプラグインとしてBasic認証機能を実装します。
作業ディレクトリ(とりあえず以下とします)
/root
プラグイン用ディレクトリを作成
# mkdir kibana-basic-auth
プラグインディレクトリに移動
# cd kibana-basic-auth
プラグインディレクトリ内に以下の2つのファイルを作成する。
index.js
const Boom = require('boom'); var users = { ringosan: { password: 'hogehoge' } }; module.exports = kibana => new kibana.Plugin({ init(server, options) { server.auth.scheme('basic', basic); server.auth.strategy('default', 'basic'); server.auth.default('default'); } }); function basic(server, options) { return { authenticate(request, reply) { const authorization = request.raw.req.headers.authorization; if (!authorization) { return reply(Boom.unauthorized('Authentication required', 'Basic')); } const parts = authorization.split(/\s+/); if (parts.length !== 2 || parts[0].toLowerCase() !== 'basic') { return reply(Boom.unauthorized('Authentication failed.', 'Basic')); } const credentials = new Buffer(parts[1], 'base64').toString().split(':', 2); const user = users[credentials[0]]; if (!user || user.password !== credentials[1]) { return reply(Boom.unauthorized('Authentication failed.', 'Basic')); } return reply.continue({ credentials: { user: user } }); } }; }
package.json
{ "name": "kibana-basic-auth", "version": "0.0.1" }
# ls
index.js package.json
# cd ..
# pwd
/root
tar.gz形式に圧縮
# tar -cvzf kibana-basic-auth.tar.gz kibana-basic-auth
Pluginインストール
# /opt/kibana/bin/kibana plugin -i kibana-basic-auth -u file:///root/kibana-basic-auth.tar.gz
Kibana再起動
# systemctl restart kibana.service
これでKibanaアクセス時にIDとパスワードの入力を要求されます。
ID:ringosan
パスワード:hogehoge
ID、パスワードを変更したい場合は
/opt/kibana/installedPlugins/kibana-basic-auth/index.js
を修正する。
Pluginのアンインストール
# /opt/kibana/bin/kibana plugin -r kibana-basic-auth
Kibana再起動
# systemctl restart kibana.service