データイベントをログ記録する - AWS CloudTrail

データイベントをログ記録する

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

注記

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

データイベント

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

証跡およびイベントデータストアで使用できるデータイベントタイプは、以下の表のとおりです。[データイベントタイプ (コンソール)] 列には、コンソールで有効な選択項目が表示されます。[リソースタイプ] 列には指定した resources.Type 値が表示され、そのタイプのデータイベントが証跡またはイベントデータストアに記録されます。

証跡の場合、基本または高度イベントセレクタを使用して、Amazon S3 バケットおよびバケットオブジェクト、Lambda 関数、DynamoDB テーブル (表の最初の 3 行に表示) のデータイベントを記録できます。残りの行に表示されるデータイベントタイプをログに記録するには、高度イベントセレクタのみを使用できます。

イベントデータストアの場合、データイベントを含めるには、詳細イベントセレクタのみを使用できます。

AWS のサービス 説明 データイベントタイプ (コンソール) resources.Type
Amazon DynamoDB

Amazon DynamoDB オブジェクトレベルの API アクティビティ (例: PutItemDeleteItemUpdateItem API オペレーション)。DynamoDB イベントの詳細については、「CloudTrail の DynamoDB データプレーンイベント」を参照してください。

DynamoDB AWS::DynamoDB::Table
AWS Lambda

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

Lambda AWS::Lambda::Function
Amazon S3

バケットおよびバケット内オブジェクトに対する Amazon S3 オブジェクトレベルの API アクティビティ (例: GetObjectDeleteObjectPutObject API オペレーション)。

S3 AWS::S3::Object
AWS CloudTrail

外部からの AWS イベントをログに記録するために使用される CloudTrail Lake チャネル での CloudTrail PutAuditEvents アクティビティ。

CloudTrail AWS::CloudTrail::Channel
Amazon CodeWhisperer プロファイル上の Amazon CodeWhisperer API アクティビティ。 CodeWhisperer AWS::CodeWhisperer::Profile
Amazon Cognito

Amazon Cognito アイデンティティプール に対する Amazon Cognito API アクティビティ。

Cognito アイデンティティプール AWS::Cognito::IdentityPool
Amazon DynamoDB

ストリームに対する Amazon DynamoDB API アクティビティ

DynamoDB Streams AWS::DynamoDB::Stream
Amazon Elastic Block Store

Amazon EBS スナップショットの PutSnapshotBlockGetSnapshotBlock、および ListChangedBlocks などの Amazon Elastic Block Store (EBS) ダイレクト API。

Amazon EBS ダイレクト API AWS::EC2::Snapshot
Amazon EMR ログ先行書き込みワークスペースでの Amazon EMR API アクティビティ。 EMR ログ先行書き込みワークスペース AWS::EMRWAL::Workspace
Amazon FinSpace

環境に対する Amazon FinSpace API アクティビティ。

FinSpace AWS::FinSpace::Environment
AWS Glue

Lake Formation によって作成されたテーブルに対する AWS Glue API アクティビティ。

注記

テーブルの AWS Glue データイベントは現在、次のリージョンでのみサポートされています。

  • 米国東部 (バージニア北部)

  • 米国東部 (オハイオ)

  • 米国西部 (オレゴン)

  • 欧州 (アイルランド)

  • アジアパシフィック (東京) リージョン

Lake Formation AWS::Glue::Table
Amazon GuardDuty

検出器 に対する Amazon GuardDuty API アクティビティ。

GuardDuty ディテクター AWS::GuardDuty::Detector
AWS HealthImaging

データストアでの AWS HealthImaging API アクティビティ

医療用画像データストア AWS::MedicalImaging::Datastore
Amazon Kendra インテリジェントランキング

リスコア実行プラン に対する Amazon Kendra Intelligent Ranking API アクティビティ。

Kendra ランキング AWS::KendraRanking::ExecutionPlan
Amazon Managed Blockchain

ネットワーク上の Amazon Managed Blockchain API アクティビティ。

Managed Blockchain ネットワーク AWS::ManagedBlockchain::Network
Amazon Managed Blockchain

eth_getBalanceeth_getBlockByNumber などの Ethereum ノードに対する Amazon Managed Blockchain JSON-RPC コール。

Managed Blockchain AWS::ManagedBlockchain::Node
AWS Private CA

AWS Private CA Connector for Active Directory API のアクティビティ。

AWS Private CA Connector for Active Directory AWS::PCAConnectorAD::Connector
Amazon SageMaker

特徴ストアに対する Amazon SageMaker API アクティビティ。

SageMaker Feature Store AWS::SageMaker::FeatureGroup
Amazon SageMaker

実験トライアルコンポーネントに対する Amazon SageMaker API アクティビティ。

