Amazon S3 CloudTrail イベント - Amazon Simple Storage Service

Amazon S3 CloudTrail イベント

CloudTrail は、アカウント作成時に AWS アカウント で有効になります。Amazon S3 でサポートされているイベントアクティビティが発生すると、そのアクティビティは [Event history] (イベント履歴) の他の AWS のサービスのイベントとともに CloudTrail イベントに記録されます。最近のイベントは、AWS アカウント で表示、検索、ダウンロードできます。詳細については、「CloudTrail イベント履歴でのイベントの表示」を参照してください。

Amazon S3 のイベントなど、AWS アカウントでのイベントの継続的な記録については、証跡を作成します。証跡により、CloudTrail はログファイルを Amazon S3 バケットに配信できます。デフォルトでは、コンソールで追跡を作成するときに、追跡がすべての リージョンに適用されます。追跡は、AWSパーティションのすべてのリージョンからのイベントをログに記録し、指定した Amazon S3 バケットにログファイルを配信します。さらに、CloudTrail・ログで収集したイベントデータをより詳細に分析し、それに基づく対応するためにその他の AWS のサービスを設定できます。詳細については、以下を参照してください。

各イベントまたはログエントリには、リクエストの生成者に関する情報が含まれます。同一性情報は次の判断に役立ちます。

  • リクエストが、ルートと IAM ユーザー認証情報のどちらを使用して送信されたか

  • リクエストが、ロールとフェデレーティッドユーザーのどちらの一時的なセキュリティ認証情報を使用して送信されたか

  • リクエストが、別の AWS のサービス によって送信されたかどうか。

詳細については、「CloudTrail userIdentity 要素」を参照してください。

必要な場合はログファイルを自身のバケットに保管できますが、ログファイルを自動的にアーカイブまたは削除するにように Amazon S3 ライフサイクルルールを定義することもできます。デフォルトでは Amazon S3 のサーバー側の暗号化 (SSE) を使用して、ログファイルが暗号化されます。

CloudTrail が Amazon S3 に対して行われたリクエストをキャプチャする方法

デフォルトでは、CloudTrail は過去 90 日間の S3 バケットレベルの API コールをログに記録しますが、オブジェクトに対して行われたログリクエストは記録しません。バケットレベルの呼び出しには、CreateBucketDeleteBucketPutBucketLifeCyclePutBucketPolicy などのイベントが含まれます。バケットレベルのイベントは CloudTrail コンソールで確認できますが、そこでデータイベント (Amazon S3 オブジェクトレベルのコール) を確認することはできません。それらについて CloudTrail ログを解析またはクエリする必要があります。

CloudTrail ロギングによって追跡される Amazon S3 アカウントレベルのアクション

CloudTrail はアカウントレベルのアクションを記録します。Amazon S3 レコードは、他の AWS のサービスレコードと一緒にログファイルに記録されます。CloudTrail は、期間とファイルサイズに基づいて、新しいファイルをいつ作成して書き込むかを決定します。

このセクションでは、CloudTrail によるログ記録でサポートされている Amazon S3 アカウントレベルのアクションの一覧を示します。

CloudTrail のログ記録によって追跡される Amazon S3 アカウントレベルの API アクションは、以下のイベント名で表示されます。

CloudTrail ログ記録によって追跡される Amazon S3 バケットレベルのアクション

デフォルトでは、CloudTrail はバケットレベルのアクションをログに記録します。Amazon S3 レコードは、他の AWS のサービスレコードと一緒にログファイルに記録されます。CloudTrail は、期間とファイルサイズに基づいて、新しいファイルをいつ作成して書き込むかを決定します。

このセクションでは、CloudTrail によるログ記録でサポートされている Amazon S3 バケットレベルのアクションの一覧を示します。

CloudTrail のログ記録によって追跡される Amazon S3 バケットレベルの API アクションは、以下のイベント名で表示されます。

