NetScaler Web アプリケーション ファイアウォールを使用して AWS API ゲートウェイを保護する
AWS API Gateway の前に NetScaler アプライアンスを展開し、外部の脅威から API Gateway を保護できます。NetScaler Web App Firewall (WAF) は、OWASP Top 10 の脅威やゼロデイ攻撃から API を防御できます。NetScaler Web App Firewall は、すべての ADC フォームファクターで単一のコードベースを使用します。そのため、あらゆる環境でセキュリティポリシーを一貫して適用および強制できます。NetScaler Web App Firewall は展開が容易で、単一ライセンスとして利用できます。NetScaler Web App Firewall は、以下の機能を提供します。
- 設定の簡素化
- ボット管理
- 包括的な可視性
- 複数のソースからデータを照合し、統合された画面にデータを表示する
API Gateway の保護に加えて、他の NetScaler 機能も使用できます。詳細については、NetScaler ドキュメント を参照してください。データセンターのフェイルオーバーを回避し、シャットダウン時間を最小限に抑えるために、可用性ゾーン内またはゾーン間で ADC を高可用性構成で配置できます。また、Autoscale 機能を使用してクラスタリングを使用または構成することもできます。
以前は、AWS API Gateway はその背後にあるアプリケーションを保護するために必要な保護をサポートしていませんでした。Web Application Firewall (WAF) の保護がないと、API はセキュリティ上の脅威にさらされやすくなりました。
AWS API Gateway の前に NetScaler アプライアンスを展開する
次の例では、NetScaler アプライアンスが AWS API Gateway の前に展開されています。