SageMaker メトリクス実験トライアルコンポーネント AWS::SageMaker::ExperimentTrialComponent
Amazon S3

アクセスポイントでの Amazon S3 API アクティビティ。

S3 アクセスポイント AWS::S3::AccessPoint
Amazon S3

CompleteMultipartUpload および GetObject へのコールなどの Amazon S3 Object Lambda アクセスポイント API アクティビティ。

S3 Object Lambda AWS::S3ObjectLambda::AccessPoint
Amazon S3 on Outposts

Amazon S3 on Outposts オブジェクトレベル API アクティビティ。

S3 Outposts AWS::S3Outposts::Object
AWS Systems Manager コントロールチャネル上の AWS Systems Manager API アクティビティ。 Systems Manager AWS::SSMMessages::ControlChannel
Amazon Verified Permissions

ポリシーストア上の Amazon Verified Permissions API アクティビティ。

Amazon Verified Permissions AWS::VerifiedPermissions::PolicyStore

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

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

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

以下の手順では、既存のイベントデータストアまたは証跡を更新してデータイベントをログに記録する方法について説明します。証跡の場合、データイベントをログに記録する手順は、高度なイベントセレクターを使用しているか、基本的なイベントセレクターを使用しているかによって異なります。

以下の手順を実行し、既存の証跡を更新し、データイベントをログに記録します。新しいイベントデータストアの作成方法に関する詳細は、「CloudTrail イベント用にイベントデータストアを作成する」を参照してください。

  1. AWS Management Console にサインインし、https://console.aws.amazon.com/cloudtrail/で CloudTrail コンソールを開きます。

  2. ナビゲーションペインの [Lake] で、[イベントデータストア] を選択します。

  3. [イベントデータストア] ページで、更新するイベントデータストアを選択します。

    注記

    データイベントを有効にできるのは、CloudTrail イベントを含むイベントデータストアだけです。CloudTrail イベントデータストアでは、AWS Config 設定項目または非 AWS イベントに関するデータイベントを有効にすることはできません。

  4. 詳細ページの [データイベント] で、[編集] を選択します。

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

  6. [データイベントタイプ] で、データイベントをログ記録するリソースのタイプを選択します。

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

    注記

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

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

    すべてのリージョンで証跡またはイベントデータストアを作成している場合は、Lambda 関数の事前定義済みテンプレートを選択すると、AWS アカウントの現時点のすべての関数や、証跡またはイベントデータストア作成後に任意のリージョンに作成することができる Lambda 関数のデータイベントのログへの記録が有効になります。単一リージョン用のイベントデータストアを作成する場合は、この選択により、AWS アカウント内のそのリージョンにあるすべての関数のデータイベントおよび、証跡またはイベントデートストアの作成完了後にそのリージョンで作成するすべての Lambda 関数のデータイベントに対してログへの記録が有効になります。他のリージョンで作成された Lambda 関数のデータイベントのログ記録は有効になりません。

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

  8. (オプション) [セレクタ名] に、セレクタを識別する名前を入力します。セレクタ名は、「2 つの S3 バケットだけのデータイベントを記録する」など、高度なイベントセレクタに関する説明的な名前です。セレクタ名は、拡張イベントセレクタに「Name」と表示され、[JSON ビュー] を展開すると表示されます。

  9. [Advanced event selectors] で、データイベントをログに記録する特定のリソースの式を作成します。事前定義済みのログテンプレートを使用している場合は、このステップをスキップできます。

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

      • readOnly - readOnly は、true または false の値の [Equals] に設定できます。読み取り専用データイベントは、Get* または Describe* イベントなどのリソースの状態を変更しないイベントです。書き込みイベントは、Put*Delete*、または Write* イベントなどのリソース、属性、またはアーティファクトを追加、変更、または削除します。read および write イベントの両方を記録するには、readOnly セレクタを追加しないでください。

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

      • resources.ARN - resources.ARN には任意の演算子を使用することができますが、等号または不等号を使用する場合、値は、テンプレートで resources.type の値として指定したタイプの有効なリソースの ARN と正確に一致する必要があります。

        以下の表は、それぞれの resources.Type に有効な ARN フォーマットを示しています。

        resources.Type resources.ARN
        AWS::DynamoDB::Table
        arn:partition:dynamodb:region:account_ID:table/table_name
        AWS::Lambda::Function
        arn:partition:lambda:region:account_ID:function:function_name

        AWS::S3::Object1

        arn:partition:s3:::bucket_name/ arn:partition:s3:::bucket_name/object_or_file_name/
        AWS::CloudTrail::Channel
        arn:partition:cloudtrail:region:account_ID:channel/channel_UUID
        AWS::CodeWhisperer::Profile
        arn:partition:codewhisperer:region:account_ID:profile/profile_ID
        AWS::Cognito::IdentityPool
        arn:partition:cognito-identity:region:account_ID:identitypool/identity_pool_ID
        AWS::DynamoDB::Stream
        arn:partition:dynamodb:region:account_ID:table/table_name/stream/date_time
        AWS::EC2::Snapshot
        arn:partition:ec2:region::snapshot/snapshot_ID
        AWS::EMRWAL::Workspace
        arn:partition:emrwal:region::workspace/workspace_name
        AWS::FinSpace::Environment
        arn:partition:finspace:region:account_ID:environment/environment_ID
        AWS::Glue::Table
        arn:partition:glue:region:account_ID:table/database_name/table_name
        AWS::GuardDuty::Detector
        arn:partition:guardduty:region:account_ID:detector/detector_ID
        AWS::KendraRanking::ExecutionPlan
        arn:partition:kendra-ranking:region:account_ID:rescore-execution-plan/rescore_execution_plan_ID
        AWS::ManagedBlockchain::Network
        arn:partition:managedblockchain:::networks/network_name
        AWS::ManagedBlockchain::Node
        arn:partition:managedblockchain:region:account_ID:nodes/node_ID
        AWS::MedicalImaging::Datastore
        arn:partition:medical-imaging:region:account_ID:datastore/data_store_ID
        AWS::PCAConnectorAD::Connector
        arn:partition:pca-connector-ad:region:account_ID:connector/connector_ID
        AWS::SageMaker::FeatureGroup
        arn:partition:sagemaker:region:account_ID:feature-group/feature_group_name
        AWS::SageMaker::ExperimentTrialComponent
        arn:partition:sagemaker:region:account_ID:experiment-trial-component/experiment_trial_component_name

        AWS::S3::AccessPoint2

        arn:partition:s3:region:account_ID:accesspoint/access_point_name
        AWS::S3ObjectLambda::AccessPoint
        arn:partition:s3-object-lambda:region:account_ID:accesspoint/access_point_name
        AWS::S3Outposts::Object
        arn:partition:s3-outposts:region:account_ID:object_path
        AWS::SSMMessages::ControlChannel
        arn:partition:ssmmessages:region:account_ID:control-channel/control_channel_ID
        AWS::VerifiedPermissions::PolicyStore
        arn:partition:verifiedpermissions:region:account_ID:policy-store/policy_store_ID

        1 特定の S3 バケット内のすべてのオブジェクトのすべてのデータイベントをログ記録するには、StartsWith 演算子を使用し、一致する値としてバケット ARN のみを含めます。末尾のスラッシュは意図的です。除外しないでください。

        2 S3 アクセスポイントのすべてのオブジェクトでイベントをログ記録するには、アクセスポイント ARN のみを使用し、オブジェクトパスを含めず、StartsWith または NotStartsWith 演算子を使用することを推奨します。

      データイベントリソースの ARN 形式の詳細については、AWS Identity and Access Management ユーザーガイドの「アクション、リソース、条件キー」を参照してください。

    2. 各フィールドについて、[条件の追加] を選択して、必要な条件をすべて追加します。すべての条件に対して最大 500 個の指定値を設定できます。例えば、イベントデータストアに記録されているデータイベントから 2 つの S3 バケットのデータイベントを除外するには、フィールドを [resources.ARN] に、オペレータを [NotStartsWith] に設定し、S3 バケット ARN に貼り付けるか、イベントをログに記録しない S3 バケットを参照します。

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

      注記

      イベントデータストア上のすべてのセレクターに対して、最大 500 の値を設定できます。これには、eventName などのセレクタの複数の値の配列が含まれます。すべてのセレクタに単一の値がある場合、セレクタに最大 500 個の条件を追加できます。

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

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

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

  10. データイベントをログに記録する別のデータタイプを追加するには、[Add data event type] を選択します。ステップ 6 からこのステップまで繰り返し、データイベントタイプの高度なイベントセレクターを設定します。

  11. 選択内容をレビューして確認が完了したらしたら、[変更を保存] を選択します。