これらの API オペレーションに加えて、OPTIONS object のオブジェクトレベルのアクションを使用することもできます。このアクションは、バケットの CORS 設定を確認するため、CloudTrail ログ記録のバケットレベルアクションと同様に扱われます。

AWS CloudTrail ログ記録によって追跡される Amazon S3 オブジェクトレベルのアクション

オブジェクトレベルの Amazon S3 アクションの CloudTrail ログを取得することもできます。これを行うには、S3 バケットまたはアカウント内のすべてのバケットのデータイベントを有効にします。オブジェクトレベルのアクションがアカウントで発生すると、CloudTrail によって証跡の設定が評価されます。イベントが証跡で指定したオブジェクトに一致すると、そのイベントが記録されます。詳細については、S3 バケットとオブジェクトの CloudTrail イベントログ記録の有効化 ユーザーガイドの AWS CloudTrail と証跡へのデータイベントのログ記録を参照してください。

次のオブジェクトレベルの API アクションは CloudTrail イベントとして記録されます。

これらのオペレーションに加えて、次のバケットレベルのオペレーションを使用して、特定の条件下で CloudTrail ログをオブジェクトレベルの Amazon S3 アクションとして取得できます。

  • GET Bucket Object (List Objects) Version 2 – 証跡に指定されたプレフィックスを選択します。

  • GET Bucket Object Versions (List Object Versions) – 証跡に指定されたプレフィックスを選択します。

  • HEAD Bucket – バケットおよび空のプレフィックスを指定します。

  • Delete Multiple Objects – バケットおよび空のプレフィックスを指定します。

    注記

    CloudTrail では、複数のオブジェクトの削除オペレーションを使用して削除されたキーのキー名は記録されません

クロスアカウントのシナリオでのオブジェクトレベルのアクション

クロスアカウントのシナリオでオブジェクトレベルの API コールに関連する特殊なユースケースと CloudTrail ログが報告される方法を次に示します。CloudTrail は、常にリクエスタ (API コールを行った人) にログを配信します。クロスアカウントアクセスを設定する際には、このセクションの例を検討します。

注記

例では、CloudTrail ログが適切に設定されていることを前提とします。

例 1: CloudTrail がバケット所有者にアクセスログを配信する

CloudTrail は、バケット所有者が同じオブジェクト API に対するアクセス許可を持つ場合にのみ、バケット所有者にアクセスログを配信します。次のクロスアカウントのシナリオを検討してください。

  • Account−A がバケットを所有しています。

  • Account−B (依頼者) が、そのバケット内のオブジェクトへのアクセスを試みます。

  • Account−C がオブジェクトを所有しています。Account−A と同じアカウントである可能性があります。

注記

CloudTrail は、常にオブジェクトレベルの API アクセスログをリクエスタ (Account−B) に配信します。さらに、CloudTrail は、バケット所有者 がそのオブジェクトに対する同じ API アクションのアクセス許可を所有している (Account−C) か、そのアクセス許可を持っている場合にのみ、バケット所有者 (Account−A) に同じログを配信します。そうでない場合、バケット所有者がオブジェクトレベルの API アクセスログを取得するには、オブジェクトの ACL を通じてアクセス許可を取得する必要があります。

例 2: CloudTrail は設定オブジェクト ACL で使用されている E メールアドレスを拡散しない

次のクロスアカウントのシナリオを検討してください。

  • Account−A がバケットを所有しています。

  • Account−B (リクエスタ) は、E メールアドレスを使用してオブジェクト ACL の付与を設定するためのリクエストを送信します。ACL の詳細については、アクセスコントロールリスト (ACL) の概要 を参照してください。

リクエストは E メール情報と共にログを取得します。ただし、例 1 のようにバケット所有者がログの受信資格を持つ場合、バケット所有者はイベントを報告する CloudTrail ログを取得します。一方、バケット所有者は ACL 設定情報 (具体的には被付与者の E メールと権限) を取得しません。ログがバケット所有者に通知する情報は、Account−B によって ACL API コールが行われたということだけです。