すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Service Mesh:イングレスゲートウェイを WAF インスタンスに接続する

最終更新日:Jan 17, 2025

サービスメッシュ(ASM)を使用すると、イングレスゲートウェイを Web アプリケーションファイアウォール(WAF)インスタンスに接続できます。アクセスログのフィールドをカスタマイズして、WAF インスタンスによってバックツーオリジンリクエストに追加されたヘッダーを表示できます。これは、オンラインでの O&M を容易にします。このトピックでは、イングレスゲートウェイを WAF インスタンスに接続する方法と、デバッグのためにアクセスログのフィールドをカスタマイズする方法について説明します。

前提条件

WAF の概要

WAF は、Web サイトまたはアプリにエンドツーエンドのセキュリティ保護を提供します。WAF は悪意のある Web トラフィックを識別してフィルタリングし、通常のトラフィックをオリジンサーバーに転送します。これにより、オリジンサーバーが攻撃から保護され、データとサービスのセキュリティが確保されます。

手順 1:イングレスゲートウェイを WAF インスタンスに接続する

ビジネス要件に基づいて、レイヤー 4 クラシックロードバランサー(CLB)インスタンスまたは CNAME を使用して、イングレスゲートウェイを WAF インスタンスに接続できます。

  • レイヤー 4 CLB インスタンス:この方法を使用することをお勧めします。この方法を使用すると、イングレスゲートウェイの CLB インスタンスを接続できます。CLB インスタンスは、以前はサーバーロードバランサー(SLB)インスタンスと呼ばれていました。レイヤー 4 CLB インスタンスを使用する場合、イングレスゲートウェイのすべてのトラフィックは WAF インスタンスに直接ルーティングされ、イングレスゲートウェイの CLB インスタンスに到達するすべてのリクエストに対して WAF ルールが実行されます。

  • CNAME:この方法では、指定されたドメイン名からのリクエストが WAF インスタンスにルーティングされます。イングレスゲートウェイに複数のドメイン名があり、その一部のドメイン名のみが WAF 保護を必要とする場合に、この方法を使用できます。

    説明

    CNAME を使用するには、ドメイン名の DNS 解決ルールを変更する必要があります。ドメイン名を WAF インスタンスにポイントする必要があります。その後、WAF インスタンスはリクエストをイングレスゲートウェイに転送します。

方法 1:レイヤー 4 CLB インスタンスを使用する

  1. Web Application Firewallコンソール にログインします。ビジネス要件に基づいて、[サブスクリプション] または [従量課金制] をクリックします。リージョンとその他の設定項目を確認し、[今すぐ購入] をクリックして WAF 3.0 インスタンスを作成します。WAF インスタンスをすでに作成している場合は、既存の WAF インスタンスを使用できます。

  2. 左側のナビゲーションペインで、[web サイト設定] をクリックします。[web サイト設定] ページで、[クラウドネイティブ] タブをクリックし、[CLB(TCP)] をクリックします。右側で、[追加] をクリックします。

  3. [インスタンスの設定 - レイヤー 4 CLB インスタンス] パネルで、ゲートウェイに関連付けられている CLB インスタンスを見つけ、[アクション] 列の [ポートの追加] をクリックします。イングレスゲートウェイで使用されているポートを選択します。ポートを設定したら、[OK] をクリックします。

    この例では、HTTP ポート 80 が選択されています。HTTPS プロトコルを選択する場合は、HTTPS 証明書を設定する必要があります。

    説明

    ASM コンソール にログインし、ゲートウェイの詳細ページでイングレスゲートウェイの CLB インスタンスを表示できます。

  4. [トラフィックマークを有効にする] を選択します。3 つのヘッダーを追加し、[OK] をクリックします。

    リクエストがこれらのヘッダーを運ぶ場合、リクエストは WAF によって保護されます。この例では、次の 3 つのヘッダーが追加されます。[カスタムヘッダー]customwaftag:customwaftagvalue)、[発信 IP アドレス]clientrealip)、および [送信元ポート]clientrealport)。