AWS Management Console において、証跡で高度なイベントセレクターを使用している場合は、選択したリソースのすべてのデータイベントをログに記録するテンプレートを定義済みのテンプレートから選択できます。ログセレクタテンプレートを選択したら、最も表示したいデータイベントのみを含めるようにテンプレートをカスタマイズできます。高度なイベントセレクタの使用方法の詳細とヒントについては、このトピックの「アドバンストイベントセレクタを使用してイベントをログに記録する」を参照してください。

  1. CloudTrail コンソールの [ダッシュボード] または [証跡] ページで更新する証跡を選択します。

  2. 詳細ページの [データイベント] で、[編集] を選択します。

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

  4. [データイベントタイプ] で、データイベントをログ記録するリソースのタイプを選択します。

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

    注記

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

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

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

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

  6. (オプション) [セレクタ名] に、セレクタを識別する名前を入力します。セレクタ名は、「2 つの S3 バケットだけのデータイベントを記録する」など、高度なイベントセレクタに関する説明的な名前です。セレクタ名は、拡張イベントセレクタに「Name」と表示され、[JSON ビュー] を展開すると表示されます。

  7. [Advanced event selectors] で、データイベントをログに記録する特定のリソースの式を作成します。事前定義済みのログテンプレートを使用している場合は、このステップをスキップできます。

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

      • readOnly - readOnly は、true または false の値の [Equals] に設定できます。読み取り専用データイベントは、Get* または Describe* イベントなどのリソースの状態を変更しないイベントです。書き込みイベントは、Put*Delete*、または Write* イベントなどのリソース、属性、またはアーティファクトを追加、変更、または削除します。read および write イベントの両方を記録するには、readOnly セレクタを追加しないでください。

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

      • resources.ARN - resources.ARN には任意の演算子を使用することができますが、等号または不等号を使用する場合、値は、テンプレートで resources.type の値として指定したタイプの有効なリソースの ARN と正確に一致する必要があります。

        以下の表は、それぞれの resources.Type に有効な ARN フォーマットを示しています。

        resources.Type resources.ARN
        AWS::DynamoDB::Table
        arn:partition:dynamodb:region:account_ID:table/table_name
        AWS::Lambda::Function
        arn:partition:lambda:region:account_ID:function:function_name

        AWS::S3::Object1

        arn:partition:s3:::bucket_name/ arn:partition:s3:::bucket_name/object_or_file_name/
        AWS::CloudTrail::Channel
        arn:partition:cloudtrail:region:account_ID:channel/channel_UUID
        AWS::CodeWhisperer::Profile
        arn:partition:codewhisperer:region:account_ID:profile/profile_ID
        AWS::Cognito::IdentityPool
        arn:partition:cognito-identity:region:account_ID:identitypool/identity_pool_ID
        AWS::DynamoDB::Stream
        arn:partition:dynamodb:region:account_ID:table/table_name/stream/date_time
        AWS::EC2::Snapshot
        arn:partition:ec2:region::snapshot/snapshot_ID
        AWS::EMRWAL::Workspace
        arn:partition:emrwal:region::workspace/workspace_name
        AWS::FinSpace::Environment
        arn:partition:finspace:region:account_ID:environment/environment_ID
        AWS::Glue::Table
        arn:partition:glue:region:account_ID:table/database_name/table_name
        AWS::GuardDuty::Detector
        arn:partition:guardduty:region:account_ID:detector/detector_ID
        AWS::KendraRanking::ExecutionPlan
        arn:partition:kendra-ranking:region:account_ID:rescore-execution-plan/rescore_execution_plan_ID
        AWS::ManagedBlockchain::Network
        arn:partition:managedblockchain:::networks/network_name
        AWS::ManagedBlockchain::Node
        arn:partition:managedblockchain:region:account_ID:nodes/node_ID
        AWS::MedicalImaging::Datastore
        arn:partition:medical-imaging:region:account_ID:datastore/data_store_ID
        AWS::PCAConnectorAD::Connector
        arn:partition:pca-connector-ad:region:account_ID:connector/connector_ID
        AWS::SageMaker::FeatureGroup
        arn:partition:sagemaker:region:account_ID:feature-group/feature_group_name
        AWS::SageMaker::ExperimentTrialComponent
        arn:partition:sagemaker:region:account_ID:experiment-trial-component/experiment_trial_component_name

        AWS::S3::AccessPoint2

        arn:partition:s3:region:account_ID:accesspoint/access_point_name
        AWS::S3ObjectLambda::AccessPoint
        arn:partition:s3-object-lambda:region:account_ID:accesspoint/access_point_name
        AWS::S3Outposts::Object
        arn:partition:s3-outposts:region:account_ID:object_path
        AWS::SSMMessages::ControlChannel
        arn:partition:ssmmessages:region:account_ID:control-channel/control_channel_ID
        AWS::VerifiedPermissions::PolicyStore
        arn:partition:verifiedpermissions:region:account_ID:policy-store/policy_store_ID

        1 特定の S3 バケット内のすべてのオブジェクトのすべてのデータイベントをログ記録するには、StartsWith 演算子を使用し、一致する値としてバケット ARN のみを含めます。末尾のスラッシュは意図的です。除外しないでください。

        2 S3 アクセスポイントのすべてのオブジェクトでイベントをログ記録するには、アクセスポイント ARN のみを使用し、オブジェクトパスを含めず、StartsWith または NotStartsWith 演算子を使用することを推奨します。

      データイベントリソースの ARN 形式の詳細については、AWS Identity and Access Management ユーザーガイドの「アクション、リソース、条件キー」を参照してください。

    2. 各フィールドについて、[条件の追加] を選択して、必要な条件をすべて追加します。すべての条件に対して最大 500 個の指定値を設定できます。例えば、証跡に記録されているデータイベントから 2 つの S3 バケットのデータイベントを除外するには、フィールドを resources.ARN に、オペレータを NotStartsWith に設定し、S3 バケット ARN に貼り付けるか、イベントをログに記録しない S3 バケットを参照します。

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

      注記

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

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

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

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

  8. データイベントをログに記録する別のデータタイプを追加するには、[Add data event type] を選択します。ステップ 4 からこのステップを繰り返し、データイベントタイプのアドバンストイベントセレクタを設定します。

  9. 選択内容をレビューして確認が完了したらしたら、[変更を保存] を選択します。

