AWS CloudTrail
ユーザーガイド (Version 1.0)

証跡のデータイベントと管理イベントのログ記録

アカウントでイベントが発生すると、CloudTrail はイベントが証跡の設定と一致するかどうかを評価します。証跡設定に一致するイベントだけが、Amazon S3 バケットと Amazon CloudWatch Logs ロググループに配信されます。

次の情報をログ記録するように証跡を設定できます。

  • データイベント: このイベントでは、リソース上またはリソース内で実行されたリソースオペレーションについての洞察が得られます。これらのイベントは、データプレーンオペレーションとも呼ばれます。

  • 管理イベント: 管理イベントでは、AWS アカウントのリソースで実行される管理オペレーションについての洞察が得られます。これらのイベントは、コントロールプレーンオペレーションとも呼ばれます。管理イベントは、アカウントで発生する非 API イベントを含む場合もあります。たとえば、ユーザーがアカウントにログインすると、CloudTrail は ConsoleLogin イベントをログに記録します。詳細については、「CloudTrail によってキャプチャされる API 以外のイベント」を参照してください。

    注記

    すべての AWS サービスで、CloudTrail の管理イベントまたはデータイベントがサポートされているわけではありません。サポート対象外のサービスについて詳しくは、「CloudTrail でサポートされていないサービス」を参照してください。特定のサービスで記録されている API の詳細情報については、「CloudTrail サポートされるサービスと統合」で該当サービスのドキュメントを参照してください。

証跡が指定したイベントのみを処理してログに記録するように、複数の証跡を異なる方法で設定することができます。たとえば、ある証跡は読み取り専用データと管理イベントをログに記録してすべての読み取り専用イベントを 1 つの S3 バケットに配信するように設定し、別の証跡は書き込み専用データと管理イベントをログに記録してすべての書き込み専用イベントを別の S3 バケットに配信するように設定できます。

また、ある証跡は 1 つの証跡ログを使用してすべての管理イベントを 1 つの S3 バケットに配信し、別の証跡はすべてのデータイベントをログに記録して別の S3 バケットに配信するように、設定することもできます。

デフォルトでは、証跡はすべての管理イベントをログに記録し、データイベントは記録しません。追加の変更がイベントデータに適用されます。詳細については、「AWS CloudTrail料金表」を参照してください。

注記

証跡によって記録されるイベントは、Amazon CloudWatch Events で使用することができます。たとえば、S3 オブジェクトのデータイベントを記録し、管理イベントを記録しないように証跡を設定した場合、証跡は指定された S3 オブジェクトのデータイベントのみを処理して記録します。イベントこれらの S3 オブジェクトのデータのイベントを Amazon CloudWatch Events で使用することができます。詳細については、Amazon CloudWatch Events ユーザーガイド の「AWS API コールイベント」を参照してください。

データイベント

データイベントでは、リソース上またはリソース内で実行されたリソースオペレーションについての洞察が得られます。これらのイベントは、データプレーンオペレーションとも呼ばれます。データイベントは、多くの場合、高ボリュームのアクティビティです。

データイベントには、次のようなものがあります。

  • Amazon S3 オブジェクトレベルの API アクティビティ (例: GetObjectDeleteObjectPutObject API オペレーション)

  • AWS Lambda 関数の実行アクティビティ (Invoke API)

証跡の作成時、デフォルトでは、データイベントは無効になっています。CloudTrail データイベントを記録するには、証跡にアクティビティを収集する、サポート対象のリソースまたはリソースタイプを明示的に追加する必要があります。詳細については、「証跡の作成」および「データイベント」を参照してください。

データイベントのログ記録には追加料金が適用されます。CloudTrail の料金については、「AWS CloudTrail 料金表」を参照してください。

