mcpField
K
kibana-audit

kibana-audit

github.com/elasticセキュリティ6022.8k 回インストール今日更新
リポジトリ

kibana-audit について

kibana-auditは、Kibanaの監査ログ設定と調査を支援するスキルです。Kibanaのセキュリティやコンプライアンスを担当する運用者向けに、イベントの絞り込み、ログローテーション、trace.idによるElasticsearch監査ログとの相関を扱います。

主な機能

  1. 01Kibana監査ログの設定
  2. 02ファイルまたはコンソール出力
  3. 03イベントとカテゴリによるログの絞り込み
  4. 04ログイン、オブジェクト、スペースのイベント調査
  5. 05trace.idによるElasticsearchログとの相関
  6. 06FilebeatによるElasticsearchへのログ送信

活用シーン

  1. 01コンプライアンス向けの監査記録の有効化
  2. 02ダッシュボードなどの保存オブジェクト削除の調査
  3. 03saved_object_findイベントによるログ量の削減
  4. 04Kibanaの操作とElasticsearchリクエストの関連付け

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/elastic/agent-skills --skill kibana-audit

インストール後、Claude Code で/kibana-auditを入力して読み込まれたか確認します。

同梱ファイルreferences/api-reference.md

詳細

Kibana 監査ログ

kibana.yml を使用して、Kibana の監査ログを有効化し、設定します。Kibana の監査ログには、Elasticsearch では把握できないアプリケーション層のセキュリティイベントが記録されます。保存オブジェクトの CRUD(ダッシュボード、ビジュアライゼーション、インデックスパターン、ルール、ケース)、ログイン/ログアウト、セッションの有効期限切れ、スペース操作、Kibana レベルでの RBAC 適用などが含まれます。

Elasticsearch の監査ログ(認証失敗、アクセス許可/拒否、セキュリティ設定の変更)については、elasticsearch-audit を参照してください。認証と API キー管理については、elasticsearch-authn を参照してください。ロールとユーザー管理については、elasticsearch-authz を参照してください。

イベントタイプ、スキーマ、相関クエリの詳細については、 references/api-reference.md を参照してください。

デプロイに関する注意: Kibana の監査設定は、デプロイタイプによって異なります。詳細は デプロイの互換性 を参照してください。

実現したいこと

  • Kibana の監査ログを有効化または無効化する
  • 監査ログの出力先(ローテーションファイル、コンソール)を設定する
  • ノイズの多いイベント(例:saved_object_find)を除外する
  • 保存オブジェクトへのアクセスまたは削除イベントを調査する
  • Kibana のログイン/ログアウトとセッションのアクティビティを追跡する
  • スペースの作成、変更、削除を監視する
  • trace.id を使用して、Kibana の監査イベントと Elasticsearch の監査ログを関連付ける
  • Kibana の監査ログを Elasticsearch に送信し、統合してクエリする

前提条件

項目説明
Kibana へのアクセスkibana.yml へのファイルシステムアクセス(セルフマネージド)または Cloud コンソールへのアクセス(ECH)
ライセンス監査ログには gold、platinum、enterprise、または trial ライセンスが必要です
Elasticsearch URL.security-audit-* に対する相関クエリ用のクラスターエンドポイント

不足している値があれば、ユーザーに確認してください。

Kibana の監査ログを有効化する

Kibana の監査ログは kibana.yml で静的に設定します(API では設定できません)。変更を適用するには、Kibana の再起動が必要です。

xpack.security.audit.enabled: true
xpack.security.audit.appender:
  type: rolling-file
  fileName: /path/to/kibana/data/audit.log
  policy:
    type: time-interval
    interval: 24h
  strategy:
    type: numeric
    max: 10

無効にするには、xpack.security.audit.enabled を false に設定し、Kibana を再起動してください。

アペンダーの種類
種類説明
rolling-fileローテーションポリシーに従ってファイルに書き込みます。推奨です。
console標準出力に書き込みます。コンテナ化されたデプロイに便利です。

イベントタイプ