以下の手順で、基本的なイベントセレクターを使用してデータイベントをログに記録するために既存の証跡を更新します。

  1. AWS Management Console にサインインし、https://console.aws.amazon.com/cloudtrail/で CloudTrail コンソールを開きます。

  2. CloudTrail コンソールの証跡ページを開き、証跡名を選択します。

    注記

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

  3. [Data events] で、[編集] を選択します。

  4. Amazon S3 バケット:

    1. [Data source] で、[S3] を選択します。

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

      注記

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

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

    3. デフォルトの [All current and future S3 buckets] で、[読み取り] イベント、[書き込み] イベント、またはその両方をログ記録することを選択します。

    4. 個々のバケットを選択するには、[All current and future S3 buckets] の [読み取り] および [書き込み] のチェックボックスをオフにします。[Individual bucket selection] で、データイベントをログ記録するバケットを参照します。特定のバケットを検索するには、目的のバケットのバケットプレフィックスを入力します。このウィンドウで、複数のバケットを選択できます。[Add bucket] を選択してより多くのバケットのデータイベントをログ記録します。[読み取り] イベント (例: GetObject) か、[書き込み] イベント (例: PutObject)、または両方を選択します。

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

      ログ記録からバケットを削除するには、[X] を選択します。

  5. データイベントをログに記録する別のデータタイプを追加するには、[Add data event type] を選択します。

  6. Lambda 関数の場合

    1. [Data source] で、[Lambda] を選択します。

    2. [Lambda 関数] で、[All regions] を選択してすべての Lambda 関数をログ記録するか、[Input function as ARN] を使用して、特定の関数のデータイベントをログ記録します。

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

      注記

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

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

    3. [Input function as ARN] を選択した場合、Lambda 関数の ARN を入力します。

      注記

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

  7. データイベントをログに記録する別のデータタイプを追加するには、[Add data event type] を選択します。

  8. DynamoDB テーブルの場合

    1. [Data event source] で、[DynamoDB] を選択します。

    2. [DynamoDB table selection] で、[Browse] を選択してテーブルを選択するか、アクセス許可を持つ DynamoDB テーブルの ARN に貼り付けます。DynamoDB テーブルの ARN は次の形式です。

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

      別のテーブルを追加するには、[Add row] を選択し、テーブルを参照するか、アクセス許可のあるテーブルの ARN に貼り付けます。

  9. [Save changes] (変更の保存) をクリックします。

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

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 の [Write] データイベントとして記録されます。証跡またはイベントデータストアで指定した 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 になりません。イベントは、次回のログファイルに記録されます。たとえば、CloudTrail がログを配信すると、PutObject イベントが S3 バケットで発生します。S3 バケットがデータイベントセクションでも指定されていると、証跡は PutObject イベントをデータイベントとして処理して記録します。このアクションは別の PutObject イベントであり、証跡はイベントを再び処理して記録します。詳しくは、CloudTrail の仕組み を参照してください。

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

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

