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 |
| マルチリージョンのCloudTrail | is-multi-region-trailオプション |
| CloudTrailログの改ざん検知 | ログファイル検証を有効化 |
| グローバルサービス(IAM)のログ | include-global-service-eventsが必要 |
まとめ
CloudTrailは管理イベントをデフォルトで記録するが、S3オブジェクトレベルや Lambda実行ログにはデータイベントの有効化が必要だ。SCS試験では「このケースでCloudTrailの何を設定するか」という問題が多い。セキュリティ分析にはCloudTrail Lakeが強力な選択肢だ。