AWS S3静的ウェブサイトの公開範囲の確認

静的サイトのコンテンツと公開権限を意図した範囲に限定する

説明

S3静的ウェブサイトは、意図的に公開コンテンツを配信するために利用できます。ウェブサイト設定だけでオブジェクトが公開されるわけではありませんが、公開読み取り権限があればウェブサイトエンドポイントで配信できます。このエンドポイントはHTTPSに対応していません。

想定される影響

公開権限が広すぎると、サイト用以外のファイルも漏えいする可能性があります。また、HTTP通信は盗聴や改ざんの影響を受けます。

対処方法

不要なウェブサイト構成を削除し、公開権限も取り消してください。サイトが必要なら公開コンテンツを分離し、HTTPSを提供してください。非公開バケットをCloudFrontの背後に置く場合は、S3 RESTオリジンと適切なオリジンアクセス制御を使用してください。

例

次の抜粋では、ウェブサイト構成を削除してS3 Block Public Accessを適用しています。既存のバケットポリシーや他のアクセス権限も確認してください。

変更前

hcl
resource "aws_s3_bucket" "website_bucket" {
  bucket = "s3-website-test.hashicorp.com"
}

resource "aws_s3_bucket_website_configuration" "website" {
  bucket = aws_s3_bucket.website_bucket.id

  index_document {
    suffix = "index.html"
  }

  error_document {
    key = "error.html"
  }
}

変更後

hcl
resource "aws_s3_bucket" "website_bucket" {
  bucket = "s3-website-test.hashicorp.com"
}

resource "aws_s3_bucket_public_access_block" "website_bucket" {
  bucket = aws_s3_bucket.website_bucket.id

  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

参考資料