AWS マネジメントコンソール でのデータイベントのログ記録

  1. CloudTrail コンソールの [Trails] ページに移動し、証跡を選択します。

  2. [Data events] で、鉛筆アイコンを選択して、編集を有効にします。

  3. Amazon S3 データイベントの場合は、[S3] タブで以下の操作を行います。

    1. ご使用の AWS アカウントのすべての Amazon S3 バケットにデータイベントのログ記録を設定するには、[Select all S3 buckets in your account] を選択します。続いて、記録するイベントとして [読み取り] イベント (例: GetObject) か、[書き込み] イベント (例: PutObject)、または両方のタイプのイベントを選択します。この設定は、個別のバケットに設定した設定よりも優先されます。たとえば、すべての S3 バケットでログ記録の対象を [読み取り] イベントに指定し、データイベントのログ記録に特定のバケットの追加を選択した場合、そのバケットには既に [読み取り] が設定されています。選択を解除することはできません。[書き込み] のオプションしか設定することができません。

      注記

      すべてのバケットに対してオプションを選択もしくは解除すると、データイベントログ記録を個別に設定したすべてのバケットにその変更が適用されます。すべてのバケットのデータイベント設定を変更したら、個別のバケットのデータイベント設定を確認してみてください。

      AWS アカウントのすべてのバケットにデータイベントのログ記録を設定するが、そのログ記録の監査証跡が不要な場合は、別の AWS アカウントに属する Amazon S3 バケットにログファイルを配信することを検討してください。詳細については、「複数のアカウントから CloudTrail ログファイルを受け取る」および「例: Amazon S3 オブジェクトのデータイベントのログ記録」を参照してください。

    2. Amazon S3 バケットのデータイベントのログ記録を個別に設定するには、[S3 バケットの追加] を選択します。バケット名とプレフィックス (オプション) を入力します。Amazon S3 バケットとオブジェクトのプレフィックスなど、証跡ごとに、最大 250 個のデータリソースを追加することができます。1 つの証跡で、データイベントリソースの合計数が 250 を超えることはできません。この合計数には、Lambda 関数など、他のデータリソースが含まれています。すべての Amazon S3 バケットにデータイベントのログ記録を設定した場合、この制限は適用されません。

    3. 各リソースについて、ログ記録の対象を [読み取り] イベントにするか、[書き込み] イベントにするか、または両方のタイプのイベントにするかを指定します。

    4. バケット名、プレフィックス、[Read/Write] オプションを編集でき、[x] アイコンを選択するとリソースを削除できます。

      注記

      ご使用の AWS アカウントのすべての S3 バケットにデータイベントのログ記録を設定した場合、その設定は個々のバケット設定よりも優先されます。この場合、すべてのバケットに設定されたオプションを編集することはできません。

  4. Lambda データイベントの場合は、[Lambda] タブで以下の操作を行います。

    1. Lambda 関数に対して個々にデータイベントのログ記録を設定するには、リストからそれらの関数を選択します。証跡がすべてのリージョンに適用される場合は、AWS アカウントのすべてのリージョンの関数から選択することができます。証跡が 1 つのリージョンのみに適用される場合は、そのリージョンの関数からのみ選択できます。個々の Lambda 関数など、証跡ごとに最大 250 個のデータリソースを追加することができます。1 つの証跡で、データイベントリソースの合計数が 250 を超えることはできません。この合計数には、Amazon S3 バケットやオブジェクトのプレフィックスなど、他のデータリソースも含まれます。すべての Lambda 関数にデータイベントのログ記録を設定した場合、この制限は適用されません。

      注記

      15,000 を超える Lambda 関数がアカウントに存在する場合、CloudTrail コンソールですべての関数を表示または選択することはできません。その場合も、すべての Lambda 関数をログ記録するオプションを選択することができます。ARN が分かれば、関数を手動で追加できます。また、AWS CLI および put-event-selectors コマンドを使用して、リソースに対する特定のデータイベントのログ記録を設定することもできます。詳細については、「証跡の管理」を参照してください。

    2. AWS アカウントのすべての Lambda 関数、および今後作成する可能性のある Lambda 関数のデータイベントのログ記録を設定するには、[Log all current and future functions] を選択します。証跡がすべてのリージョンに適用される場合は、これにより、任意のリージョンに作成する可能性のある関数など、AWS アカウントのすべてのリージョンの関数がすべてログ記録されます。証跡が単一のリージョンに適用される場合は、これにより、現在のリージョンのすべての関数や、そのリージョンで作成する可能性のある関数がログ記録されますが、他のリージョンの関数がログ記録されることはありません。このアクティビティが、その他の AWS アカウントに属する関数で実行されている場合でも、すべての関数のデータイベントのログ記録を行うと、AWS アカウントのユーザーまたはロールによって実行されるデータイベントのアクティビティのログ記録も有効になります。

  5. [Save] を選択します。

例: Amazon S3 オブジェクトのデータイベントのログ記録

すべての S3 オブジェクトのデータイベントをログに記録する

