記録のデータイベントのロギング - AWS CloudTrail

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

記録のデータイベントのロギング

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

注記

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

データイベント

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

次のデータ型が記録されます。

  • Amazon S3 オブジェクトレベルの API アクティビティ (例:GetObjectDeleteObject, およびPutObjectAPI オペレーション)

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

  • テーブルでの Amazon DynamoDB オブジェクトレベルの API アクティビティ (例:PutItemDeleteItem, およびUpdateItemAPI オペレーション)。

  • AWS Outposts での S3 オブジェクトレベルの API アクティビティ。このデータ型は、高度なイベントセレクタでのみ使用できます。

  • Amazon Managed Blockchain JSON-RPC 呼び出しは、eth_getBalanceまたはeth_getBlockByNumber。このデータ型は、高度なイベントセレクタでのみ使用できます。

  • S3 Object Lambda アクセスポイントでの API アクティビティ(CompleteMultipartUploadおよびGetObject。このデータ型は、高度なイベントセレクタでのみ使用できます。

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

単一リージョンの証跡では、そのリージョンでアクセスできるリソースのデータイベントのみを記録できます。S3 バケットはグローバルですが、AWS Lambda 関数と DynamoDB テーブルはリージョンです。

データイベントのログ記録には追加料金が適用されます。CloudTrail の料金については、AWS CloudTrail の料金

データイベントをログに記録する手順は、トレイルで高度なイベントセレクターが有効になっているかどうかによって異なります。このセクションの手順を使用して、トレイルで有効にしたイベントセレクタの種類と一致します。

  1. を開く証跡ページを開き、証跡名を選択します。

    注記

    既存の証跡を編集してログ記録データイベントを追加することもできますが、ベストプラクティスとして、ログ記録データイベント専用に別の証跡を作成することを検討してください。

  2. を使用する場合データイベント] で、編集

  3. Amazon S3 バケットの場合:

    1. を使用する場合データイベントソース] で、S3

    2. あなたは、ログを選択することができます現在および将来のすべての S3 バケットまたは、バケットまたは関数を個々に指定するオプションを指定できます。デフォルトでは、現在および将来のすべての S3 バケットのデータイベントが記録されます。

      注記

      デフォルトを維持する現在および将来のすべての S3 バケットオプションを使用すると、現在ご使用の AWS アカウント内のすべてのバケットや、証跡作成後に作成する任意のバケットで、データイベントのログ記録を行うことができるようになります。このアクティビティが、別の AWS アカウントに属するバケットで実行されている場合でも、AWS アカウントのユーザーまたはロールによって実行されるデータイベントのアクティビティのログ記録も有効になります。

      1 つのリージョンの証跡を作成する場合(AWS CLI を使用して実行)、アカウントのすべての S3 バケットを選択するオプションを使用すると、同じリージョン内のすべてのバケット、およびそのリージョンで後で作成するバケットに対して、データイベントのログ記録が証跡として有効になります。AWS アカウントの他のリージョンの Amazon S3 バケットのデータイベントは記録されません。

    3. デフォルトのままにすると、現在および将来のすべての S3 バケットで、ログを選択しますReadイベントと書き込みイベント、またはその両方。

    4. バケットを個々に選択するには、Readおよび書き込みのチェックボックスをオフにします。現在および将来のすべての S3 バケット。Eclipse個々のバケット選択で、データイベントをログに記録するバケットを参照します。特定のバケットを検索するには、目的のバケットのバケットプレフィックスを入力します。このウィンドウで、複数のバケットを選択できます。選択バケットの追加より多くのバケットのデータイベントをログに記録します。ログを一覧表示するReadイベントなどGetObject書き込みイベントなどPutObjectか、または両方となります。

      この設定は、個別のバケットに設定した個々の設定よりも優先されます。たとえば、すべての S3 バケットにログ記録 [読み取り] イベントを指定し、データイベントログ記録に特定のバケットの追加を選択した場合、追加したバケットには既に [読み取り] が設定されています。選択を解除することはできません。[書き込み] のオプションしか設定することができません。

      ログ記録からバケットを削除するには、X

  4. データイベントをログに記録する別のデータ型を追加するには、データイベントタイプの追加

  5. Lambda 関数の場合:

    1. を使用する場合データイベントソース] で、Lambda

    2. EclipseLambda 関数] で、すべてのリージョンを使用してすべての Lambda 関数をログに記録するか、ARN としての入力関数特定の関数のデータイベントをログに記録します。

      AWS アカウントのすべての Lambda 関数のデータイベントをログに記録するには、[現在および将来のすべての関数をログに記録する。この設定は、関数に個々に設定した各設定よりも優先されます。すべての関数が表示されていなくても、関数はすべてログ記録されます。

      注記

      すべてのリージョンで証跡を作成している場合は、この選択によって、AWS アカウントの現時点のすべての関数や、証跡作成後に任意のリージョンに作成する可能性のある Lambda 関数のデータイベントのログ記録が有効になります。単一リージョンで証跡を作成している場合は(AWS CLI を使用)、この選択によって、AWS アカウントの現時点のすべての関数や、証跡作成後にそのリージョンに作成する可能性のある Lambda 関数のデータイベントのログ記録が有効になります。他のリージョンで作成された Lambda 関数のデータイベントのログ記録は有効になりません。

      このアクティビティが、別の AWS アカウントに属する関数で実行されている場合でも、すべての関数のデータイベントのログ記録を行うと、AWS アカウントのユーザーまたはロールによって実行されるデータイベントのアクティビティのログ記録も有効になります。

    3. を選択するとARN としての入力関数に、Lambda 関数の ARN を入力します。

      注記

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

  6. データイベントをログに記録する別のデータ型を追加するには、データイベントタイプの追加

  7. DynamoDB テーブルの例:

    1. を使用する場合データイベントソース] で、DynamoDB

    2. EclipseDynamoDB テーブルの選択] で、参照をクリックしてテーブルを選択するか、アクセス権を持つ DynamoDB テーブルの ARN に貼り付けます。DynamoDB テーブルの ARN は、次のような形式になります。

      arn:partition:dynamodb:region:account_ID:table/table_name

      別のテーブルを追加するには、行を追加をクリックし、テーブルを参照するか、アクセス権のあるテーブルの ARN に貼り付けます。

  8. 選択証跡を更新

