説明
CloudFrontのviewer_protocol_policyがallow-allの場合、クライアントは平文のHTTPでコンテンツを取得できます。
想定される影響
HTTPのリクエストとレスポンスは通信経路で盗聴・改ざんされる可能性があり、機密データが漏えいするおそれがあります。
対処方法
デフォルトと追加のキャッシュビヘイビアにhttps-onlyまたはredirect-to-httpsを設定してください。リダイレクト前の最初のHTTPリクエストは暗号化されないため、クライアントも最初からHTTPSを使用する必要があります。
例
以下はHTTPリクエストを拒否するhttps-onlyの例です。バケットのドメイン変数には実際のS3リージョンドメインを指定し、オリジンへのHTTPS接続は別途設定してください。
変更前
hcl
resource "aws_cloudfront_distribution" "example" {
origin {
domain_name = var.bucket_regional_domain_name
origin_id = "myS3Origin"
s3_origin_config {
origin_access_identity = "origin-access-identity/cloudfront/ABCDEFG1234567"
}
}
enabled = true
default_cache_behavior {
allowed_methods = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"]
cached_methods = ["GET", "HEAD"]
target_origin_id = "myS3Origin"
viewer_protocol_policy = "allow-all"
forwarded_values {
query_string = false
cookies {
forward = "none"
}
}
}
}
変更後
hcl
resource "aws_cloudfront_distribution" "example" {
origin {
domain_name = var.bucket_regional_domain_name
origin_id = "myS3Origin"
s3_origin_config {
origin_access_identity = "origin-access-identity/cloudfront/ABCDEFG1234567"
}
}
enabled = true
default_cache_behavior {
allowed_methods = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"]
cached_methods = ["GET", "HEAD"]
target_origin_id = "myS3Origin"
viewer_protocol_policy = "https-only"
forwarded_values {
query_string = false
cookies {
forward = "none"
}
}
}
}