次の例では、bucket-1 という名前の S3 バケットにすべてのデータイベントのログ記録を設定する時の、ログ記録のしくみを示します。この例では、CloudTrail ユーザーは空のプレフィックスと、[読み取り] と [書き込み] データイベントの両方のログを記録するオプションを指定しました。

  1. ユーザーがオブジェクトを bucket-1 にアップロードします。

  2. PutObject API オペレーションは Amazon S3 オブジェクトレベルの API です。これは、CloudTrail 内にイベントデータとして記録されます。CloudTrail ユーザーは S3 バケットと空のプレフィックスを指定したので、そのバケットの任意のオブジェクトで発生したイベントがログに記録されます。証跡はイベントを処理してログに記録します。

  3. 別のユーザーがオブジェクトを bucket-2 にアップロードします。

  4. 証跡に指定されなかった S3 バケット内のオブジェクトで PutObject API オペレーションが発生しました。証跡はこのイベントをログに記録しません。

特定の S3 オブジェクトのデータイベントをログに記録する

次の例では、特定の S3 オブジェクトのイベントをログに記録するように証跡を設定するログ記録のしくみを示します。この例では、CloudTrail ユーザーは my-images というプレフィックスが付いた bucket-3 という名前の S3 バケットと、[書き込み] データイベントのみをログ記録するオプションを指定しました。

  1. ユーザーは、バケットの my-images プレフィックスで始まるオブジェクト (arn:aws:s3:::bucket-3/my-images/example.jpg など) を削除します。

  2. DeleteObject API オペレーションは Amazon S3 オブジェクトレベルの API です。これは、CloudTrail 内に [書き込み] データイベントとして記録されます。証跡で指定した S3 バケットとプレフィックスに一致するオブジェクトでイベントが発生しました。証跡はイベントを処理してログに記録します。

  3. 別のユーザーが S3 バケットで異なるプレフィックスのオブジェクト (arn:aws:s3:::bucket-3/my-videos/example.avi など) を削除します。

  4. 証跡で指定したプレフィックスに一致しないオブジェクトでイベントが発生しました。証跡はこのイベントをログに記録しません。

  5. ユーザーはオブジェクト arn:aws:s3:::bucket-3/my-images/example.jpg に対して GetObject API オペレーションを呼び出します。

  6. 証跡で指定したバケットとプレフィックスでイベントが発生しましたが、GetObject は読み取りタイプの Amazon S3 オブジェクトレベルの API です。これは CloudTrail 内で [読み取り] データイベントとして保存されますが、証跡は [読み取り] イベントをログ記録するようには設定されていません。証跡はこのイベントをログに記録しません。

注記

特定の Amazon S3 バケットのデータイベントをログ記録する場合は、データイベントセクションで指定したログファイルの受け取り用に、データイベントをログ記録する Amazon S3 バケットを使用しないことをお勧めします。同じ Amazon S3 バケットを使用すると、証跡は、ログファイルが Amazon S3 バケットに配信されるたびにデータイベントをログに記録します。ログファイルは、間隔で配信される集約イベントのため、イベントとログファイルの比率は 1:1 になりません。イベントは、次回のログファイルに記録されます。たとえば、証跡がログを配信すると、PutObject イベントが S3 バケットで発生します。S3 バケットがデータイベントセクションでも指定されていると、証跡は PutObject イベントをデータイベントとして処理して記録します。このアクションは別の PutObject イベントであり、証跡はイベントを再び処理して記録します。詳細については、「CloudTrail の詳細」を参照してください。

AWS アカウントのすべての Amazon S3 データイベントをログ記録するよう証跡を設定するが、ログファイルを受け取る Amazon S3 バケットのデータイベントはログ記録しない場合は、別の AWS アカウントに属する Amazon S3 バケットにログファイルを配信するよう設定します。詳細については、「複数のアカウントから CloudTrail ログファイルを受け取る」を参照してください。

他の AWS アカウントの S3 オブジェクトに対するデータイベントのログ記録

データイベントをログに記録するように証跡を設定するとき、他の AWS アカウントに属している S3 オブジェクトを指定することもできます。指定したオブジェクトでイベントが発生すると、CloudTrail はイベントが各アカウントの証跡と一致するかどうかを評価します。イベントが証跡の設定と一致する場合、証跡はそのアカウントのイベントを処理してログに記録します。

