ADC

コンテンツ検査コールアウト

Citrix ADCアプライアンスがICAP要求を送信すると、ICAPサーバーはステータスコードを使用して応答ステータスを指定します。ステータスコードは、アプライアンスが実行するアクションも指定します。たとえば、REQMOD ICAP 要求の ICAP 応答のステータスコードが 200 OK で、 res-hdr が設定されている場合、ICAP クライアントは ICAP サーバーから受信した応答をユーザーに送信できます。ただし、 res-hdr が設定されていない場合、ICAPクライアント(Citrix ADCアプライアンス)は、元の要求または適合した要求を元のバックエンドサーバーに転送できます。

ただし、特定のシナリオでは、ICAP サーバーが最終決定を下すことができません。代わりに、要求された情報のみをアプライアンスに提供し、アプライアンスはポリシー評価に基づいて決定できます。この場合、ICAP クライアントは、ICAP 応答ステータスコードのみに依存することはできません。代わりに、受信した ICAP ヘッダーを確認し、ヘッダーのポリシー式を評価し、関連付けられたアクションを適用します。

次に、ICAP コンテンツ検査コールアウトが必要なユースケースをいくつか挙げます。

  • SSHハンドシェイク要求を受信すると、ICAPクライアント(Citrix ADCアプライアンス)はアクセスされたドメインを分類し、ハンドシェイクを続行するかドロップするかを決定する場合があります。
  • サービスの HTTP 要求を受信すると、アプライアンスはユーザーのテナント ID に基づいて外部サーバーのアクセス許可をチェックすることがあります。適切な処置をとることができます。

どちらのシナリオでも、ICAP サーバーは設定されたポリシーについて何も知らず、要求された情報をアプライアンスに送り返すだけです。次に、アプライアンスは受信した応答情報にポリシーを適用し、関連付けられたアクションを適用します。 ICAP コンテンツ検査コールアウトが ICAP フレームワークに追加され、外部 ICAP サーバーから要求情報を返します。このコールアウトの機能は、HTTP コールアウトの動作と非常によく似ています。Responder や AppFirewall などの任意のポリシー式は、構成された ICAP サーバーへの ICAP 要求をトリガーできます。returnExpr で設定された要求された情報は、ICAP 応答から抽出され、要求されたモジュールに渡されます。

ICAP コンテンツ検査コールアウトが ICAP フレームワークに追加され、外部 ICAP サーバーから要求情報を返します。このコールアウトの機能は、HTTP コールアウトの動作と非常によく似ています。ICAP モジュールは、既存の高度なポリシー式を使用して、構成された ICAP サーバーへの ICAP コールアウトをトリガーできます。

コンテンツ検査コールアウトポリシー式

次のコンテンツ検査ポリシー式は、ICAP コールアウトの戻り式として使用されます。このコンテンツインスペクションコールアウト式の構文は、HTTP コールアウト式に似ています。

SYS.CI_CALLOUT(<ContentInspection callout name>).Operator

ここで、 <ContentInspection callout name>は ICAP サーバーのプロパティを定義する ICAP タイプの ContentInspection コールアウトです。また、ICAP サーバーとの間で要求を送受信するために使用される ICAP プロファイル。 ICAP コールアウトエージェントからの応答の戻り値の型によって、応答に使用できる演算子のセットが決まります。分析する応答の一部がテキストの場合、テキスト演算子を使用して応答を分析できます。たとえば、 CONTAINS(<string>) 演算子を使用して、レスポンスの指定された部分に特定の文字列が含まれているかどうかをチェックできます。

例:

SYS.CI_CALLOUT (CI-CALLOUT)。Contains(“value to be checked”)

ICAP コンテンツ検査コールアウトの設定

アプライアンスで ICAP コンテンツ検査コールアウトを設定するには、次の手順を実行します。

  1. ICAP プロファイルを追加
  2. コンテンツ検査コールアウトの追加
  3. コンテンツ検査コールアウト式の設定
  4. コンテンツ検査コールアウトを呼び出す

ICAP プロファイルを追加

コンテンツ検査コールアウトの追加

contentInspectionCCallout コマンドは、ICAP サーバー情報と、戻り値の式とその型を指定します。

