CloudTrail ログバケットの公開アクセスの確認

監査ログ保存先の公開権限を削除し、ログ配信に必要な権限は維持してください。

説明

CloudTrail ログにはアカウントの活動や API 呼び出しなどの機密性がある監査情報が含まれる場合があります。ログバケットの公開権限を削除し、実際のバケットとオブジェクトへのアクセスを合わせて確認してください。

バケットの公開 READ ACL はオブジェクト一覧の取得を許可しますが、それだけで全ログオブジェクトの内容を読む権限を与えるわけではありません。実際の権限には、オブジェクト ACL、バケットポリシー、Object Ownership、パブリックアクセスのブロックも影響します。

想定される影響

  • オブジェクト名や一覧の公開によって、環境の構造を推測される可能性があります。
  • ログオブジェクトの読み取りも公開されていると、アカウントの活動や運用情報が漏えいするおそれがあります。

対処方法

  • 公開 ACL と不要な公開バケットポリシーを削除し、S3 のパブリックアクセスのブロックを維持してください。
  • 必要なログ配信・閲覧権限をポリシーに設定してから、可能なら ACL を無効にしてください。対象 trail ARN の aws:SourceArn 条件などで CloudTrail サービスの書き込みを制限してください。
  • ログ配信が継続し、承認された監査担当者だけが必要なオブジェクトを読めることを確認してください。

例

既存の ACL 有効環境での比較用抜粋です。新規 S3 バケットでは既定で ACL が無効なため、公開 ACL の要求は受け付けられません。一意のバケット名と CloudTrail 配信用のバケットポリシーは別途設定してください。

変更前

hcl
resource "aws_cloudtrail" "cloudtrail" {
  name           = "tf-trail-foobar"
  s3_bucket_name = aws_s3_bucket.log_bucket.id
}

resource "aws_s3_bucket" "log_bucket" {
  bucket = "my-tf-test-bucket"
  acl    = "public-read"
}

公開 READ バケット ACL を要求します。有効なら一覧取得を許可しますが、ログオブジェクトの内容へのアクセスは別途確認してください。

変更後

hcl
resource "aws_cloudtrail" "cloudtrail" {
  name           = "tf-trail-foobar"
  s3_bucket_name = aws_s3_bucket.log_bucket.id
}

resource "aws_s3_bucket" "log_bucket" {
  bucket = "my-tf-test-bucket"
  acl    = "private"
}

バケット ACL の公開権限を削除します。バケット・オブジェクトのポリシーとパブリックアクセスのブロックも確認し、CloudTrail の配信権限を維持してください。

参考資料