自分が所有する S3 オブジェクトを証跡で指定すると、自分のアカウントのオブジェクトで発生したイベントが証跡によって記録されます。オブジェクトを所有しているため、他のアカウントがオブジェクトを呼び出したときも証跡はイベントを記録します。

あるアカウントのユーザーが自分の証跡で S3 オブジェクトを指定し、別のアカウントがそのオブジェクトを所有している場合は、自分のアカウントのそのオブジェクトで発生したイベントのみが記録されます。他のアカウントで発生したイベントは記録されません。

例: 2 つの AWS アカウントの S3 オブジェクトのデータイベントのログ記録

次の例では、2 つの AWS アカウントで同じ S3 オブジェクトのイベントをログに記録するように CloudTrail を設定する方法を示します。

  1. ユーザー A は、owner-bucket という名前の S3 バケットのすべてのオブジェクトに対するデータイベントを記録します。A は S3 バケットと空のオブジェクトプレフィックスを指定して証跡を設定します。

  2. ユーザー B は、S3 バケットへのアクセスを許可されている別のアカウントを持っています。B も、同じ S3 バケット内のすべてのオブジェクトのデータイベントを記録しようとします。B は、自分の証跡を設定し、同じ S3 バケットと空のオブジェクトプレフィックスを指定します。

  3. B は、PutObject API オペレーションで S3 バケットにオブジェクトをアップロードします。

  4. このイベントは、B のアカウントで発生し、B の証跡の設定に一致します。B の証跡はイベントを処理してログに記録します。

  5. ユーザー A は S3 バケットを所有しており、イベントは A の証跡の設定と一致するので、A の証跡も同じイベントを処理して記録します。

  6. A が S3 バケットにオブジェクトをアップロードします。

  7. このイベントは A のアカウントで発生し、A の証跡の設定と一致します。A の証跡はイベントを処理してログに記録します。

  8. このイベントは B のアカウントでは発生せず、B は S3 バケットを所有していないので、B の証跡はこのイベントを記録しません。

管理イベント

管理イベントでは、AWS アカウントのリソースで実行される管理オペレーションについての洞察が得られます。これらのイベントは、コントロールプレーンオペレーションとも呼ばれます。管理イベントには、次のようなものがあります。

  • セキュリティグループの設定 (例: IAM AttachRolePolicyAPI オペレーション)

  • デバイスの登録 (例: Amazon EC2 CreateDefaultVpc API オペレーション).

  • データをルーティングするルールの設定 (例: Amazon EC2 CreateSubnet API オペレーション)

  • ログ記録の設定 (例: AWS CloudTrail CreateTrail API オペレーション)

管理イベントは、アカウントで発生する非 API イベントを含む場合もあります。たとえば、ユーザーがアカウントにログインすると、CloudTrail は ConsoleLogin イベントをログに記録します。詳細については、「CloudTrail によってキャプチャされる API 以外のイベント」を参照してください。CloudTrail が AWS サービスについてログに記録するサポートされる管理イベントの一覧については、「CloudTrail サポートされるサービスと統合」を参照してください。

デフォルトでは、証跡は管理イベントをログに記録するように設定されます。CloudTrail が AWS サービスについてログに記録するサポートされる管理イベントの一覧については、「CloudTrail サポートされるサービスと統合」を参照してください。

注記

CloudTrail の [イベント履歴] 機能では、管理イベントのみサポートされています。すべての管理イベントがイベント履歴に表示されるわけではありません。詳細については、「CloudTrail イベント履歴でのイベントの表示」を参照してください。

AWS マネジメントコンソール での管理イベントのログ記録

  1. CloudTrail コンソールの [Trails] ページに移動し、証跡を選択します。

  2. [Management events] で、鉛筆アイコンをクリックします。

  3. [Read/Write events] で、証跡情報のログを記録する場合は [All]、[Read-only]、[Write-only]、または [None] を選択して、[Save] を選択します。

読み取り専用イベントと書き込み専用イベント

データイベントと管理イベントをログに記録するように証跡を設定するときは、読み取り専用イベントまたは書き込み専用イベントのどちらか一方のみ、両方、またはいずれもしないを指定できます。

  • [Read-only]

    読み取り専用イベントには、リソースの読み取りのみ行い、変更を行わない API オペレーションが含まれます。たとえば、Amazon EC2 の DescribeSecurityGroups および DescribeSubnets API オペレーションは読み取り専用イベントです。これらのオペレーションは、Amazon EC2 リソースに関する情報のみを返し、設定は変更しません。

  • [Write-only]

    書き込み専用イベントには、リソースを変更する (または変更する可能性がある) API オペレーションが含まれます。たとえば、Amazon EC2 の RunInstances および TerminateInstances API オペレーションはインスタンスを変更します。

  • すべて

    証跡は両方をログに記録します。

  • なし

    証跡のログは、読み取り専用でも書き込み専用管理イベントのどちらでもありません。