方法 2:CNAME を使用する

  1. Web Application Firewallコンソール にログインします。ビジネス要件に基づいて、[サブスクリプション] または [従量課金制] をクリックします。リージョンとその他の設定項目を確認し、[今すぐ購入] をクリックして WAF 3.0 インスタンスを作成します。WAF インスタンスをすでに作成している場合は、既存の WAF インスタンスを使用できます。

  2. 左側のナビゲーションペインで、[web サイト設定] をクリックします。[web サイト設定] ページで、[CNAME レコード] タブをクリックし、[追加] をクリックします。

  3. [リスナーの設定] ステップで、パラメーターを設定し、[次へ] をクリックします。

    次の図は、設定例を示しています。

    接入域名配置监听

  4. [転送ルールの設定] ステップで、[ロードバランシングアルゴリズム] パラメーターを [IP ハッシュ] に設定し、[オリジンサーバーアドレス] パラメーターを [IP] に設定し、イングレスゲートウェイのパブリック IP アドレスを入力します。[トラフィックマークを有効にする] を選択し、3 つのヘッダーを追加し、その他のパラメーターのデフォルト設定を維持し、[送信] をクリックします。

    その後、WAF インスタンスを介してイングレスゲートウェイに送信されるリクエストに 3 つのヘッダーが追加されます。この例では、次の 3 つのヘッダーが追加されます。[カスタムヘッダー]customwaftag:customwaftagvalue)、[発信 IP アドレス]clientrealip)、および [送信元ポート]clientrealport)。

    接入域名配置转发

  5. [追加完了] ステップで、[CNAME をコピー] をクリックし、WAF によって提供された CNAME を記録し、[完了] をクリックします。

    説明

    CNAME を使用するには、ここで設定したドメイン名の DNS レコードを、WAF によって提供された CNAME にポイントする必要があります。

手順 2:(オプション)ASM コンソールでアクセスログのフィールドをカスタマイズする

WAF によって検証されたリクエストには、特別なヘッダーが含まれている場合があります。たとえば、手順 1[転送ルールの設定] ステップでは、カスタムヘッダー、送信元 IP アドレスを示すヘッダー、および送信元ポートを示すヘッダーがリクエストに追加されます。オンラインアプリケーションのトラフィックが WAF インスタンスを通過し、これらのヘッダーがリンクのアクセスログに含まれていない場合、リンクのデバッグが困難になります。この場合、ASM の可観測性機能を使用して、アクセスログのフィールドをカスタマイズできます。詳細については、「データプレーンでのアクセスログのカスタマイズ」をご参照ください。

手順 3:WAF インスタンスが接続されているかどうかを確認する

方法 1:レイヤー 4 CLB インスタンスを使用する

レイヤー 4 CLB インスタンスを使用して WAF インスタンスに接続し、イングレスゲートウェイの IP アドレスに直接アクセスします。ブラウザのアドレスバーに ${イングレスゲートウェイの IP アドレス}:80/status/418 と入力します。

予期される出力:

-=[ teapot ]=-

       _...._
     .'  _ _ `.
    | ."` ^ `". _,
    \_;`"---"`|//
      |       ;/
      \_     _/
        `"""`

方法 2:CNAME を使用する

WAF によって提供された CNAME を使用し、次のコマンドを実行して HTTPBin アプリケーションの /status/418 パスにアクセスします。

curl -HHost:${WAF で設定されたドメイン名}  "http://${WAF によって提供された CNAME}/status/418" -v

予期される出力:

*   Trying x.x.x.x:80...
* Connected to geszcfxxxxxxxxxxxxxxxxxxxxppbeiz.aliyunwaf1.com (x.x.x.x) port 80 (#0)
> GET /status/418 HTTP/1.1
> Host:xxxx
> User-Agent: curl/7.84.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 418 Unknown
< Date: Wed, 22 Feb 2023 05:07:23 GMT
< Content-Length: 135
< Connection: keep-alive
< Set-Cookie: acw_tc=0bc1599a16770424432844282e82xxxxxxxxxxxxxxxxxxx1ad989e7e5245f;path=/;HttpOnly;Max-Age=1800
< server: istio-envoy
< x-more-info: http://tools.ietf.org/html/rfc2324
< access-control-allow-origin: *
< access-control-allow-credentials: true
< x-envoy-upstream-service-time: 1
<
-=[ teapot ]=-

       _...._
     .'  _ _ `.
    | ."` ^ `". _,
    \_;`"---"`|//
      |       ;/
      \_     _/
        `"""`
説明

この例では、実際のドメイン名は使用されていません。実際のドメイン名を使用してアクセスする場合は、ドメイン名解決ルールを変更して、WAF によって提供された CNAME を実際のドメイン名に置き換えます。

手順 4:ゲートウェイログで WAF インスタンスによって追加されたヘッダーの値を表示する

  1. ASM コンソール にログインします。左側のナビゲーションペインで、[サービスメッシュ] > [メッシュ管理] を選択します。

  2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、[可観測性管理センター] > [ログセンター] を選択します。

  3. [ASM ゲートウェイログ] タブで、テキストボックスに 418 と入力し、[検索と分析] をクリックします。

    WAF インスタンスによって追加されたヘッダーの値がログに出力されます。日志中心

イングレスゲートウェイを WAF インスタンスに接続した後、WAF コンソールにログインして、その他の高度な保護機能を設定し、Web サイトを攻撃から保護できます。 リンク上の他のカスタムヘッダーを監視するには、手順 2 を実行してヘッダーを設定します。