SJ blog
security
A

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

CloudTrailイベントの種類 — 管理イベント・データイベント・Insightsの違い

AWS CloudTrailの管理イベント(コントロールプレーン)とデータイベント(データプレーン)の違い、S3オブジェクトレベルのログ設定、CloudTrail Insightsによる異常検出を解説。

一言結論

CloudTrailのデータイベントはデフォルト無効で有効化には追加コストがかかるため、S3オブジェクトアクセスやLambda実行ログが必要な場合は意識的に有効化する必要があり、設定漏れが監査の盲点になりやすい。

CloudTrailとは

CloudTrailはAWSアカウントのAPIコールをすべて記録する監査ログサービスだ。「誰が・いつ・どのリソースに・何をしたか」を記録する。デフォルトで有効だが、管理イベントのみが無料で90日間保持される。

3種類のイベント

1. 管理イベント(Management Events)

AWSリソースの作成・変更・削除など管理操作(コントロールプレーン)

例:
- IAMポリシーの変更 (PutUserPolicy)
- EC2インスタンスの起動/停止
- S3バケットの作成/削除
- VPCの設定変更
- RDSインスタンスの作成

デフォルト設定:
  読み取りイベント(GET, DESCRIBE等): オプション
  書き込みイベント(PUT, DELETE等): デフォルトで記録

2. データイベント(Data Events)

リソース内のオブジェクトへの操作(データプレーン)

対応サービス:
  S3オブジェクトレベル操作
    (GetObject, PutObject, DeleteObject, etc.)
  Lambda関数の実行
    (Invoke)
  DynamoDBテーブルのアイテム操作
    (PutItem, GetItem, DeleteItem, etc.)
  CloudTrail Lake等

デフォルト: 無効(追加設定と追加料金が必要)

3. CloudTrail Insights

通常とは異なるAPI使用パターンを自動検出

検出できる異常:
- API呼び出し頻度の異常な増加
- IAMアクションの突然の増加
- リソース作成/削除の急増

ユースケース:
- アカウント乗っ取り後の不審な活動を検出
- バグによるAPIループを検出
- セキュリティインシデントの調査

CloudTrailの設定

# 証跡(Trail)の作成(全リージョン対応)
aws cloudtrail create-trail \
  --name my-audit-trail \
  --s3-bucket-name my-cloudtrail-logs \
  --is-multi-region-trail \
  --enable-log-file-validation \
  --include-global-service-events

# S3データイベントの有効化
aws cloudtrail put-event-selectors \
  --trail-name my-audit-trail \
  --event-selectors '[{
    "ReadWriteType": "All",
    "IncludeManagementEvents": true,
    "DataResources": [
      {
        "Type": "AWS::S3::Object",
        "Values": ["arn:aws:s3:::sensitive-bucket/"]
      }
    ]
  }]'

# CloudTrail Insightsの有効化
aws cloudtrail put-insight-selectors \
  --trail-name my-audit-trail \
  --insight-selectors '[
    {"InsightType": "ApiCallRateInsight"},
    {"InsightType": "ApiErrorRateInsight"}
  ]'

ログファイルの検証

CloudTrailのログが改ざんされていないことを確認する機能がある。

# ログファイルの整合性検証
aws cloudtrail validate-logs \
  --trail-arn arn:aws:cloudtrail:ap-northeast-1:123456789012:trail/my-audit-trail \
  --start-time 2026-04-01T00:00:00Z \
  --end-time 2026-04-08T00:00:00Z

CloudTrail Lake

S3ではなく専用のイベントデータストアにログを保存し、SQLでクエリできる機能だ。

-- 過去7日間のIAMロール変更を検索
SELECT
  userIdentity.userName as user,
  eventTime,
  eventName,
  requestParameters
FROM my_event_data_store
WHERE eventSource = 'iam.amazonaws.com'
  AND eventName LIKE '%Role%'
  AND eventTime > DATE_ADD('DAY', -7, NOW())
ORDER BY eventTime DESC

Athenaでのログ分析

-- CloudTrail ログをAthenaで分析(S3からの読み込み)
CREATE EXTERNAL TABLE cloudtrail_logs (
  eventVersion STRING,
  userIdentity STRUCT<
    type:STRING,
    principalId:STRING,
    arn:STRING,
    accountId:STRING,
    userName:STRING
  >,
  eventTime STRING,
  eventSource STRING,
  eventName STRING,
  awsRegion STRING,
  sourceIPAddress STRING,
  errorCode STRING,
  errorMessage STRING
)
STORED AS JSON
LOCATION 's3://my-cloudtrail-logs/AWSLogs/123456789012/CloudTrail/';

-- 特定ユーザーの操作履歴
SELECT eventTime, eventName, sourceIPAddress, errorCode
FROM cloudtrail_logs
WHERE userIdentity.userName = 'suspicious-user'
  AND eventTime BETWEEN '2026-04-07' AND '2026-04-08'
ORDER BY eventTime;

試験頻出ポイント

シナリオ回答
S3オブジェクトの読み書き操作を記録データイベント有効化(追加料金)
デフォルトのCloudTrail保持期間90日間(コンソールのEventHistory)
不審なAPI呼び出しパターンを検出CloudTrail Insights
マルチリージョンのCloudTrailis-multi-region-trailオプション
CloudTrailログの改ざん検知ログファイル検証を有効化
グローバルサービス(IAM)のログinclude-global-service-eventsが必要

まとめ

CloudTrailは管理イベントをデフォルトで記録するが、S3オブジェクトレベルや Lambda実行ログにはデータイベントの有効化が必要だ。SCS試験では「このケースでCloudTrailの何を設定するか」という問題が多い。セキュリティ分析にはCloudTrail Lakeが強力な選択肢だ。