Kibana の監査イベントは ECS 形式を使用し、ES 監査と同じコアフィールド(event.action、event.outcome、user.name、 trace.id、@timestamp)に加えて、kibana.saved_object.type、kibana.saved_object.id、kibana.space_id などの Kibana 固有のフィールドを含みます。

主なイベントアクション:

イベントアクション説明カテゴリ
saved_object_create保存オブジェクトが作成されましたdatabase
saved_object_get保存オブジェクトが読み取られましたdatabase
saved_object_update保存オブジェクトが更新されましたdatabase
saved_object_delete保存オブジェクトが削除されましたdatabase
saved_object_find保存オブジェクトの検索が実行されましたdatabase
saved_object_open_point_in_time保存オブジェクトに対して PIT が開かれましたdatabase
saved_object_close_point_in_time保存オブジェクトに対して PIT が閉じられましたdatabase
saved_object_resolve保存オブジェクトが解決されました(エイリアスのリダイレクト)database
loginユーザーがログインしました(成功または失敗)authentication
logoutユーザーがログアウトしましたauthentication
session_cleanup期限切れのセッションがクリーンアップされましたauthentication
access_agreement_acknowledgedユーザーがアクセス規約に同意しましたauthentication
space_createKibana スペースが作成されましたweb
space_updateKibana スペースが更新されましたweb
space_deleteKibana スペースが削除されましたweb
space_getKibana スペースが取得されましたweb

完全なイベントスキーマについては、references/api-reference.md を参照してください。

フィルターポリシー

kibana.yml の ignore_filters を使用して、ノイズの多いイベントを抑制します。

xpack.security.audit.ignore_filters:
  - actions: [saved_object_find]
    categories: [database]
フィールド型説明
actionslist無視するイベントアクション
categorieslist無視するイベントカテゴリ

1 つのフィルターエントリ内で、指定されたすべてのフィールドに一致したイベントが除外されます。

Elasticsearch 監査ログとの相関

Kibana がユーザーに代わって Elasticsearch にリクエストを送信すると、両方のシステムに同じ trace.id(X-Opaque-Id ヘッダー経由で渡されます)が記録されます。これは、2 つの監査ログ間でイベントを関連付けるための主キーです。

前提条件: Elasticsearch 監査はクラスター設定 API を使用して有効にする必要があります。セットアップ手順、イベントタイプ、ES 固有のフィルターポリシーについては、elasticsearch-audit スキルを参照してください。

相関ワークフロー
  1. Kibana 監査ログで不審なイベントを見つけます。
  2. その trace.id の値を抽出します。
  3. ES 監査インデックス(.security-audit-*)で、同じ trace.id を持つすべてのイベントを検索します。
  4. 統合したタイムラインを確認し、Kibana のアクションがどのような ES レベルの操作を引き起こしたかを把握します。

elasticsearch-audit スキルでは、このワークフローを ES 側から開始する方法も説明しています。ES 監査イベントから調査を開始し、発生元の Kibana アクションを探す場合に使用してください。

トレース ID で ES 監査ログを検索

不審な Kibana イベント(例:保存オブジェクトの削除)がある場合、その trace.id を抽出し、ES 監査インデックスを検索します。

curl -X POST "${ELASTICSEARCH_URL}/.security-audit-*/_search" \
  <auth_flags> \
  -H "Content-Type: application/json" \
  -d '{
    "query": {
      "bool": {
        "filter": [
          { "term": { "trace.id": "'"${TRACE_ID}"'" } },
          { "range": { "@timestamp": { "gte": "now-24h" } } }
        ]
      }
    },
    "sort": [{ "@timestamp": { "order": "asc" } }]
  }'

二次的な相関フィールド:user.name、source.ip、@timestamp(時間範囲による結合)。

Kibana の監査ログを Elasticsearch に送信する

Kibana の監査イベントを ES の監査イベントとあわせてクエリするには、Filebeat を使用して Kibana の監査ログファイルを Elasticsearch のインデックスに送信します。

