☁️ CloudTrail 管理イベント vs データイベント

S3 APIコールの違いを完全マスター

AWS CloudTrail 完全ガイド

🎯 結論ファースト:3秒でわかる違い

🔵 管理イベント = バケット全体の設定変更

PutBucketPolicy, DeleteBucketPolicy など
→ デフォルトで記録される(無料枠あり)

🟣 データイベント = オブジェクト単位の操作

PutObjectAcl, GetObject, PutObject など
→ 明示的に有効化が必要(追加料金)

📋 今回のAPI分類

• s3:PutBucketPolicy → 管理イベント
• s3:DeleteBucketPolicy → 管理イベント
• s3:PutObjectAcl → データイベント

🍽️ レストランでたとえると...

🏪 CloudTrailレストラン(監視システム)
🔵 管理イベント = お店のルール変更

「コントロールプレーン」= お店全体の管理

  • 📜 営業時間を変更した(PutBucketPolicy)
  • 🗑️ 店舗ルールを撤廃した(DeleteBucketPolicy)
  • 🏷️ 価格表を更新した(PutBucketTagging)
  • 🔧 新しいサービスを追加した(CreateBucket)
🟣 データイベント = 各テーブルでの活動

「データプレーン」= 個々のお客様対応

  • 🍝 料理を注文した(PutObject)
  • 👀 メニューを見た(GetObject)
  • 🍽️ 料理を片付けた(DeleteObject)
  • 🔐 席の予約権限を変更(PutObjectAcl)

💡 ポイント :お店全体のルール変更(管理イベント)は回数が少なく重要なので デフォルトで記録
一方、各テーブルでの活動(データイベント)は膨大な量になるため オプションで有効化 が必要!

🏛️

🔵 管理イベント

Management Events

コントロールプレーン操作

📝 何を記録?

バケットの作成・削除、ポリシー変更、ライフサイクル設定など 「バケット全体」 に影響する操作

📊 操作の頻度

比較的 低頻度 (設定変更は頻繁に行わない)

👀 確認方法

CloudTrailコンソールの イベント履歴 で直接確認可能

⏰ 保持期間

90日間 自動保存(無料)
それ以上はTrail設定でS3に保存

✅ デフォルトで有効
📦

🟣 データイベント

Data Events

データプレーン操作

📝 何を記録?

オブジェクトのアップロード・ダウンロード・削除・権限変更など 「個々のファイル」 に対する操作

📊 操作の頻度

非常に高頻度 (毎秒何千回ものアクセスも)

👀 確認方法

イベント履歴では見られない
Athena CloudWatch Logs でクエリが必要

💰 料金

追加料金が発生
100,000イベントあたり$0.10~

❌ デフォルトで無効

🔍 S3 API コール分類詳細

s3:PutBucketPolicy
🔵 管理イベント

📋 何をする?

バケット全体に適用される アクセスポリシー を設定・更新する

🍽️ レストランのたとえ

お店の 入店ルール を決める
「会員限定」「予約必須」など

対象: 🪣 バケット全体
s3:DeleteBucketPolicy
🔵 管理イベント

📋 何をする?

バケットに設定されている アクセスポリシーを削除 する

🍽️ レストランのたとえ

お店の 入店制限を解除 する
「誰でもウェルカム!」に変更

対象: 🪣 バケット全体
s3:PutObjectAcl
🟣 データイベント

📋 何をする?

特定の オブジェクト(ファイル)のACL (アクセス制御リスト)を変更する

🍽️ レストランのたとえ

特定の 席の予約権限 を変更
「この席はVIP専用に」

対象: 📄 個別オブジェクト

🎯 判別ポイント:バケットレベル vs オブジェクトレベル

🪣 S3バケット(my-bucket)
📄
🖼️
📊
🎵
📹
📝
管理 バケットポリシーを変更
管理 バージョニングを有効化
管理 暗号化設定を変更
データ ファイル📄のACLを変更
データ ファイル📊をダウンロード