コマンドプロンプトで入力します。

add contentInspection callout <name> -type ICAP [-profileName <string>] (-serverName <string> | (-serverip <ip_addr|ipv6_addr> [-serverport <positive_integer>])) [-returnType <returnType>] [-resultExpr <string>] [-comment <string>]

各項目の意味は次のとおりです:

<profileName> -ICAP プロファイルの名前 <returnType> - ( **BOOL | NUM | TEXT**) <resultExpr> -ICAP レスポンスの受信時に評価される式。ICAP.RES で始まる必要があります。

例:

X-URLカテゴリ ICAP レスポンスヘッダーの値を抽出すると、ResultExpr は以下のように指定できます。

add contentInspection callout cic –type ICAP –profileName profile1 –resultExpr “ICAP.RES.HEADER("X-URL-Category")”

上記の式は X-url-category の値を返し、戻り値をチェックし、関連するアクションを適用します。

コンテンツ検査コールアウトと機能アクションを使用した機能ポリシー

Citrix ADC機能がICAPを使用して外部サービスと対話する必要がある場合、その機能はコンテンツ検査コールアウト CI_CALLOUT を使用できます。このモードでは、機能は機能ポリシー式で CI_CALLOUT を使用して、外部 ICAP サーバへの ICAP 要求をトリガーします。応答を受信すると、機能は contentInspection アクションで ResultExpression を指定して、ICAP 応答から必要な情報を抽出できます。結果は、ブール値、数値、またはテキストになります。フィーチャは、抽出された結果に基づいて、関連付けられたアクションを実行できます。機能が CI コールアウトを使用して機能アクションを実行する方法のユースケースを見てみましょう。

ユースケース 1:ビデオ最適化検出ポリシーを使用して SNI を抽出し、ドメインが「ソーシャルメディア」の場合にハンドシェイクをドロップするには

ユースケースを設定するには、次の手順を実行します。

  1. ICAP プロファイルを追加

    add icapProfile ICAPProfileName –mode REQMOD -insertHTTPRequest q{ "GET / HTTP/1.1\r\nHost: " + CLIENT.SSL.DETECTED_DOMAIN + "\r\n\r\n"}

  2. ICAP サーバーを表すコンテンツ検査コールアウトと結果式を追加して、ICAP 応答からカテゴリ情報を抽出します。

    add contentInspection callout cic -type ICAP -serverName icap-server-name -icapProfile ICAPProfileName -resultExpr "ICAP.res.header("X-URL-Category")" –resultType [same as callout resultType]

  3. ビデオ検出ポリシーと式を追加して、受信したドメインの URL カテゴリ情報を取得し、カテゴリが「ソーシャルメディア」の場合はリクエストをドロップします。

    add videooptimization detectionpolicy_urlcat -rule " SYS.CI_CALLOUT(cic).EQ(\"Social Media\")" -action DROP

ユースケース 2: ICAP サーバーから URL カテゴリを取得し、 パターンセットを使用してブロックするには

ユースケースを設定するには、次の手順を実行します。

  1. モードと HTTP 要求を定義する ICAP プロファイルを追加します。

    add icapProfile ICAPProfileName –mode REQMOD -insertHTTPRequest q{ "GET / HTTP/1.1\r\nHost: " + CLIENT.SSL.DETECTED_DOMAIN + "\r\n\r\n"}

  2. コンテンツ検査コールアウトを追加して、カテゴリ情報を取得します。

    add contentInspection callout cic -type ICAP -serverName icap-server-name -icapProfile ICAPProfileName -resultExpr "ICAP.res.header("X-URL-Category")"

  3. パターンセットを追加し、ブロックされたカテゴリパターンをそれにバインドします。

    add policy patset blocked-category bind policy patset blocked-category “gambling” –index 1 bind policy patset blocked-category “social media” –index 2 bind policy patset blocked-category “games” –index 3

  4. ビデオ最適化検出ポリシーを追加して、ICAP コールアウトアクションを呼び出します。

    add videooptimization detectionpolicy_urlcat –rule SYS.CI_CALLOUT(cic).CONTAINS_ANY("blocked-category")" -action DROP

コンテンツ検査コールアウト