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