🔵 管理イベントの見分け方

API名に 「Bucket」 が含まれる
バケット全体の設定に影響
例: PutBucket○○, DeleteBucket○○

🟣 データイベントの見分け方

API名に 「Object」 が含まれる
個別ファイルに対する操作
例: PutObject○○, GetObject, DeleteObject

⚠️ 混同注意!

PutBucketAcl → 管理イベント
PutObjectAcl → データイベント
同じ「Acl」でも対象が違う!

⚡ 覚えておきたい重要ポイント

📊

イベントの量

🔵 少量
(設定変更程度)
🟣 大量
(毎秒数千回も)
💰

料金

🔵 無料枠あり
(90日保存)
🟣 追加料金
(有効化時)
🔧

設定

🔵 自動で有効
(設定不要)
🟣 手動で有効化
(Trail設定必要)
👀

確認方法

🔵 イベント履歴
(コンソールで直接)
🟣 クエリが必要
(Athena等)

⚙️ データイベントの有効化方法

1

CloudTrailへ移動

AWSコンソールで
CloudTrailを開く

2

証跡を作成/編集

Trailを新規作成
または既存を編集

3

データイベントを追加

S3 → 全バケットまたは
特定バケットを選択

4

読み取り/書き込み選択

Read/Write/両方から
記録対象を選択

💸

コスト注意!

データイベントは高頻度のため、全バケットで有効化すると 予想外の高額請求 になることも。
まずは 重要なバケットのみ で有効化し、コストを監視することをお勧めします。

📊 完全比較表

項目 🔵 管理イベント 🟣 データイベント
別名 コントロールプレーン データプレーン
対象 バケット全体の設定 個別オブジェクト
デフォルト有効 ✅ 有効 ❌ 無効
イベント履歴で確認 ✅ 可能 ❌ 不可
無料保存期間 90日間 なし(Trail必須)
追加料金 基本無料 $0.10/100,000イベント~
S3 APIの例 PutBucketPolicy
DeleteBucketPolicy
PutBucketAcl
PutObject
GetObject
PutObjectAcl

💼 ユースケース別:何を有効にすべき?

🔒

セキュリティ監査(基本)

「誰がバケットポリシーを変更したか」を追跡したい

🔵 管理イベントで十分
🕵️

不正アクセス調査

「誰がどのファイルにアクセスしたか」を追跡したい

🟣 データイベント必須
📋

コンプライアンス(設定変更)

バケット設定の変更履歴を保持する必要がある

🔵 管理イベントで十分
📊

データアクセス分析

どのファイルが頻繁にアクセスされているか分析

🟣 データイベント必須
🗑️

誤削除の原因調査

「誰がファイルを削除したか」を特定したい

🟣 データイベント必須
🚨

公開設定変更の監視

バケットが意図せず公開されていないか監視

🔵 管理イベント + EventBridge

❓ よくある質問(FAQ)

Q. PutBucketAcl と PutObjectAcl は何が違うの?
PutBucketAcl バケット全体 のACLを設定するため 管理イベント
PutObjectAcl 特定のファイル のACLを設定するため データイベント です。
「Bucket」か「Object」かで判別できます!
Q. データイベントを有効にしないとセキュリティ上問題がある?
必ずしも問題ではありませんが、 機密データを扱うバケット では有効化を推奨します。
特にPCI-DSS、HIPAA等の コンプライアンス要件 がある場合は必須になることが多いです。
Q. データイベントのコストを抑えるには?
重要なバケットのみ に限定する
読み取りまたは書き込みのみ に限定する(両方不要なら)
Advanced Event Selectors で特定のプレフィックスやユーザーに絞る
Q. イベントがどちらのタイプか確認する方法は?
CloudTrailのログJSONを確認すると、 "managementEvent": true というフィールドがあります。
true なら管理イベント、 false ならデータイベントです。

Created by SSuzuki1063

AWS SAP Learning Resources