Amazon S3 CloudTrail イベント
重要
Amazon S3 では、Amazon S3 内のすべてのバケットの基本レベルの暗号化として、Amazon S3 が管理するキー (SSE-S3) によるサーバー側の暗号化が適用されるようになりました。2023 年 1 月 5 日以降、Amazon S3 にアップロードされるすべての新しいオブジェクトは、追加費用なしで、パフォーマンスに影響を与えずに自動的に暗号化されます。S3 バケットのデフォルト暗号化設定と新しいオブジェクトのアップロードのための自動暗号化ステータスは、AWS CloudTrail ログ、S3 インベントリ、S3 ストレージレンズ、Amazon S3 コンソール、および AWS Command Line Interface と AWS SDK の追加の Amazon S3 API レスポンスヘッダーとして利用できるようになりました。詳細については、「デフォルト暗号化に関するよくある質問」を参照してください。
このセクションでは、S3 が CloudTrail に記録するイベントについて説明します。
CloudTrail の Amazon S3 データイベント
データイベントでは、リソース上またはリソース内で実行されるリソースオペレーション (Amazon S3 オブジェクトの読み取りまたは書き込みなど) についての情報が得られます。これらのイベントは、データプレーンオペレーションとも呼ばれます。データイベントは、多くの場合、高ボリュームのアクティビティです。デフォルトでは、CloudTrail はデータイベントをログ記録しません。CloudTrail [イベント履歴] にはデータイベントは記録されません。
追加の変更がイベントデータに適用されます。CloudTrail の料金の詳細については、「AWS CloudTrail の料金
CloudTrail コンソール、AWS CLI、または CloudTrail API オペレーションを使用して、Amazon S3 リソースタイプのデータイベントをログ記録できます。データイベントをログに記録する方法の詳細については、「 AWS CloudTrailユーザーガイド」の「 AWS Management Consoleを使用したデータイベントのログ記録」および「AWS Command Line Interfaceを使用したデータイベントのログ記録」を参照してください。
次の表に、データイベントをログに記録できる Amazon S3 リソースタイプを示します。データイベントタイプ (コンソール) 列には、CloudTrail コンソールの[データイベントタイプ]リストから選択する値が表示されます。resources.type 値列には、AWS CLI または CloudTrail API を使用して高度なイベントセレクタを設定するときに指定する resources.type
値が表示されます。CloudTrail に記録されたデータ API 列には、リソース タイプの CloudTrail にログ記録された API コールが表示されます。
データイベントタイプ (コンソール) | resources.type 値 | CloudTrail にログ記録されたデータ API |
---|---|---|
S3 |
AWS::S3::Object
|
|
S3 Express One Zone |
|
|
S3 アクセスポイント |
AWS::S3::Access Point
|
|
S3 Object Lambda |
AWS::S3ObjectLambda::AccessPoint
|
|
S3 Outposts |
AWS::S3Outposts::Object
|
eventName
、readOnly
、および resources.ARN
フィールドでフィルタリングして、自分にとって重要なイベントのみをログに記録するように高度なイベントセレクタを設定できます。オブジェクトの詳細については、「AWS CloudTrail API リファレンス」の「AdvancedFieldSelector」を参照してください。
CloudTrail の Amazon S3 管理イベント
Amazon S3 は、すべてのコントロールプレーンオペレーションを管理イベントとして記録します。S3 API オペレーションの詳細については、「Amazon S3 API Reference」を参照してください。
CloudTrail が Amazon S3 に対して行われたリクエストをキャプチャする方法
デフォルトでは、CloudTrail は過去 90 日間の S3 バケットレベルの API コールをログに記録しますが、オブジェクトに対して行われたログリクエストは記録しません。バケットレベルの呼び出しには CreateBucket
、DeleteBucket
、PutBucketLifecycle
、PutBucketPolicy
などのイベントが含まれます。バケットレベルのイベントは CloudTrail コンソールで確認できますが、そこでデータイベント (Amazon S3 オブジェクトレベルのコール) を確認することはできません。それらについて CloudTrail ログを解析またはクエリする必要があります。
CloudTrail ロギングによって追跡される Amazon S3 アカウントレベルのアクション
CloudTrail はアカウントレベルのアクションを記録します。Amazon S3 レコードは、他の AWS のサービス のレコードと一緒にログファイルに記録されます。CloudTrail は、期間とファイルサイズに基づいて、新しいファイルをいつ作成して書き込むかを決定します。
このセクションでは、CloudTrail によるログ記録でサポートされている Amazon S3 アカウントレベルのアクションの一覧を示します。
CloudTrail のログ記録によって追跡される Amazon S3 アカウントレベルの API アクションは、以下のイベント名で表示されます。CloudTrail イベント名は API アクション名とは異なります。例えば、DeletePublicAccessBlock は DeleteAccountPublicAccessBlock です。
CloudTrail ログ記録によって追跡される Amazon S3 バケットレベルのアクション
デフォルトでは、CloudTrail はバケットレベルのアクションをログに記録します。Amazon S3 レコードは、他の AWS のサービスレコードと一緒にログファイルに記録されます。CloudTrail は、期間とファイルサイズに基づいて、新しいファイルをいつ作成して書き込むかを決定します。
このセクションには、CloudTrail によるログ記録でサポートされている Amazon S3 バケットレベルのアクションの一覧が記載されています。
CloudTrail のログ記録によって追跡される Amazon S3 バケットレベルの API アクションは、以下のイベント名で表示されます。CloudTrail イベント名が API アクション名と異なる場合があります。たとえば、PutBucketLifecycleConfiguration
は PutBucketLifecycle
です。
これらの API オペレーションに加えて、OPTIONS オブジェクトのオブジェクトレベルのアクションを使用することもできます。このアクションは、バケットの CORS 設定を確認するため、CloudTrail ログ記録のバケットレベルアクションと同様に扱われます。
CloudTrail ログ記録が追跡する Amazon S3 Express One Zone バケットレベル (リージョン API エンドポイント) アクション
デフォルトでは、CloudTrail はディレクトリバケットのバケットレベルのアクションを管理イベントとして記録します。S3 Express One Zone の CloudTrail 管理イベントの eventsource
は、s3express.amazonaws.com
です。
次のリージョンエンドポイント API オペレーションが CloudTrail に記録されます。
詳細については、「S3 Express One Zone の AWS CloudTrail によるログ記録」を参照してください。
クロスアカウントのシナリオでの Amazon S3 オブジェクトレベルのアクション
クロスアカウントのシナリオでオブジェクトレベルの API コールに関連する特殊なユースケースと CloudTrail ログが報告される方法を次に示します。CloudTrail は、ログエントリが編集または省略される一部のアクセス拒否ケースを除き、リクエスタ (API コールを行ったアカウント) にログを配信します。クロスアカウントアクセスを設定する際には、このセクションの例を検討します。
注記
例では、CloudTrail ログが適切に設定されていることを前提とします。
例 1: CloudTrail がバケット所有者にログを配信する
CloudTrail は、バケット所有者が同じオブジェクト API オペレーションに対するアクセス許可を持たない場合でも、バケット所有者にログを配信します。次のクロスアカウントのシナリオを検討してください。
-
アカウント A がバケットを所有しています。
-
アカウント B (リクエスタ) が、そのバケット内のオブジェクトへのアクセスを試みます。
-
アカウント C がオブジェクトを所有しています。アカウント C はアカウント A と同じアカウントである場合とそうでない場合があります。
注記
CloudTrail は、常にオブジェクトレベルの API ログをリクエスタ (アカウント B) に配信します。さらに、CloudTrail は、バケット所有者 (アカウント A) がそのオブジェクト (アカウント C) を所有していないか、そのオブジェクトに対する同じ API オペレーションへのアクセス許可がない場合でも、バケット所有者に同じログを配信します。
例 2: CloudTrail は設定オブジェクト ACL で使用されている E メールアドレスを拡散しない
次のクロスアカウントのシナリオを検討してください。
-
アカウント A がバケットを所有しています。
-
アカウント B (リクエスタ) は、E メールアドレスを使用してオブジェクト ACL の付与を設定するためのリクエストを送信します。ACL の詳細については、「アクセスコントロールリスト (ACL) の概要」を参照してください。
リクエスタは E メール情報と共にログを取得します。ただし、例 1 のようにバケット所有者がログの受信資格を持つ場合、バケット所有者はイベントを報告する CloudTrail ログを取得します。一方、バケット所有者は ACL 設定情報 (具体的には被付与者の E メールと権限) を取得しません。ログがバケット所有者に通知する情報は、アカウント B によって ACL API コールが行われたということだけです。