メインコンテンツまでスキップ

セキュリティログと監視

このドキュメントの目的

ID/認証システムにおけるセキュリティログの設計と、効果的な監視・検知の方法を学びます。


なぜセキュリティログが重要か

1. インシデント検知
- 不正アクセスの早期発見
- 異常なパターンの検知

2. インシデント対応
- 被害範囲の特定
- 攻撃手法の分析

3. フォレンジック
- 証拠の保全
- 法的対応

4. コンプライアンス
- 監査証跡の提供
- 規制要件への対応(GDPR、PCI-DSS等)

ログ監視の全体像

┌─────────────────────────────────────────────────────────────────┐
│ アプリケーション │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │認証サービス│ │APIサーバー│ │管理画面 │ │バッチ処理 │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
└───────┼────────────┼────────────┼────────────┼─────────────────┘
│ │ │ │
└────────────┴─────┬──────┴────────────┘


┌────────────┐
│ ログ収集 │ Fluentd, Logstash等
└──────┬─────┘


┌────────────┐
│ ログ保存 │ Elasticsearch, S3等
└──────┬─────┘

┌──────────────┼──────────────┐
│ │ │
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌────────────┐
│ SIEM/分析 │ │ ダッシュボード│ │ 長期保存 │
│ 異常検知 │ │ 可視化 │ │ コンプライアンス│
└──────┬─────┘ └────────────┘ └────────────┘


┌────────────┐
│ アラート │ Slack, PagerDuty, Email
└──────┬─────┘


┌────────────┐
│ インシデント │
│ 対応 │
└────────────┘

まず何をログに残すべきか(優先順位)

初学者向けに、最初に実装すべきログを優先順位順に示します。

最優先(必ず実装)

1. 認証成功
- ユーザーID、IP、タイムスタンプ
- 「誰がいつログインしたか」の証跡

2. 認証失敗
- 試行ユーザーID、IP、失敗理由
- 不正アクセス試行の検知に必須

3. パスワード変更
- ユーザーID、IP、タイムスタンプ
- アカウント乗っ取りの痕跡を追跡

次に実装

4. 管理者操作
- ユーザー作成/削除、権限変更
- 内部不正の検知に重要

5. アカウントロック
- ユーザーID、理由
- ブルートフォース攻撃の検知

運用が軌道に乗ったら

6. トークン発行/失効
7. セッション作成/破棄
8. 設定変更

記録すべきイベント(詳細)

認証関連

イベント重要度記録内容
認証成功ユーザーID、IP、User-Agent、時刻、認証方法
認証失敗試行ユーザーID、IP、失敗理由、時刻
ログアウトユーザーID、IP、時刻
パスワード変更ユーザーID、IP、時刻
パスワードリセット要求対象ユーザー、IP、時刻
MFA登録/解除ユーザーID、MFA種別、時刻
アカウントロックユーザーID、理由、時刻

認可関連

イベント重要度記録内容
アクセス許可ユーザーID、リソース、スコープ
アクセス拒否ユーザーID、リソース、拒否理由
権限変更対象ユーザー、変更内容、実行者
トークン発行クライアントID、スコープ、有効期限
トークン失効トークンID、失効理由

管理操作

イベント重要度記録内容
ユーザー作成新規ユーザーID、実行者
ユーザー削除対象ユーザーID、実行者
設定変更変更内容、実行者
クライアント登録クライアントID、実行者

ログフォーマット

構造化ログ(JSON形式推奨)

{
"timestamp": "2025-12-25T10:30:00.000Z",
"level": "INFO",
"event_type": "AUTHENTICATION_SUCCESS",
"user_id": "user-123",
"tenant_id": "tenant-456",
"client_id": "app-789",
"ip_address": "192.168.1.100",
"user_agent": "Mozilla/5.0...",
"session_id": "sess-abc",
"authentication_method": "password",
"mfa_used": true,
"request_id": "req-xyz",
"duration_ms": 150
}

認証失敗の例