AWS Lambda サービスに対する正規の API リクエストがあると仮定します。このリクエストは、Amazon API Gateway ドキュメント に記載されている API サービスのいずれかに対するものである可能性があります。前の図に示すように、トラフィックフローは次のとおりです。
- クライアントは AWS Lambda 関数 (XYZ) にリクエストを送信します。このクライアントリクエストは、NetScaler 仮想サーバー (192.168.1.1) に送信されます。
- 仮想サーバーはパケットを検査し、悪意のあるコンテンツがないか確認します。
- NetScaler アプライアンスは、クライアントリクエストのホスト名と URL を変更するためにリライトポリシーをトリガーします。たとえば、
https://restapi.citrix.com/default/LamdaFunctionXYZをhttps://citrix.execute-api.<region>.amazonaws.com/default/LambdaFunctionXYZに変更したいとします。 - NetScalerアプライアンスは、このリクエストをAWS API Gatewayに転送します。
- AWS API GatewayはさらにリクエストをLambdaサービスに送信し、Lambda関数「XYZ」を呼び出します。
- 同時に、攻撃者が悪意のあるコンテンツを含むAPIリクエストを送信した場合、その悪意のあるリクエストはNetScalerアプライアンスに到達します。
- NetScalerアプライアンスはパケットを検査し、設定されたアクションに基づいてパケットを破棄します。
WAFを有効にしてNetScalerアプライアンスを構成する
NetScalerアプライアンスでWAFを有効にするには、次の手順を実行します。
- コンテンツスイッチングまたは負荷分散仮想サーバーを追加します。仮想サーバーのIPアドレスが192.168.1.1であると仮定すると、これはドメイン名(restapi.citrix.com)に解決されます。
- NetScaler仮想サーバーでWAFポリシーを有効にします。詳細については、「Web App Firewallの構成」を参照してください。
- ドメイン名を変更するためにリライトポリシーを有効にします。たとえば、「restapi.citrix.com」ドメイン名のロードバランサーへの受信リクエストを、バックエンドのAWS API Gatewayの「citrix.execute-api.
<region>.amazonaws」ドメイン名に書き換えたいとします。 -
NetScalerアプライアンスでL3モードを有効にして、プロキシとして機能させます。次のコマンドを使用します。
enable ns mode L3 <!--NeedCopy-->
上記の例のステップ3で、ウェブサイト管理者がNetScalerアプライアンスに「restapi.citrix.com」ドメイン名を「citrix.execute-api.<region>.amazonaws.com」に、URLを「default/lambda/XYZ」に置き換えさせたいとします。
次の手順では、リライト機能を使用してクライアントリクエストのホスト名とURLを変更する方法について説明します。
- SSHを使用してNetScalerアプライアンスにログオンします。
-
リライトアクションを追加します。
add rewrite action rewrite_host_hdr_act replace "HTTP.REQ.HEADER(\"Host\")" "\"citrix.execute-api.<region>.amazonaws.com\"" add rewrite action rewrite_url_act replace HTTP.REQ.URL.PATH_AND_QUERY "\"/default/lambda/XYZ\"" <!--NeedCopy--> -
リライトアクションのリライトポリシーを追加します。
add rewrite policy rewrite_host_hdr_pol "HTTP.REQ.HEADER(\"Host\").CONTAINS(\"restapi.citrix.com\") "rewrite_host_hdr_act add rewrite policy rewrite_url_pol "HTTP.REQ.HEADER(\"Host\").CONTAINS(\"restapi.citrix.com\") "rewrite_url_act <!--NeedCopy--> -
リライトポリシーを仮想サーバーにバインドします。
bind lb vserver LB_API_Gateway -policyName rewrite_host_hdr_pol -priority 10 -gotoPriorityExpression 20 -type REQUEST bind lb vserver LB_API_Gateway -policyName rewrite_url_pol -priority 20 -gotoPriorityExpression END -type REQUEST <!--NeedCopy-->
詳細については、「NetScalerアプライアンスでクライアント要求のホスト名とURLを変更するようにリライトを構成する」(/ja-jp/citrix-adc/current-release/appexpert/rewrite/rewrite-action-policy-examples/example-12-rewrite-hostname-url-client.html)を参照してください。
NetScalerの機能と性能
NetScalerアプライアンスは、展開を保護するだけでなく、ユーザーの要件に基づいて要求を強化することもできます。NetScalerアプライアンスは、次の主要な機能を提供します。
-
APIゲートウェイの負荷分散: 複数のAPIゲートウェイがある場合、NetScalerアプライアンスを使用して複数のAPIゲートウェイの負荷分散を行い、APIリクエストの動作を定義できます。
-
さまざまな負荷分散方法が利用可能です。たとえば、最小接続方式はAPIゲートウェイの制限の過負荷を回避し、カスタム負荷方式は特定のAPIゲートウェイで特定の負荷を維持します。詳細については、「負荷分散アルゴリズム」(/ja-jp/citrix-adc/current-release/load-balancing/load-balancing-customizing-algorithms.html)を参照してください。
- SSLオフロードは、トラフィックを中断することなく構成されます。
- クライアントIPアドレスを保持するために、ソースIPの使用(USIP)モードが有効になっています。
- ユーザー定義のSSL設定: 独自の署名付き証明書とアルゴリズムを使用して、独自のSSL仮想サーバーを持つことができます。
- バックアップ仮想サーバー: APIゲートウェイに到達できない場合、さらなるアクションのために要求をバックアップ仮想サーバーに送信できます。
- その他にも多くの負荷分散機能が利用可能です。詳細については、「NetScalerアプライアンスでのトラフィックの負荷分散」(/ja-jp/citrix-adc/current-release/getting-started-with-citrix-adc/load-balancing.html)を参照してください。
-
-
認証、承認、監査: LDAP、SAML、RADIUSなどの独自の認証方法を定義し、APIリクエストを承認および監査できます。
-
レスポンダー: シャットダウン中にAPIリクエストを他のAPIゲートウェイにリダイレクトできます。
-
レート制限: APIゲートウェイの過負荷を回避するために、レート制限機能を構成できます。
-
可用性の向上: AWS APIトラフィックの可用性を向上させるために、NetScalerアプライアンスを高可用性セットアップまたはクラスターセットアップで構成できます。
-
REST API: クラウド本番環境での作業を自動化するために使用できるREST APIをサポートします。
-
データの監視: データを監視し、参照用にログに記録します。
NetScalerアプライアンスは、AWS API Gatewayと統合できるさらに多くの機能を提供します。詳細については、NetScaler documentationを参照してください。