kibana-audit について
kibana-auditは、Kibanaの監査ログ設定と調査を支援するスキルです。Kibanaのセキュリティやコンプライアンスを担当する運用者向けに、イベントの絞り込み、ログローテーション、trace.idによるElasticsearch監査ログとの相関を扱います。
主な機能
- 01Kibana監査ログの設定
- 02ファイルまたはコンソール出力
- 03イベントとカテゴリによるログの絞り込み
- 04ログイン、オブジェクト、スペースのイベント調査
- 05trace.idによるElasticsearchログとの相関
- 06FilebeatによるElasticsearchへのログ送信
活用シーン
- 01コンプライアンス向けの監査記録の有効化
- 02ダッシュボードなどの保存オブジェクト削除の調査
- 03saved_object_findイベントによるログ量の削減
- 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_create | Kibana スペースが作成されました | web |
space_update | Kibana スペースが更新されました | web |
space_delete | Kibana スペースが削除されました | web |
space_get | Kibana スペースが取得されました | web |
完全なイベントスキーマについては、references/api-reference.md を参照してください。
フィルターポリシー
kibana.yml の ignore_filters を使用して、ノイズの多いイベントを抑制します。
xpack.security.audit.ignore_filters:
- actions: [saved_object_find]
categories: [database]
| フィールド | 型 | 説明 |
|---|---|---|
actions | list | 無視するイベントアクション |
categories | list | 無視するイベントカテゴリ |
1 つのフィルターエントリ内で、指定されたすべてのフィールドに一致したイベントが除外されます。
Elasticsearch 監査ログとの相関
Kibana がユーザーに代わって Elasticsearch にリクエストを送信すると、両方のシステムに同じ trace.id(X-Opaque-Id ヘッダー経由で渡されます)が記録されます。これは、2 つの監査ログ間でイベントを関連付けるための主キーです。
前提条件: Elasticsearch 監査はクラスター設定 API を使用して有効にする必要があります。セットアップ手順、イベントタイプ、ES 固有のフィルターポリシーについては、elasticsearch-audit スキルを参照してください。
相関ワークフロー
- Kibana 監査ログで不審なイベントを見つけます。
- その
trace.idの値を抽出します。 - ES 監査インデックス(
.security-audit-*)で、同じtrace.idを持つすべてのイベントを検索します。 - 統合したタイムラインを確認し、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 日の保持が一般的です。
デプロイメントの互換性
| 機能 | セルフマネージド | ECH | Serverless |
|---|---|---|---|
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 コンソールまたは担当のアカウントチームを案内してください。