例: 読み取り専用イベントと書き込み専用イベントを別の証跡に記録する

次の例では、アカウントに対するログアクティビティを異なる S3 バケットに分けるように証跡を設定する方法を示します。1 つのバケットは読み取り専用イベントを受け取り、もう 1 つのバケットは書き込み専用イベントを受け取ります。

  1. 証跡を作成し、ログファイルを受け取る read-only-bucket という名前の S3 バケットを選択します。次に、証跡を更新し、読み取り専用の管理イベントとデータイベントを記録するように指定します。

  2. 第 2 の証跡を作成し、ログファイルを受け取る write-only-bucket という名前の S3 バケットを選択します。次に、証跡を更新し、書き込み専用の管理イベントとデータイベントを記録するように指定します。

  3. Amazon EC2 の DescribeInstances および TerminateInstances API オペレーションがアカウントで発生します。

  4. DescribeInstances API オペレーションは読み取り専用イベントであり、1 番目の証跡の設定と一致します。証跡は、イベントをログに記録して read-only-bucket に配信します。

  5. TerminateInstances API オペレーションは書き込み専用イベントであり、2 番目の証跡の設定と一致します。証跡は、イベントをログに記録して write-only-bucket に配信します。

AWS Command Line Interface を使用してイベントのログを記録する

AWS CLI を使用して、管理イベントとデータイベントのログを記録するように証跡を設定できます。

証跡が管理イベントとデータイベントをログに記録しているかどうかを確認するには、get-event-selectors コマンドを実行します。

aws cloudtrail get-event-selectors --trail-name TrailName

次の例では、証跡のデフォルト設定が返されます。デフォルトでは、証跡はすべての管理イベントをログに記録し、データイベントは記録しません。

{ "EventSelectors": [ { "IncludeManagementEvents": true, "DataResources": [], "ReadWriteType": "All" } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

管理イベントとデータイベントをログに記録するように証跡を設定するには、put-event-selectors コマンドを実行します。次の例では、2 つの S3 オブジェクトに対するすべての管理イベントとデータイベントを含めるように証跡を設定する方法を示します。1 つの証跡に 1 ~ 5 個のイベントセレクタを指定できます。1 つの証跡に 1 ~ 250 個のデータリソースを指定できます。

注記

イベントセレクタの数にかかわらず、S3 データリソースの最大数は 250 個です。

aws cloudtrail put-event-selectors --trail-name TrailName --event-selectors '[{ "ReadWriteType": "All", "IncludeManagementEvents":true, "DataResources": [{ "Type": "AWS::S3::Object", "Values": ["arn:aws:s3:::mybucket/prefix", "arn:aws:s3:::mybucket2/prefix2"] }] }]'

次の例は、証跡に対して設定されているイベントセレクタを返します。

{ "EventSelectors": [ { "IncludeManagementEvents": true, "DataResources": [ { "Values": [ "arn:aws:s3:::mybucket/prefix", "arn:aws:s3:::mybucket2/prefix2", ], "Type": "AWS::S3::Object" } ], "ReadWriteType": "All" } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

AWS SDK を使用してイベントのログを記録する

証跡が管理イベントとデータイベントをログに記録しているかどうかを確認するには、GetEventSelectors オペレーションを使用します。管理イベントとデータイベントをログに記録するように証跡を設定するには、PutEventSelectors オペレーションを使用します。詳細については、「AWS CloudTrail API Reference」を参照してください。

Amazon CloudWatch Logs にイベントを送信する

CloudTrail は、CloudWatch Logs へのデータイベントと管理イベントの送信をサポートしています。CloudWatch Logs のロググループにイベントを送信するように証跡を設定すると、CloudTrail は証跡で指定されているイベントだけを送信します。たとえば、データイベントのみを送信するように設定した場合、証跡はデータイベントのみを CloudWatch Logs ロググループに配信します。詳細については、「Amazon CloudWatch Logs を使用して CloudTrail のログファイルをモニタリングする」を参照してください。