データイベントをログに記録するように証跡を設定するとき、他の AWS アカウントに属している S3 オブジェクトを指定することもできます。指定したオブジェクトでイベントが発生すると、CloudTrail はイベントが各アカウントの証跡と一致するかどうかを評価します。イベントが証跡の設定と一致する場合、証跡はそのアカウントのイベントを処理してログに記録します。一般的に、API の呼び出し元とリソース所有者の両方がイベントを受け取ることができます。

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

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

例: 2 つの AWS アカウントの Amazon 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 つは Bob の証跡に記録され、もう 1 つは自分の証跡に記録されます)、CloudTrail はデータイベントの 2 つのコピーに対して課金します。

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

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

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

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

次の例は、[Select all S3 buckets in your account] が AWS アカウントでデータイベントを収集する証跡に対して有効になっている場合のログ処理を示しています。

  1. ユーザー A は、アカウントですべての S3 バケットに対するデータイベントを記録します。証跡を設定するには、[読み取り] イベント、[書き込み] イベント、または両方の [データイベント] の [All current and future S3 buckets] を選択します。

  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 はデータイベントの 1 つのコピーの各アカウントに対して課金します。

  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 の証跡にイベントは記録されません。リソース所有者として、Mary が発信した GetObject オペレーションについての証跡のイベントを受信します。CloudTrail は、データイベントのコピーごとに、お客様のアカウントと Mary のアカウントに課金します。1 つは Mary の証跡、もう 1 つはお客様の証跡です。

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

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

  • 読み取り

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

  • 書き込み

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

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

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

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

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

  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を使用して、データイベントのログを記録するように証跡を設定できます。

