S3オブジェクトのCloudTrailデータイベント収集範囲の確認

必要なS3オブジェクトの読み取り・書き込みがCloudTrailデータイベントに含まれることを確認してください。

説明

CloudTrailデータイベントは、S3オブジェクトの読み取り・書き込みの調査に使えます。管理イベントだけではオブジェクト単位の監査要件を満たせない場合があるため、対象バケットとイベントを確認してください。

event_selectorのread_write_typeの既定値はAllです。省略しただけで読み取りや書き込みが除外されるわけではなく、収集範囲はデータリソースと他のセレクター設定にも左右されます。

想定される影響

  • 必要なオブジェクトイベントが収集されないと、読み取りや変更の履歴を追跡しにくくなります。
  • 大量ダウンロード、削除、上書きを調査する証拠が不足するおそれがあります。

対処方法

  • 必要なS3オブジェクトをデータイベントの対象にし、読み取りと書き込みの両方が必要ならread_write_type = "All"を明示してください。
  • バケット、プレフィックス、リージョンの範囲とデータイベントの費用を確認してください。
  • 実際の配信を確認し、通知、ログのアクセス権限、保持期間を設定してください。

例

以下は既定値と明示的なAllを比較する例で、どちらも読み取り・書き込みイベントを選択します。arn:aws:s3:::は広いS3の範囲を表すため、必要なバケットとプレフィックスに絞ってください。ログ保存先バケットとCloudTrailの配信ポリシーは省略しています。

変更前

hcl
resource "aws_cloudtrail" "example" {
  name                          = "tf-trail-foobar"
  s3_bucket_name                = aws_s3_bucket.foo.id
  s3_key_prefix                 = "prefix"
  include_global_service_events = false

  event_selector {
    include_management_events = true

    data_resource {
      type   = "AWS::S3::Object"
      values = ["arn:aws:s3:::"]
    }
  }
}

変更後

hcl
resource "aws_cloudtrail" "example" {
  name                          = "tf-trail-foobar"
  s3_bucket_name                = aws_s3_bucket.foo.id
  s3_key_prefix                 = "prefix"
  include_global_service_events = false

  event_selector {
    read_write_type           = "All"
    include_management_events = true

    data_resource {
      type   = "AWS::S3::Object"
      values = ["arn:aws:s3:::"]
    }
  }
}

説明:

変更後はread_write_type = "All"を明示し、意図を分かりやすくしています。変更前の省略値も既定でAllになるため、必要なイベントが欠けていないかはセレクターの範囲と配信状況を確認してください。

参考資料