Kibana

KibanaでBasic認証

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

Leave a Reply

Your email address will not be published.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)