Cloudfront Origin は、Application Load Balancer DNS 用に作成された Route 53 レコードセットにできますか?

Cloudfront Origin は、Application Load Balancer DNS 用に作成された Route 53 レコードセットにできますか?

AWS アプリケーション ロード バランサー DNS 用の Route53 レコードセットを作成しました。質問は、AWS Cloudfront オリジンにこのレコードセット URL を含めることができるかどうかです。

例: ALB DNS 名: xxxx.us-east-1.elb.amazonaws.com。アプリケーション ロード バランサー DNS の Route53 のレコードセット エントリ: www.abc.com

では、www.abc.com を CloudFront の origin として設定できますか?

答え1

オリジン プロトコルを HTTPS のみに設定すると、CloudFront と ELB 間のトラフィックは TLS によって保護され、実際のオリジン ドメイン名をどちらの方法でも設定できます。ヘッダーには、Cloudfront-Forwarded-ProtoCloudFront とビューア間で使用されるプロトコルが示されます (この設定では、ロード バランサーは常に を設定するためX-Forwarded-Proto: https)。

CloudFront は、自身と Origin 間の TLS ネゴシエーションが信頼できるものであることを要求します。よく見落とされる要素は、TLS (SSL) 証明書が 2 つのことを行うということです。接続の暗号化 (明らか) とサーバーの認証 (サーバーが要求されたホスト名のサーバーとして承認されており、偽物ではないことの証明) を提供します (それほど明らかではありません)。サーバーの証明書のサブジェクトおよび/またはサブジェクト代替名がブラウザーのアドレス バーのホスト名と一致しない場合、ブラウザーに警告が表示されるのはそのためです。

CloudFront では、この要件に対して限定的な例外が許可されており、次の 2 つの条件のいずれかが満たされている限り、証明書の検証が成功します。

  • ELBはオリジンドメイン名に一致する証明書を提示する必要があります。または
  • ELB は、HostCloudFront がブラウザから ELB に転送するヘッダーと一致する証明書を提示する必要があります。

それ以外の場合、CloudFront は を返します502 Bad Gateway

ELB ホスト名をオリジンドメイン名として使用する場合、最初の条件は実現できません。そのため、CloudFront コンソールでは、Hostターゲットが ELB であることが確認されると、転送用のヘッダーをホワイトリストに登録するように求められます。

しかし、あなたの環境がこのようになっている限り...

  • www.example.comCloudFrontを指し、ディストリビューションの代替ドメイン名で設定され、
  • ヘッダーHostはホワイトリスト用に設定されており、
  • ELBホスト名はオリジンドメイン名として設定され、
  • ELBには有効な証明書がありますwww.example.com

... 1 つの例外を除いて動作します。dzczcexample.cloudfront.netブラウザでドメインを使用して CloudFront 経由でオリジンにアクセスすることはできません。一部の構成では、2 番目のエントリ ポイント経由でコンテンツにアクセスしたくないため、これが望ましい場合があります。

それ以外の場合は、提案したとおりに実行するのが最善策です。つまり、制御するドメインのホスト名を DNS の ELB にマッピングし、そのホスト名を CloudFront のオリジンドメイン名として設定します。

CloudFront は、インターネットからアクセス可能な任意のホスト名をオリジンとして使用できます。オリジンは AWS 内にある必要はありません。たとえば、Google Cloud Storage バケットを CloudFront のオリジンとして使用することもできます。CloudFront とオリジンの統合は緩やかです。つまり、CloudFront は ELB を特別に認識していません。パブリック DNS 経由でホスト名を解決し、接続するだけです。

また、CloudFront ディストリビューションのみがオリジンと通信できるようにしたい場合は、CloudFront で秘密のカスタム オリジン ヘッダーを設定し、オリジンはこの値のないリクエストを拒否する必要があります。ELB セキュリティ グループを使用して CloudFront アドレス空間からのアクセスのみを許可することも可能ですが、その空間は頻繁に拡大するため、新しいアドレス範囲を許可するようにセキュリティ グループを更新しておく必要があります... ただし、技術的には誰でも CloudFront ディストリビューションを作成して、ELB を含む任意の場所を指定できるため、セキュリティに対する誤った認識を与えるというのが私の意見です。カスタム ヘッダーを使用すると、これを回避できます。

関連情報