{
"timestamp": "2025-12-25T10:31:00.000Z",
"level": "WARN",
"event_type": "AUTHENTICATION_FAILURE",
"attempted_user_id": "admin",
"tenant_id": "tenant-456",
"ip_address": "203.0.113.50",
"user_agent": "curl/7.68.0",
"failure_reason": "INVALID_PASSWORD",
"attempt_count": 3,
"request_id": "req-def"
}

ログに含めてはいけない情報

❌ パスワード(平文・ハッシュ含む)
❌ クレジットカード番号
❌ 秘密鍵・APIキー
❌ セッションID(完全な形)
❌ Access Token / Refresh Token
❌ 個人を特定できる詳細情報(必要以上)

対策:
- マスキング: password=*****
- 切り詰め: session_id=abc...xyz
- ハッシュ化: user_hash=sha256(user_id + salt)

異常検知パターン

1. ブルートフォース検知

条件:
- 同一IPから5分間で10回以上の認証失敗
- 同一ユーザーに対して10分間で5回以上の認証失敗

アクション:
- アラート発報
- IPブロック検討
- アカウントロック

2. クレデンシャルスタッフィング検知

条件:
- 異なるユーザーへの同一IPからの連続試行
- 短時間での多数のユニークユーザーへの失敗

アクション:
- セキュリティチームへ通知
- CAPTCHA強制
- IP評価サービス連携

3. 異常なアクセスパターン

条件:
- 通常と異なる地理的位置からのアクセス
- 通常と異なる時間帯のアクセス
- 不可能な移動(Impossible Travel)

アクション:
- 追加認証要求
- ユーザーへの通知

4. 権限昇格の試み

条件:
- 管理者APIへの一般ユーザーからのアクセス
- 他テナントリソースへのアクセス試行

アクション:
- 即座にアラート
- セッション無効化検討

ログ保存と管理

保存期間の目安

ログ種別保存期間根拠
認証ログ1年以上監査・フォレンジック
アクセスログ90日〜1年運用・トラブルシューティング
管理操作ログ3年以上コンプライアンス
デバッグログ7-30日開発・デバッグ

ログの保護

1. 完全性の保護
- 改ざん検知(ハッシュチェーン、WORM)
- 別システムへのリアルタイム転送

2. 機密性の保護
- アクセス制御(閲覧権限の限定)
- 暗号化(保存時・転送時)

3. 可用性の保護
- 冗長化
- バックアップ

監視ダッシュボード

重要なメトリクス

認証関連:
- 認証成功率 / 失敗率
- 認証失敗の推移(時系列)
- ロックされたアカウント数

セキュリティ:
- 異常な認証パターンの検知数
- ブロックされたIPの数
- MFA使用率

パフォーマンス:
- 認証レスポンス時間
- トークン発行数/秒

アラート設定例

条件重大度通知先
認証失敗率 > 20%CriticalPagerDuty
同一IPから100回/分の失敗HighSlack + Email
管理者アカウントのログインInfoEmail
MFA無効化MediumEmail

SIEM連携

一般的なSIEMツール

- Splunk
- Elastic SIEM
- Microsoft Sentinel
- Google Chronicle
- Sumo Logic

連携のポイント

1. 標準フォーマットの採用
- CEF(Common Event Format)
- LEEF(Log Event Extended Format)
- JSON(カスタムパーサー)

2. リアルタイム転送
- Syslog
- HTTP/HTTPS
- Kafka/Message Queue

3. コンテキストの付加
- ユーザー情報
- デバイス情報
- リスクスコア

チェックリスト

ログ設計

  • 認証成功/失敗を記録
  • 管理操作を記録
  • 構造化ログフォーマットを採用
  • 機密情報をマスキング

異常検知

  • ブルートフォース検知ルール
  • クレデンシャルスタッフィング検知
  • 地理的異常の検知
  • 権限昇格試行の検知

運用

  • 適切な保存期間を設定
  • ログの完全性を保護
  • 監視ダッシュボードを構築
  • アラート閾値を設定

参考資料


最終更新: 2025-12-25 対象: セキュリティエンジニア、運用担当者