filebeat.inputs:
  - type: log
    paths: ["/path/to/kibana/data/audit.log"]
    json.keys_under_root: true
    json.add_error_key: true

output.elasticsearch:
  hosts: ["https://localhost:9200"]
  index: "kibana-audit-%{+yyyy.MM.dd}"

インデックス化すると、.security-audit-*(ES)と kibana-audit-*(Kibana)の両方を、trace.id で絞り込んだマルチインデックスクエリを使って検索できます。

例

コンプライアンス対応のため Kibana の監査を有効にする

リクエスト:「Kibana の監査ログを有効にして、ローテーション後のログファイルを 10 個保持してください。」

xpack.security.audit.enabled: true
xpack.security.audit.appender:
  type: rolling-file
  fileName: /var/log/kibana/audit.log
  policy:
    type: time-interval
    interval: 24h
  strategy:
    type: numeric
    max: 10

適用後、Kibana を再起動してください。

削除されたダッシュボードを調査する

リクエスト:「誰かがダッシュボードを削除しました。Kibana の監査ログを確認してください。」

Kibana の監査ログ(またはインデックス化された kibana-audit-* データ)で、kibana.saved_object.type: dashboard を持つ saved_object_delete イベントを検索します。trace.id を抽出し、ES の監査インデックスと相互参照して、基盤となる Elasticsearch の操作を確認します。

保存オブジェクト検索による監査ログのノイズを減らす

リクエスト:「saved_object_find イベントが頻繁に発生するため、Kibana の監査ログが大きくなりすぎています。」

xpack.security.audit.ignore_filters:
  - actions: [saved_object_find]
    categories: [database]

これにより、作成、更新、削除のイベントを保持しながら、量の多い読み取り操作を抑制できます。

ガイドライン

Elasticsearch の監査と常に併せて有効にする

全体を網羅するには、kibana.yml と Elasticsearch の両方で監査を有効にしてください。Kibana の監査を有効にしないと、保存オブジェクトへのアクセスと Kibana のログインイベントを確認できません。ES の監査を有効にしないと、クラスターの操作を確認できません。ES 側の設定については、elasticsearch-audit スキルを参照してください。

相関には trace.id を使用する

Kibana のイベントを調査するときは、必ず trace.id を抽出して、ES の監査インデックス(.security-audit-*)を検索してください。これにより、Kibana の単一の操作によって引き起こされた操作の全過程が明らかになります。クエリについては、上記のElasticsearch 監査ログとの相関付けを参照してください。

ノイズの多い読み取りイベントをフィルタリングする

負荷の高い Kibana インスタンスでは、saved_object_find が非常に大量に発生します。読み取りアクセスの監査が特に必要な場合を除き、このイベントを抑制してください。

統合クエリのためにログを Elasticsearch に送信する

Kibana の監査ログは、デフォルトでファイルに書き込まれます。ES の監査イベントとあわせてプログラムからクエリできるように、Filebeat 経由で Elasticsearch に送信してください。

適切にローテーションと保持を設定する

ディスクがいっぱいにならないよう、ローリングファイルのローテーションを設定してください。コンプライアンス対応では、30~90 日の保持が一般的です。

デプロイメントの互換性

機能セルフマネージドECHServerless
Kibana の監査(kibana.yml)はいCloud UI 経由利用不可
ローリングファイルアペンダーはいCloud UI 経由利用不可
コンソールアペンダーはいはい利用不可
無視フィルターはいCloud UI 経由利用不可
trace.id による相関付けはいはい利用不可
Filebeat 経由で ES に送信はいはい利用不可

ECH に関する注記: Kibana の監査は、Cloud コンソールのデプロイメント編集ページから有効にします。ログファイルには、Cloud コンソールのデプロイメントログからアクセスできます。

Serverless に関する注記:

  • Serverless では、Kibana の監査ログはユーザーが設定できません。セキュリティイベントは、プラットフォームの一部として Elastic が管理します。
  • Serverless での Kibana の監査について質問された場合は、Elastic Cloud コンソールまたは担当のアカウントチームを案内してください。

コメント