HTTP を許可する CloudFront ビューワープロトコルポリシー

CloudFront で HTTP を許可すると、ビューワーと CDN 間のリクエストや応答が暗号化されない場合があります。

説明

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 で接続できることを確認してください。

参考資料