fbpx

Kibana SpacesとField and Document Level Securityを使ってSelf Auditしちゃうぞ!#Elastic #ElasticCloud #Elasticsearch #Kibana

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

今回は、Kibana SpacesField and Document Level Securityを使って
ユーザの操作をユーザ自身がログを使って監査できる仕組みを作るぞ!というネタになります^^

Kibana Spacesとは


バージョン6.5でリリースされた機能になりますので、もう3年くらい経ちますね。
作成したKibanaのグラフやダッシュボードをロールに応じて分離するための機能になります。
いわゆるマルチテナント機能というものですね。

image.png

「Aさんにこのダッシュボード見せたいんだけど、Bさんには見せたくないんだよね...」
という時に活躍する機能になります。

【参考】
業務コンテンツを整理して安全に保つKibanaのspace

必要なサブスクリプション


  • 今回利用している両機能を使うにはゴールド以上(有償)が必要になります。
機能 オープンソース ベーシック ゴールド プラチナ エンタープライズ
Kibana Spaces
Field and document level security - -

【参考】
Elastic Stack subscriptions

利用環境

項目 内容
Elastic Cloud 7.12.1
Filebeat 7.12.1

【構成図】
image.png

【補足】
・ 最近よく話題に上がるGoogle Workspaceの監査ログを題材としています。

【参考】
Elastic StackでGoogleドライブ監査をやってみた

実現したかったこと


  • 業務観点でログを見ることで、身に覚えのないログの違和感を感じられるようにする。
  • SaaSの利用者自身にログ分析用のダッシュボードの参照権限をつけてセルフチェックできるようにする。

実施手順


  • 以下の設定手順で実施します。
  1. Space作成
  2. Role作成
  3. ダッシュボード確認

【補足】
・ 本投稿ではログの取り込み方法、ダッシュボード作成方法は説明しません。
・ 参照権限を付与するユーザは作成済みとなります。

1. Space作成

  • 管理者ユーザでKibanaにログインします。
  • ログイン後、左上メニューからStack Managementをクリックします。

image.png

  • 下部にあるSpacesをクリックします。

image.png

  • Create a spaceをクリックします。

image.png

  • Nameを入力します。 (今回は、self-auditとします)

image.png

  • Analyticsの中のDashboard以外、チェックを外します。(今回はダッシュボードのみ参照可能とします)

image.png

以上でSpaces作成は完了になります。

【参考】
Kibana Spaces

2. Role作成

  • Spacesの少し上にあるRolesをクリックします。

image.png

  • Create roleをクリックします。

image.png

  • Role nameを入力します。 (今回は、self-auditとします)

image.pngs

  • Indicesはアクセス可能なElasticsearchのインデックスを指定します。
    (今回はGoogle Workspace監査ログ用のインデックスを指定します)
  • Privilegesreadとします。 (指定したインデックスの参照権限のみ付与します)
  • Granted documents queryに以下のクエリ構文を指定します。
    (user.name.keywordフィールドの値を「Kibanaにログインしたユーザ」のみに制御しています)

{"template":{"source":{"term":{"user.name.keyword":"{{_user.username}}"}}}}

image.png

  • ❺ 前手順で作成したKibana Spaces(self-audit)を指定します。
  • ❻ DashboardのみReadに指定し、他機能は全てNoneとします。
  • Add Kibana priviegeをクリックして、Kibanaに対する権限付与を完了します。

image.png

  • Create roleをクリックします。

image.png

以上でRole作成は完了になります。 (このRoleをKibanaにログインするユーザに割り当てます)

【参考】
Templating a role query

3. ダッシュボード確認

  • 前手順で作成したRoleを割り当てたユーザでKibanaにログインします。
    (自動的にself-auditのSpaceにログインしています)
  • 以下、Google Drive監査ログの分析ダッシュボードを例にします。

image.png

  • 「過去60日間」の「日本」における「ファイル編集」の操作ログを検索した結果になります。
  • user.nameフィールドが全てログインユーザのみになっています。 (自分のログ以外は検索されないことがわかります)

まとめ


さて、いかがでしたでしょうか?

私は、Kibanaは非常によく出来たデータ分析フレームワークだと思っています。
SQLスキルがなくともデータの中身を簡単に探索してデータカタログを作成できます。

今回のユースケースのような自分自身の操作ログをセルフチェックすることには
以下のような効果があると感じています。

1. 基礎的なデータ分析の知見が身に付く
2. 自分の操作が詳細に記録されていることを認識することで不正防止の抑止効果がある
3. 管理者だけでは発見できない業務観点での違和感に気づく可能性が上がる

今回はローカルに作成したユーザで実施しましたが
ユーザ認証をGoogle認証(SSO)に切り替えることでもっと簡単にユーザとRoleの連携ができます。

次回は、Google認証の設定方法について紹介したいと思います^^

Author

ログ分析基盤のアーキテクチャデザインやクラウドにおけるセキュリティ実装方式を研究するElasticエバンジェリスト。
国内エンジニアの貴重なリソースを効率良く活用できるよう、技術ナレッジを惜しみなく発信するよう心がけている。

日比野恒の記事一覧

新規CTA