AWS WAF を使用して直接トラフィックを ALB に制限し、CloudFront のみを通過するトラフィックを許可する方法を教えてください。

最終更新日: 2022 年 7 月 20 日

ユーザーが Application Load Balancer (ALB) に直接アクセスすることを制限し、AWS WAF を使用して Amazon CloudFront からのみアクセスを許可したいと考えています。AWS WAF を使用してこれを行うにはどうすればいいですか?

解決方法

ALB への直接トラフィックを制限し、AWS WAF を使用して CloudFront のみを通過するトラフィックを許可するには、以下を実行します。

  1. CloudFront が ALB に送信するリクエストにシークレット値を持つカスタム HTTP ヘッダーを追加するように CloudFront を設定する。
  2. ALB に関連付けられた AWS WAF ウェブ ACL で、カスタム HTTP ヘッダーシークレット値を含まないリクエストをブロックするルールを作成する。

CloudFront を設定して、ALB に送信するリクエストにシークレット値を含むカスタム HTTP ヘッダーを追加する

  1. Amazon CloudFront コンソールを開きます。
  2. ナビゲーションペインで、[Distributions] (ディストリビューション) を選択します。
  3. ディストリビューションの ID を選択します。
  4. [オリジン] を選択します。
  5. ALB オリジンを選択し、[Edit] を選択します。
    注意:ALB オリジンがない場合は、「ディストリビューションの作成」または「ディストリビューションの更新」を参照してください。
  6. [カスタムヘッダーの追加] で、[ヘッダー名] と [値] を追加します。ヘッダー名の例は Custom-Header であり、の例は Random-12345 です。
    重要:ヘッダー名は、ユーザー名やパスワードなどの安全な認証情報として考慮してください。
  7. [Save Changes] (変更を保存) を選択します。

ALB に関連付けられた AWS WAF ウェブ ACL で、カスタム HTTP ヘッダーシークレット値を含まないリクエストをブロックするルールを作成します。

注意:ALB に関連付けられた既存のウェブ ACL がない場合は、「AWS WAF ウェブ ACL を作成する」の手順に従います。ALB に関連付けられた既存のウェブ ACL がある場合は、ルールの作成に進みます。

AWS WAF ウェブ ACL を作成する

  1. AWS WAF コンソールを開きます。
  2. ナビゲーションペインの [AWS WAF] の下で、[Web ACL] (ウェブ ACL) を選択します。
  3. [Region] で、ALB がある AWS リージョンを選択します。
  4. [ウェブ ACL の作成] を選択し、[名前] を入力します。
  5. [関連する AWS リソース] で、ALB を関連付けて、[次へ] を選択します。
  6. どのルールにも一致しないリクエストに対するデフォルトのウェブ ACL アクションで、[許可] を選択し、[次へ] を選択します。
  7. [リクエストのサンプリングオプション] で、[サンプリングされたリクエストを有効にする] を選択し、[次へ] を選択します。
  8. ウェブ ACL の設定を確認します。仕様と一致する場合は、[ウェブ ACL の作成] を選択します。

ルールを作成する

  1. AWS WAF コンソールを開きます。
  2. ナビゲーションペインの [AWS WAF] の下で、[Web ACL] (ウェブ ACL) を選択します。
  3. [Region] で、ALB がある AWS リージョンを選択します。
  4. ALB を関連付けたウェブ ACL を選択します。
  5. [Rules] (ルール) を選択し、[Add Rules] (ルールを追加)、[Add my own rules and rule groups] (独自のルールとルールグループを追加) の順に選択します。
  6. [Name] (名前) で [rule name] (ルール名) を入力し、[Regular Rule] (通常ルール) を選択します。
  7. [If a request] (リクエストが次の場合) で、[doesn't match the statement (NOT)] (ステートメントと一致しない (NOT)) を選択します。
  8. ステートメント 1:
    [検査] で [単一ヘッダー] を選択します。
    [ヘッダーフィールド名] に、CloudFront で作成されたヘッダー名の名前を入力します。例えば、Custom-header などです。
    [一致タイプ] で、[完全に一致する文字列] を選択します。
    [一致する文字列] に、CloudFront で作成されたを入力します。例えば、Random-12345 などです。
    [Transformation] (変換) で、 [None] (なし) を選択します。
  9. [Action] (アクション) で [Block] (ブロック) を選択します。
  10. [Save rule] (ルールを保存) を選択します。
  11. [ルール優先度の設定] で、複数のルールがある場合は、このルールを最も高い優先度に設定します。
  12. [Save] (保存) を選択します。

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?