例:証跡のデータイベントの記録

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

注記

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

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

コマンドは、証跡のデフォルト設定が返されます。

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

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

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

管理イベントとデータイベントをログに記録するように証跡を設定するには、put-event-selectors コマンドを実行します。

次の例は、基本のイベントセレクターを使用して、すべての管理イベントと S3 オブジェクトのデータイベントを、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"] }] }]'

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

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

アドバンストイベントセレクタを使用してイベントをログに記録する

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

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

次の例は、アドバンストイベントセレクタを使用して、すべての管理イベント (readOnly および writeOnly)、S3 オブジェクトの 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": "eventCategory", "Equals": ["Management"] } ] }, { "Name": "Log PutObject and DeleteObject events for two S3 prefixes", "FieldSelectors": [ { "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"] } ] } ]'

結果は、証跡用に設定されたアドバンストイベントセレクタを示しています。

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

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

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

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/"] } ] } ]'

コマンドは、次の出力例を返します。

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

アドバンストイベントセレクタを使用して AWS Outposts イベントの Amazon S3 をログに記録する

次の例では、アウトポストの Outopost オブジェクト上のすべての Amazon S3 のすべてのデータイベントを含めるよう、証跡を設定する方法を示します。

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"] } ] } ]'

コマンドは、次の出力例を返します。

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

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

次の例では、証跡に以下に関するデータイベントを含めるように設定する方法を示します: すべての S3 バケット、AWS Lambda 関数、CloudTrail Lake チャネル上の PutAuditEvents 呼び出し、DynamoDB テーブル、Outposts 上の Amazon S3、Ethereum ノード上の Amazon Managed Blockchain JSON-RPC 呼び出し、S3 Object Lambda アクセスポイント、EBS スナップショット上の Amazon EBS direct API、S3 アクセスポイント、DynamoDB ストリーム、Lake Formation が作成した AWS Glue テーブル、Amazon FinSpace 環境、Amazon SageMaker メトリクス実験トライアルコンポーネント、Amazon SageMaker Feature Store、Amazon Kendra リスコア実行プラン、Amazon Cognito アイデンティティプール、Amazon GuardDuty ディテクター、Amazon EMR ログ先行書き込みワークスペース、Amazon CodeWhisperer プロファイル、Amazon Verified Permissions ポリシーストア、AWS Systems Manager コントロールチャネル、Amazon Managed Blockchain ネットワーク、AWS HealthImaging データストア、Active Directory API アクティビティ用 AWS Private CA コネクタ。

注記

証跡が 1 つのリージョンにのみ適用される場合、イベントセレクタのパラメータですべての Amazon S3 バケットと Lambda 関数が指定されていても、そのリージョン内のイベントのみがログに記録されます。単一のリージョン証跡では、イベントセレクタは、証跡が作成されたリージョンにのみ適用されます。

