管理イベントの過去90日分には、CloudTrailコンソール (イベント履歴 → イベントをダウンロード → JSON) または aws cloudtrail lookup-events を使用します。より古いデータや、S3オブジェクトの読み取りのようなデータイベントの場合は、S3にあるトレイルのログファイルを読みます。それらは s3:///AWSLogs//CloudTrail//YYYY/MM/DD/ にあります。
CloudTrail は AWS コントロールプレーンの監査ログです: すべてのコンソールログイン、すべての API コール、すべてのロールアサンプションです。クラウドインシデントでは、誰もが最初に求めるものです。Prime Core には 262 の CloudTrail 用検出ルールがあり、177 の MITRE ATT&CK テクニックにマッピングされています。その中には: クラウドアカウントの悪用 (T1078.004)、クラウドロギングをオフにする攻撃者 (T1562.008)、クラウドストレージからのデータ窃盗 (T1530) があります。
始める前に
イベント履歴とトレイルは異なるものです。 イベント履歴は常時有効で無料です。地域ごとに 90 日間の管理イベントを保持します。トレイルは設定するものです: S3 に書き込み、ログを好きなだけ保持でき、データイベントを含めることができます。あなたが持っているものを確認してください:
aws cloudtrail describe-trails
aws cloudtrail get-trail-status --name
実行されるべきトレイルで IsLogging: false である場合、それ自体が発見です。
リージョンが重要です。 イベント履歴はリージョンごとで、IAM のようなグローバルサービスのイベントは通常 us-east-1 にあります。eu-west-1 で CreateUser コールを探している場合、見つけることはできません。
権限。 イベント履歴には cloudtrail:LookupEvents。トレイルファイルには、バケットで s3:ListBucket と s3:GetObject、トレイルが KMS キーで暗号化されている場合は kms:Decrypt を使用します。
オプション 1: コンソールダウンロード
CloudTrail を開き、 イベント履歴に移動し、時間範囲とフィルタ (イベント名、ユーザ、リソース) を設定したら、 イベントをダウンロード → JSONを選択します。ダウンロードはフィルタを考慮するので、まずそれらを確認してください。それは現在のリージョンのみをカバーします。
オプション 2: CLIからのlookup-events
aws cloudtrail lookup-events --region us-east-1
--start-time 2026-10-19T00:00:00Z --end-time 2026-10-20T00:00:00Z
--output json > ct_use1_1019.json
知っておくべきことが2つあります。まず、各結果は実際のイベントをJSON 文字列 として CloudTrailEvent にラップしています。1行1イベントになるようアンラップします:
jq -c '.Events[].CloudTrailEvent | fromjson' ct_use1_1019.json > ct_use1_1019.jsonl
次に、lookup-events はアカウントおよびリージョンごとにレートが制限されており、1 コールにつき –lookup-attributes フィルタを 1 つのみ受け入れます。時間ウィンドウが広いと時間がかかるので、可能な限り絞りましょう。すべてのリージョンをカバーするには、aws ec2 describe-regions –query ‘Regions[].RegionName’ –output text でループします。
オプション 3: S3からのトレイルファイル
これは90日以上の履歴およびデータイベント用のルートです:
aws s3 cp s3://my-trail-bucket/AWSLogs/123456789012/CloudTrail/eu-west-1/2026/10/19/ ./ct/ --recursive
gunzip ./ct/*.json.gz
jq -c '.Records[]' ./ct/*.json > ct_euw1_1019.jsonl
各ファイルは Records 配列を持っており、jq ラインはそれらすべてを1行1イベントに平坦化します。組織のトレイルはパスに組織 ID を追加します: AWSLogs///CloudTrail/…。CloudTrail Lake を使用している場合、イベントに対して SQL を実行し、代わりに結果を保存できます。
探すべきもの
| イベント | 重要な理由 |
|---|---|
| ConsoleLogin | additionalEventData.MFAUsed、不明な失敗、ソースIPを確認してください |
| CreateUser、CreateAccessKey、AttachUserPolicy | 新しいアイデンティティとキー: クラシックな永続性と権限昇格 |
| StopLogging、DeleteTrail、PutEventSelectors | CloudTrail が見ている範囲を減らす人 |
| 奇妙なソースからの AssumeRole | ロールおよびアカウント間の横移動 |
| エラーコード: AccessDenied のバースト | 盗まれたクレデンシャルによる偵察 |
| GetSecretValue、GetObject のバースト | データアクセス; GetObject は S3 のデータイベントが有効な場合にのみ表示されます |
LogTotal にアップロード、サニタイズしてレビュー
- アップロード。 開いてください logtotal.com .jsonl (または .json ファイル) をドロップします。
- サニタイズ。 [what gets masked: account IDs, ARNs, IPs, access key IDs, usernames]. Look it over before you continue.
- レビュー。
問題が発生したとき
| 症状 | 考えられる原因 | Fix |
|---|---|---|
| lookup-events が何も返さない | 間違ったリージョン; IAM イベントは通常 us-east-1 に存在します | us-east-1 にクエリを投げるか、すべてのリージョンをループする |
| 90日以上古いものがない | イベント履歴保持 | S3 のトレイルファイルを使用する |
| GetObject イベントがない | S3 データイベントがトレイルで有効になっていません | 期待されたもの; 将来のためにそれらを有効にしてください |
| トレイルファイルを読む AccessDenied | kms:Decrypt、またはバケットポリシーが不足 | IAM またはバケットポリシーを修正する |
| ThrottlingException | lookup-events のレート制限 | 小さなウィンドウ; CLI にリトライさせる |
FAQ
イベント履歴はデータイベントを含みますか?
いいえ。管理イベントのみです。データイベントは、トレイルまたはイベントデータストアがそれらを記録するように設定されている場合にのみ存在します。
イベントはどのくらい早く表示されますか?
通常、API コールから数分以内です。S3 のトレイルファイルはバッチで到着するため、非常に最近のイベントはまだファイルにない可能性があります。