Application Load Balancer への直接トラフィックを制限し、CloudFront を経由したトラフィックのみを許可するにはどうすればよいですか?

所要時間2分
0

Application Load Balancer への直接アクセスを制限し、Amazon CloudFront からのアクセスのみを許可したいと考えています。

簡単な説明

Application Load Balancer への直接トラフィックを制限し、CloudFront 経由のアクセスのみを許可するには、Application Load Balancer のリスナールールを使用します。AWS WAF ウェブアクセスコントロールリスト (ACL) が既にある場合は、それを使用できます。Application Load Balancer へのアクセスをさらに制限するには、オリジンへのアクセスを制限するようにセキュリティグループを設定します。これを行うには、AWS マネージドプレフィックスリストを使用してください。これらのソリューションのいずれかを使用すると共に、セキュリティグループも設定するのが、ベストプラクティスです。

解決策

Application Load Balancer

Application Load Balancer へのアクセスを制限する」を参照して、Application Load Balancer のリスナールールによってトラフィックを制限できます。

AWS WAF

**注:**AWS WAF の課金基準は次のとおりです。

  • 作成したウェブ ACL の総量
  • 各ウェブ ACL に追加したルールの総量
  • 受信したウェブリクエストの総量

詳細については、「AWS の料金」を参照してください。

次の手順を実行することで、AWS WAF カスタムウェブ ACL ルールによってトラフィックを制限できます。

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

**カスタム HTTP ヘッダーを追加するように CloudFront を設定する **

次の手順を実行します。

  1. CloudFront コンソールを開きます。
  2. ナビゲーションペインで、[ディストリビューション] を選択します
  3. ディストリビューション ID を選択します。
  4. [オリジン] を選択します。
  5. お使いの Application Load Balancer を選んで、[編集] を選択します。 注: お使いの Application Load Balancer がオリジンでない場合は、ディストリビューションを更新し、お使いの Application Load Balancer をオリジンとして設定します。
  6. [カスタムヘッダーを追加] で、[ヘッダー名][値] を入力します。
    重要: [ヘッダー名][値] は、安全な認証情報 (ユーザー名やパスワードなど) として機能します。これらの値は、後で当手順内で使用するため、テキストファイルにコピーしておきます。
  7. [変更を保存] を選択します。

ヘッダーなしのリクエストをブロックするルールをウェブ ACL 内に作成する

次の手順を実行します。

  1. AWS WAF コンソールを開きます。
  2. ナビゲーションペインの**[AWS WAF]で、[ウェブ ACL]**を選択します。
  3. [リージョン] で、お使いの Application Load Balancer が配置されている AWS リージョンを選択します。
    注: お使いの Application Load Balancer に既存のウェブ ACL が関連付けられている場合は、ステップ 9 に進んでください。
  4. [ウェブ ACL の作成] を選択し、[名前] に入力します。
  5. [関連する AWS リソース]で、お使いの Application Load Balancer を選択し、[次へ] を選択します。
  6. [どのルールにも一致しないリクエストのデフォルトウェブ ACL アクション] では、[許可] を選択し、[次へ] を選択します。
  7. [リクエストのサンプリングオプション][サンプルリクエストを有効にする] を選択し、[次へ] を選択します。
  8. [ウェブ ACL の作成] を選択します。
  9. AWS WAF コンソールを開きます。
  10. ナビゲーションペインの [AWS WAF] で、[ウェブ ACL] を選択します。
  11. [リージョン] で、お使いの Application Load Balancer が配置されているリージョンを選択します。
  12. お使いの Application Load Balancer に関連付けられているウェブ ACL を選択します。
  13. [ルール] で、[ルールを追加][独自のルールとルールグループを追加] の順に選択します。
  14. [名前] にルール名を入力します。
  15. [タイプ][正規ルール] を選択します。
  16. [リクエストの条件] で、[ステートメントと一致しない (NOT)] を選択します。
  17. [ステートメント 1] で、次の設定を行います。
    [検査]には[単一ヘッダー]を選択します。
    [ヘッダーフィールド名] に、CloudFront で作成した
    ヘッダー名
    を入力します。
    [マッチタイプ]には[完全に一致する文字列]を選択します。
    [一致する文字列] に、CloudFront で作成した
    を入力します。
    [テキスト変換][なし] を選択します。
  18. [アクション][ブロック] を選択します。
  19. [ルールを保存] を選択します。
  20. 複数のルールがある場合は、[ルールの優先度を設定する] でこのルールを最も高い優先度に設定します。
  21. [保存] を選択します。

セキュリティグループ

Application Load Balancer のセキュリティグループに対して AWS マネージドプレフィックスリストを使用することで、Application Load Balancer へのトラフィックをさらに制限できます。

既存のセキュリティグループを更新する手順については、「関連付けられたセキュリティグループの更新」を参照してください。お使いの Application Load Balancer をセキュリティグループに関連付けるには、次の手順を実行します。

  1. Amazon Elastic Compute Cloud (Amazon EC2) コンソールを開きます。
  2. [ロードバランサー] を選んで、お使いの Application Load Balancer を選択します。
  3. [セキュリティ] を選択します。
  4. お使いの Application Load Balancer に関連付けるセキュリティグループを選択します。
  5. インバウンドルールを変更するには、[インバウンドのルールの編集] を選択し、ユースケースに合うように設定を更新します。
    注: 0.0.0.0/0 を許可するルールが既存の場合に、そのルールを削除するときは、事前に新しいルールを追加しておく必要があります。
  6. 特定のプロトコルを許可するには、そのプロトコルを選択してから [カスタム] を選択します。
  7. [ソースタイプ] で、[CloudFront] を選択し、AWS マネージドプレフィックスリストからプレフィックスを選択します。
  8. [保存] を選択します。

注: お使いの Application Load Balancer で使用するポートのみを許可するのがベストプラクティスです。

CloudFront マネージドプレフィックスリストは、プレフィックスリストの重みがあるため、デフォルト設定では各セキュリティグループに 1 回しか追加できません。同じセキュリティグループに、CloudFront ** ** をソースタイプとする別のルールを追加するには、クォータの引き上げをリクエストしてください。または、CloudFront マネージドプレフィックスリストを参照する 2 つのセキュリティグループを使用してください。

関連情報

セキュリティグループ

AWS公式
AWS公式更新しました 4ヶ月前
コメントはありません

関連するコンテンツ