説明
viewer_protocol_policy が allow-all の場合、CloudFront は HTTP と HTTPS の両方でコンテンツへのアクセスを受け付けます。HTTP 通信は転送中に盗聴や改ざんを受けるおそれがあります。この設定はビューワーと CloudFront 間に適用され、オリジンへの接続は別途保護する必要があります。
想定される影響
- HTTP で送ったリクエストパラメーターや応答内容が漏えい、改ざんされるおそれがあります。
- 保護されていない認証情報やセッション情報を送ると、アカウントへの不正アクセスに悪用される場合があります。
対処方法
- 各キャッシュ動作の
viewer_protocol_policyをhttps-onlyまたはredirect-to-httpsにしてください。 - リダイレクト前の最初の HTTP リクエストは暗号化されないため、クライアントが最初から HTTPS を使うようにしてください。
- デフォルトと追加のキャッシュ動作、証明書、TLS ポリシーを確認し、オリジンへの接続も必要に応じて暗号化してください。
例
デフォルトのキャッシュ動作でビューワープロトコルを比較する抜粋です。キャッシュポリシーなど、その他の必須設定は省略しています。
変更前
yaml
- name: CloudFront 배포 생성
community.aws.cloudfront_distribution:
state: present
caller_reference: unique-test-distribution-id
origins:
- id: my-test-origin
domain_name: www.example.com
default_cache_behavior:
target_origin_id: my-test-origin
viewer_protocol_policy: allow-all
allow-all は HTTP リクエストも受け付けます。HTTPS が利用可能でも、HTTP を使ったリクエストが保護されるわけではありません。
変更後
yaml
- name: CloudFront 배포 생성
community.aws.cloudfront_distribution:
state: present
caller_reference: unique-test-distribution-id
origins:
- id: my-test-origin
domain_name: www.example.com
default_cache_behavior:
target_origin_id: my-test-origin
viewer_protocol_policy: https-only
https-only は HTTP リクエストを拒否します。正当なクライアントが HTTPS で接続できることを確認してください。