aws cloudtrail put-event-selectors --trail-name TrailName \ --advanced-event-selectors ' [ { "Name": "Log all events for all Amazon S3 buckets", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] } ] }, { "Name": "Log all events for Lambda functions", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Lambda::Function"] } ] }, { "Name": "Log all events for DynamoDB tables", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::DynamoDB::Table"] } ] }, { "Name": "Log all CloudTrail PutAuditEvents activity on a CloudTrail Lake channel", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::CloudTrail::Channel"] } ] }, { "Name": "Log all events for Amazon S3 on Outposts", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3Outposts::Object"] } ] }, { "Name": "Log all JSON-RPC calls for Ethereum nodes in Amazon Managed Blockchain", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::ManagedBlockchain::Node"] } ] }, { "Name": "Log all events for Amazon S3 Object Lambda access points", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3ObjectLambda::AccessPoint"] } ] }, { "Name": "Log all Amazon EBS direct API calls on snapshots", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::EC2::Snapshot"] } ] }, { "Name": "Log all events for Amazon S3 access points", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::AccessPoint"] } ] }, { "Name": "Log all events for DynamoDB streams", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::DynamoDB::Stream"] } ] }, { "Name": "Log all events for AWS Glue tables created by Lake Formation", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Glue::Table"] } ] }, { "Name": "Log all events for FinSpace environments", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::FinSpace::Environment"] } ] }, { "Name": "Log all events for SageMaker metrics experiment trial components", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::SageMaker::ExperimentTrialComponent"] } ] }, { "Name": "Log all events for SageMaker feature stores", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::SageMaker::FeatureGroup"] } ] }, { "Name": "Log all events for Amazon Kendra Intelligent Ranking rescore execution plans", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::KendraRanking::ExecutionPlan"] } ] }, { "Name": "Log all events for Amazon Cognito identity pools", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Cognito::IdentityPool"] } ] }, { "Name": "Log all events for an Amazon GuardDuty detector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::GuardDuty::Detector"] } ] }, { "Name": "Log all events for Amazon EMR write-ahead log workspaces", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::EMRWAL::Workspace"] } ] }, { "Name": "Log all events for Amazon CodeWhisperer profiles", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::CodeWhisperer::Profile"] } ] }, { "Name": "Log all events for Amazon Verified Permissions policy stores", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::VerifiedPermissions::PolicyStore"] } ] }, { "Name": "Log all events for AWS Systems Manager control channels", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::SSMMessages::ControlChannel"] } ] }, { "Name": "Log all events for Amazon Managed Blockchain networks", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::ManagedBlockchain::Network"] } ] }, { "Name": "Log all events for AWS HealthImaging data stores", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::MedicalImaging::Datastore"] } ] }, { "Name": "Log all events for AWS Private CA Connector for Active Directory", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::PCAConnectorAD"] } ] } ]'

コマンドは、次の出力例を返します。

{ "TrailARN": "arn:aws:cloudtrail:us-east-1:111122223333:trail/TrailName", "AdvancedEventSelectors": [ { "Name": "Log all events for all Amazon S3 buckets", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ] } ] }, { "Name": "Log all events for Lambda functions", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::Lambda::Function" ] } ] }, { "Name": "Log all events for DynamoDB tables", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::DynamoDB::Table" ] } ] }, { "Name": "Log all CloudTrail PutAuditEvents activity on a CloudTrail Lake channel", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::CloudTrail::Channel" ] } ] }, { "Name": "Log all events for Amazon S3 on Outposts", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3Outposts::Object" ] } ] }, { "Name": "Log all JSON-RPC calls for Ethereum nodes in Amazon Managed Blockchain", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::ManagedBlockchain::Node" ] } ] }, { "Name": "Log all events for Amazon S3 Object Lambda access points", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3ObjectLambda::AccessPoint" ] } ] }, { "Name": "Log all Amazon EBS direct API calls on snapshots", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::EC2::Snapshot" ] } ] }, { "Name": "Log all events for Amazon S3 access points", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::AccessPoint" ] } ] }, { "Name": "Log all events for DynamoDB streams", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::DynamoDB::Stream" ] } ] }, { "Name": "Log all events for AWS Glue tables created by Lake Formation", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::Glue::Table" ] } ] }, { "Name": "Log all events for FinSpace environments", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::FinSpace::Environment" ] } ] }, { "Name": "Log all events for SageMaker metrics experiment trial components", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::SageMaker::ExperimentTrialComponent" ] } ] }, { "Name": "Log all events for SageMaker feature stores", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::SageMaker::FeatureGroup" ] } ] }, { "Name": "Log all events for Amazon Kendra Intelligent Ranking rescore execution plans", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::KendraRanking::ExecutionPlan" ] } ] }, { "Name": "Log all events for Amazon Cognito identity pools", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::Cognito::IdentityPool" ] } ] }, { "Name": "Log all events for an Amazon GuardDuty detector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::GuardDuty::Detector" ] } ] }, { "Name": "Log all events for Amazon EMR write-ahead log workspaces", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::EMRWAL::Workspace" ] } ] }, { "Name": "Log all events for Amazon CodeWhisperer profiles", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::CodeWhisperer::Profile" ] } ] }, { "Name": "Log all events for Amazon Verified Permissions policy stores", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::VerifiedPermissions::PolicyStore" ] } ] }, { "Name": "Log all events for AWS Systems Manager control channels", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::SSMMessages::ControlChannel" ] } ] }, { "Name": "Log all events for Amazon Managed Blockchain networks", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::ManagedBlockchain::Network" ] } ] }, { "Name": "Log all events for AWS HealthImaging data stores", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::MedicalImaging::Datastore" ] } ] }, { "Name": "Log all events for AWS Private CA Connector for Active Directory", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::PCAConnectorAD" ] } ] } ] }