AWS マネジメントコンソールで、高度なイベントセレクターが有効になっている場合、選択したリソース(Amazon S3 バケット、Lambda 関数、AWS Outposts の S3 オブジェクト、マネージドブロックチェーンノードの Ethereum、S3 Object Lambda アクセスポイント)のすべてのデータイベントをログに記録する定義済みのテンプレートから選択できます。ログセレクタテンプレートを選択したら、最も表示したいデータイベントのみを含めるようにテンプレートをカスタマイズできます。高度なイベントセレクターの使用方法の詳細とヒントについては、高度なイベントセレクタを使用してイベントをログに記録するこのトピックで。

  1. リポジトリの []ダッシュボードまたは証跡ページで CloudTrail 名を選択して開きます。

  2. トレイルの詳細ページのデータイベント] で、編集

  3. まだデータイベントのログを記録していない場合は、データイベント] チェックボックスをオンにします。

  4. を使用する場合データイベントタイプで、ログに記録するデータイベントリソースタイプ(S3 バケット、DynamoDBTables、AWS Outposts の S3 オブジェクト、マネージドブロックチェーンノード、Lambda アクセスポイントの S3 オブジェクト、または Lambda 関数)を選択します。

  5. ログ選択テンプレートを選択します。CloudTrail には、リソースタイプのすべてのデータイベントをログに記録する定義済みのテンプレートが含まれています。カスタムログセレクターテンプレートを作成するには、Custom

    注記

    S3 バケットに事前定義されたテンプレートを選択すると、現在ご使用の AWS アカウント内のすべてのバケットや、証跡作成後に作成する任意のバケットで、データイベントのログ記録を行うことができるようになります。このアクティビティが、別の AWS アカウントに属するバケットで実行されている場合でも、AWS アカウントのユーザーまたはロールによって実行されるデータイベントのアクティビティのログ記録も有効になります。

    証跡が 1 つのリージョンのみに適用される場合、すべての S3 バケットをログ記録する定義済みのテンプレートを選択すると、同じリージョン内のすべてのバケット、およびそのリージョンで後で作成するバケットに対して、データイベントのログ記録が証跡として有効になります。AWS アカウントの他のリージョンの Amazon S3 バケットのデータイベントは記録されません。

    すべてのリージョンで証跡を作成している場合は、Lambda 関数の定義済みのテンプレートを選択すると、現在ご使用の AWS アカウント内のすべての関数や、証跡作成後に任意のリージョンに作成する可能性のある Lambda 関数のデータイベントのログ記録が有効になります。単一リージョンで証跡を作成している場合は(AWS CLI を使用)、この選択によって、AWS アカウントの現時点のすべての関数や、証跡作成後にそのリージョンに作成する可能性のある Lambda 関数のデータイベントのログ記録が有効になります。他のリージョンで作成された Lambda 関数のデータイベントのログ記録は有効になりません。

    このアクティビティが、別の AWS アカウントに属する関数で実行されている場合でも、すべての関数のデータイベントのログ記録を行うと、AWS アカウントのユーザーまたはロールによって実行されるデータイベントのアクティビティのログ記録も有効になります。

  6. 定義済みのログセレクターテンプレートを適用し、別のデータイベントリソースタイプを追加しない場合は、変更の保存。この手順の残りは従う必要はありません。カスタムログセレクタテンプレートを適用するには、次のステップに進みます。

  7. カスタムログセレクタテンプレートを作成するには、ログセレクタテンプレート] ドロップダウンリストから [Custom

  8. (オプション) カスタムログセレクタテンプレートの名前を入力します。

  9. Eclipse高度なイベントセレクターで、データイベントを収集する特定の S3 バケット、DynamoDBTables、AWS Outposts の S3 オブジェクト、Lambda アクセスポイントの S3 オブジェクト、マネージドブロックチェーンノード、または Lambda 関数の式を作成します。

    1. 次のフィールドから選択します。配列(複数の値)を受け入れるフィールドの場合、CloudTrail は値の間に OR を追加します。

      • readOnly-readOnlyに設定できます。同等trueまたはfalse。読み取り専用データイベントは、リソースの状態を変更しないイベントです。Get*またはDescribe*イベント. Write イベントは、リソース、属性、またはアーティファクトを追加、変更、または削除します。Put*Delete*, またはWrite*イベント.

      • eventName-eventNameは任意の演算子を使用できます。これを使用して、CloudTrail に記録されるデータイベント (PutBucketまたはGetItem。このフィールドには、カンマ区切りで複数の値を指定できます。

      • resources.type-コンソールでは、このフィールドは発生しません。これは、データイベントタイプ選択します。AWS CLI および SDK では、resources.typeを使用できるのは、同等演算子で、値は次のいずれかを指定できます。AWS::S3::ObjectAWS::S3Outposts::ObjectAWS::Lambda::FunctionAWS::DynamoDB::TableAWS::ManagedBlockchain::Node, またはAWS::S3ObjectLambda::AccessPoint

      • resources.ARN-任意の演算子を使用することができますresources.ARNを使用しますが、同等または注目の場合、値は、テンプレートで指定したタイプの有効なリソースの ARN と正確に一致する必要があります。resources.type。たとえば、resources.typeequalsAWS። S3። Objectの ARN は次のいずれかの形式である必要があります。特定の S3 バケット内のすべてのオブジェクトのすべてのデータイベントをログに記録するには、StartsWith演算子を使用し、一致する値としてバケット ARN のみを含めます。

        末尾のスラッシュは意図的です。除外しないでください。

        arn:partition:s3:::bucket_name/ arn:partition:s3:::bucket_name/object_or_file_name/

        メトリックresources.typeequalsAWS። S3アウトポスト። オブジェクトに設定され、演算子は同等または注目の ARN は次の形式である必要があります。

        arn:partition:s3-outposts:region:account_ID:object_path

        メトリックresources.typeequalsAWS::Lambda::Functionに設定され、演算子は同等または注目の ARN は次の形式である必要があります。

        arn:partition:lambda:region:account_ID:function:function_name

        メトリックresources.typeequalsAWS::DynamoDB::Tableに設定され、演算子は同等または注目の ARN は次の形式である必要があります。

        arn:partition:dynamodb:region:account_ID:table/table_name

        メトリックresources.typeequalsAWS::ManagedBlockchain::Nodeに設定され、演算子は同等または注目の ARN は次の形式である必要があります。

        arn:partition:managedblockchain:region:account_ID:nodes/node_ID

        メトリックresources.typeequalsAWS። S3ObjectLambda። AccessPointに設定され、演算子は同等または注目の ARN は次の形式である必要があります。

        arn:partition:s3-object-lambda:region:account_ID:accesspoint/access_point_name

      データイベントリソースの ARN 形式の詳細については、」Amazon S3 で定義されるリソースタイプAWS Lambda によって定義されるリソースタイプ, およびAmazon DynamoDB で定義されるリソースタイプ()AWS Identity and Access Management ユーザーガイド

    2. フィールドごとに、+ 条件をクリックして、必要な数の条件を追加します。すべての条件に対して最大 500 個の指定値を指定できます。たとえば、証跡に記録されているデータイベントから 2 つの S3 バケットのデータイベントを除外するには、フィールドをリソース.arnの演算子を設定します。注目を選択し、S3 バケット ARN に貼り付けるか、イベントをログに記録しない S3 バケットを参照します。

      2 番目の S3 バケットを追加するには、[+ 条件をクリックし、上記の手順を繰り返し、ARN に貼り付けたり、別のバケットをブラウズしたりします。

      注記

      証跡上のすべてのセレクタに対して、最大 500 個の値を設定できます。これには、セレクタの複数の値の配列が含まれます。eventName。すべてのセレクタに単一の値がある場合、セレクタに最大500個の条件を追加できます。

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

    3. 選択+ field必要に応じてフィールドを追加します。エラーを回避するには、フィールドに競合する値や重複する値を設定しないでください。たとえば、あるセレクタで ARN を値に等しく指定しないでください。次に、ARN が別のセレクタで同じ値に等しくならないように指定します。

    4. カスタムセレクタテンプレートへの変更を保存するには、。別のログセレクタテンプレートを選択しないでください。また、このページを離れると、カスタムセレクタが失われます。

  10. データイベントをログに記録する別のデータ型を追加するには、データイベントタイプの追加。手順4からこの手順を繰り返して、データ・イベント・タイプの詳細イベント・セレクタを構成します。

  11. あなたが選択した後, でステップ 2: ログイベントを選択するで、選択したログセレクターテンプレートのオプションを確認します。選択編集戻って変更するには、

  12. 選択内容を確認して確認したら、証跡を更新が既存の証跡の場合は証跡の作成新しい基準線を作成する場合。

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

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

次の例では、という名前の S3 バケットにすべてのデータイベントのログ記録を設定する時の、ログ記録のしくみを示します。bucket-1。 この例では、CloudTrail ユーザーが空のプレフィックスを指定し、さらにReadおよび書き込みデータイベント。

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

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

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

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

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

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

  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 です。それはとして記録されますReadデータイベントを記録するようには設定されていません。CloudTrail 跡がログ記録するようには設定されていません。Readイベント. 証跡はこのイベントをログに記録しません。

注記

特定の 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 はイベントが各アカウントの証跡と一致するかどうかを評価します。イベントが証跡の設定と一致する場合、証跡はそのアカウントのイベントを処理してログに記録します。一般的に、API の呼び出し元とリソース所有者の両方がイベントを受け取ることができます。

自分が所有する 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 の証跡も同じイベントを処理して記録します。イベントのコピーが 2 つあるため(1 つはボブの証跡に記録され、もう 1 つは自分の証跡に記録されます)、CloudTrail はデータイベントの 2 つのコピーに対して課金します。

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

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

  8. このイベントは B のアカウントでは発生せず、B は S3 バケットを所有していないので、B の証跡はこのイベントを記録しません。CloudTrail は、このデータイベントのコピーを 1 つだけ課金します。

例: 2 つの AWS アカウントで使用される S3 バケットを含む、すべてのバケットのデータイベントのログ記録

次の例は、ログ記録の動作を示しています。アカウントのすべての S3 バケットを選択するは、AWS アカウントのデータイベントを収集する証跡に対して有効になっています。

  1. ユーザー A は、アカウントですべての S3 バケットに対するデータイベントを記録します。トレイルを設定するには、Readイベントと書き込みイベント、または両方の現在および将来のすべての S3 バケットデータイベント

  2. ユーザー B は、アカウントの S3 バケットへのアクセスを許可されている別のアカウントを持っています。B は、B がアクセス権を持っているバケットのデータイベントを記録します。B は、すべての S3 バケットのデータイベントを取得するように証跡を設定します。

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

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

  5. ユーザー A は S3 バケットを所有しており、イベントは A の証跡の設定と一致するので、A の証跡もそのイベントを処理して記録します。イベントのコピーが 2 つあるため(1 つはBob の証跡に記録され、もう 1 つは自分の記録に記録されます)、CloudTrail は各アカウントにデータイベントのコピーを請求します。

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

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

  8. このイベントは B のアカウントでは発生せず、B は S3 バケットを所有していないので、B の証跡はこのイベントを記録しません。CloudTrail は、アカウント内のこのデータイベントのコピーを 1 つだけ課金します。

  9. 3 番目のユーザー C は S3 バケットへのアクセス権を持ち、そのバケットで GetObject オペレーションを実行します。C は自分のアカウントのすべての S3 バケットでデータイベントを記録するように証跡を設定しています。API 呼び出し元であるため、CloudTrail はデータイベントをトレイルに記録します。B はバケットへのアクセス権を持っていますが、リソース所有者ではないため、今回は B の証跡にイベントは記録されません。リソース所有者として、トレールでGetObjectメアリーが呼んだ操作。CloudTrail は、データイベントのコピーごとに、アカウントと Mary のアカウントに課金します。1 つは Mary の証跡に 1 つずつ、もう 1 つは Mary の証跡に課金されます。

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

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

  • Read

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

  • 書き込み

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

例: 別々のトレイルの読み取りイベントと書き込みイベントのロギング

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

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

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

  3. Amazon EC2DescribeInstancesおよびTerminateInstancesAPI オペレーションがアカウントで発生します。

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

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

AWS コマンドラインインターフェイスによるデータイベントのログ記録

AWS CLI を使用して、管理イベントとデータイベントのログを記録するように証跡を設定できます。証跡が管理イベントとデータイベントをログに記録しているかどうかを確認するには、get-event-selectorsコマンド。

注記

アカウントが管理イベントのコピーを複数記録している場合は、料金が発生することに注意してください。データイベントのログ記録には常に料金が発生します。詳細については、「AWS CloudTrail の料金」を参照してください。

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

このコマンドは、証跡に対するデフォルト設定を返します。

基本的なイベントセレクタを使用してイベントをログに記録する

結果の例は次のとおりです。get-event-selectorsコマンドで、基本的なイベントセレクターを表示します。デフォルトでは、AWS CLI で証跡を作成すると、証跡はすべて管理イベントをログに記録します。デフォルトでは、証跡はデータイベントを記録しません。

{ "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" }

高度なイベントセレクタを使用してイベントをログに記録する

高度なイベントセレクターを使用することを選択した場合、get-event-selectorsコマンドは、次のような結果を返します。デフォルトでは、証跡用には高度なイベントセレクタは設定されていません。

{ "AdvancedEventSelectors": [], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

次の例では、高度なイベントセレクタを使用して、すべての管理イベント (readOnlyおよびwriteOnly)、PutObjectおよびDeleteObjectイベントを、同じ 2 つの S3 バケットプレフィックスに格納します。ここに示すように、高度なイベントセレクタを使用して、ARN による S3 プレフィックス名だけでなく、ログに記録する特定のイベントの名前も選択できます。トレールごとに、すべてのセレクタ値を含む、高度なイベントセレクタに最大 500 個の条件を追加できます。1 つの証跡に 1 ~ 250 個のデータリソースを指定できます。

aws cloudtrail put-event-selectors --trail-name TrailName \ --advanced-event-selectors '[ { "Name": "Log readOnly and writeOnly management events", "FieldSelectors": [ { "Field": "readOnly", "Equals": ["false"] }, { "Field": "eventCategory", "Equals": ["Management"] } ] }, { "Name": "Log PutObject and DeleteObject events for two S3 prefixes", "FieldSelectors": [ { "Field": "readOnly", "Equals": ["false"] }, { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "eventName", "Equals": ["PutObject","DeleteObject"] }, { "Field": "resources.ARN", "StartsWith": ["arn:aws:s3:::mybucket/prefix","arn:aws:s3:::mybucket2/prefix2"] } ] } ]'

結果には、証跡用に設定された高度なイベントセレクタが表示されます。

{ "AdvancedEventSelectors": [ { "Name": "Log readOnly and writeOnly management events", "FieldSelectors": [ { "Field": "readOnly", "Equals": [ false ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "eventCategory", "Equals": [ "Management" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] }, { "Name": "Log PutObject and DeleteObject events for two S3 prefixes", "FieldSelectors": [ { "Field": "readOnly", "Equals": [ false ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "eventCategory", "Equals": [ "Data" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.ARN", "Equals": [], "StartsWith": [ "arn:aws:s3:::mybucket/prefix","arn:aws:s3:::mybucket2/prefix2" ], "EndsWith": [], "Equals": [], "NotStartsWith": [], "NotEndsWith": [] } ] } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

高度なイベントセレクターを使用して、バケットのすべての Amazon S3 イベントをログに記録する

次の例では、特定の S3 バケットのすべての Amazon S3 オブジェクトのすべてのデータイベントを含めるように証跡を設定する方法を示します。の S3 イベントの値resources.typeフィールドはAWS::S3::Object。S3 オブジェクトと S3 バケットの ARN 値はわずかに異なるため、StartsWithの演算子resources.ARNをクリックして、すべてのイベントをキャプチャします。

aws cloudtrail put-event-selectors --trail-name TrailName --region region \ --advanced-event-selectors \ '[ { "Name": "S3EventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "resources.ARN", "StartsWith": ["arn:partition:s3:::bucket_name/"] } ] } ]'

このコマンドでは、次の例に示した出力が返されます。

{ "AdvancedEventSelectors": [ { "Name": "S3EventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ] }, { "Field": "resources.ARN", "StartsWith": [ "arn:partition:s3:::bucket_name/" ] } ] } ], "TrailARN": "arn:aws:cloudtrail:region:account_ID:trail/TrailName" }

高度なイベントセレクターを使用して、AWS Outposts イベントに Amazon S3 を記録する

次の例では、アウトポストにすべての Amazon S3 on Outposts オブジェクトのすべてのデータイベントを含めるように証跡を設定する方法を示します。このリリースでは、[Outposts] イベントの S3 でサポートされる値resources.typeフィールドはAWS::S3Outposts::Object

aws cloudtrail put-event-selectors --trail-name TrailName --region region \ --advanced-event-selectors \ '[ { "Name": "OutpostsEventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3Outposts::Object"] } ] } ]'

このコマンドでは、次の例に示した出力が返されます。

{ "AdvancedEventSelectors": [ { "Name": "OutpostsEventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3Outposts::Object" ] } ] } ], "TrailARN": "arn:aws:cloudtrail:region:account_ID:trail/TrailName" }

AWS SDK を使用したイベントのロギング

を実行GetEventSelectorsオペレーションを使用して、証跡がデータイベントをログに記録しているかどうかを確認します。データイベントをログに記録するように証跡を設定するには、PutEventSelectorsオペレーション. 詳細については、『』を参照してください。AWS CloudTrail API リファレンス

Amazon CloudWatch Logs へのイベントの送信

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