例: イベントデータストア用のデータイベントのログ記録

AWS CLI を使用して、データイベントを記録するようにイベントデータストアを設定できます。create-event-data-store コマンドを使用して、データイベントをログに記録する新しいイベントデータストアを作成します。update-event-data-store コマンドを使用して、既存のイベントデータストアに関する高度イベントセレクターを更新します。

イベントデータストアにデータイベントが含まれているかどうかを確認するには、get-event-data-store コマンドを実行します。

aws cloudtrail get-event-data-store --event-data-store EventDataStoreARN

コマンドは、イベントデータストアの設定を返します。

{ "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:111122223333:eventdatastore/EXAMPLE492-301f-4053-ac5e-EXAMPLE6441aa", "Name": "ebs-data-events", "Status": "ENABLED", "AdvancedEventSelectors": [ { "Name": "Log all EBS direct APIs on EBS snapshots", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::EC2::Snapshot" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "RetentionPeriod": 2557, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-01-04T15:57:33.701000+00:00", "UpdatedTimestamp": "2023-02-20T20:37:34.228000+00:00" }

バケットのすべての Amazon S3 イベントを含める

次の例では、特定の S3 バケットのすべての Amazon S3 オブジェクトのデータイベントをログ含めるようにイベントデータストアを作成する方法を示します。resources.type の S3 イベントの値フィールドは AWS::S3::Object です。S3 オブジェクトと S3 バケットの ARN 値はわずかに異なるため、resources.ARNStartsWith 演算子を追加してすべてのイベントをキャプチャする必要があります。

aws cloudtrail create-event-data-store --name "EventDataStoreName" --multi-region-enabled \ --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/"] } ] } ]'

コマンドは、次の出力例を返します。

{ "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:111122223333:eventdatastore/EXAMPLE492-301f-4053-ac5e-EXAMPLE441aa", "Name": "EventDataStoreName", "Status": "ENABLED", "AdvancedEventSelectors": [ { "Name": "S3EventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.ARN", "StartsWith": [ "arn:partition:s3:::bucket_name/" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "RetentionPeriod": 2557, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-01-04T15:57:33.701000+00:00", "UpdatedTimestamp": "2023-02-20T20:49:21.766000+00:00" }

Amazon S3 on AWS Outposts イベントを含める

次の例では、アウトポストの Outopost オブジェクト上のすべての Amazon S3 のすべてのデータイベントを含めるよう、イベントデータストアを作成する方法を示します。

aws cloudtrail create-event-data-store --name EventDataStoreName \ --advanced-event-selectors \ '[ { "Name": "OutpostsEventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3Outposts::Object"] } ] } ]'

コマンドは、次の出力例を返します。

{ "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:111122223333:eventdatastore/EXAMPLEb4a8-99b1-4ec2-9258-EXAMPLEc890", "Name": "EventDataStoreName", "Status": "CREATED", "AdvancedEventSelectors": [ { "Name": "OutpostsEventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3Outposts::Object" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "RetentionPeriod": 2557, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-02-20T21:00:17.673000+00:00", "UpdatedTimestamp": "2023-02-20T21:00:17.820000+00:00" }

AWS Config コンプライアンスのデータイベントをログに記録する

AWS Config コンフォーマンスパックを使用して、エンタープライズを正式な基準 (米国政府機関におけるクラウドセキュリティ認証制度 (FedRAMP) またはアメリカ国立標準技術研究所 (NIST)などが必須とするもの) へ準拠し続けさせている場合、コンプライアンスフレームワークの適合パックでは一般的に、少なくとも、Amazon S3 バケットのデータイベントをログに記録する必要があります。コンプライアンスフレームワークの適合パックには、アカウントの S3 データイベントのログ記録をチェックする、cloudtrail-s3-dataevents-enabled と呼ばれるマネージドルールが含まれます。コンプライアンスフレームワークに関連付けられていない多くの適合パックも、S3 データイベントログ記録を必要とします。次に、このルールを含む適合パックの例を示します。

AWS Config で利用可能なサンプル適合パックの完全なリストについては、のAWS Config デベロッパーガイドの「適合パックサンプルテンプレート」を参照してください。

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

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

イベントデータストアがデータイベントを記録しているかどうかを確認するには、GetEventDataStore オペレーションを実行します。CreateEventDatastore または UpdateEventDatastore オペレーションを実行し、高度なイベントセレクターを指定することで、データイベントを含むようにイベントデータストアを構成できます。詳細については、「AWS CLI を使用した CloudTrail Lake の管理」および AWS CloudTrail API リファレンスを参照してください。

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

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