ADC

使用事例:アクセス制御と認証

セキュリティの高いゾーンでは、クライアントがリソースにアクセスする前に、ユーザーを外部から認証することが必須です。NetScalerアプライアンスでは、HTTPコールアウトを使用して、提供された資格情報を評価することでユーザーを外部認証できます。この例では、クライアントがリクエスト内の HTTP ヘッダーを介してユーザー名とパスワードを送信していることを前提としています。ただし、URL または HTTP 本文から同じ情報を取得することはできます。

この設定を実装するには、次のタスクを実行する必要があります。

  1. NetScalerアプライアンスのレスポンダー機能を有効にします。
  2. アプライアンスで HTTP コールアウトを作成し、外部サーバの詳細およびその他の必須パラメータを使用して設定します。
  3. レスポンダーポリシーを設定して応答を分析し、ポリシーをグローバルにバインドします。
  4. リモートサーバにコールアウトエージェントを作成します。

レスポンダーの有効化

レスポンダー機能は、NetScalerアプライアンスで使用する前に有効にする必要があります。

構成ユーティリティを使用してレスポンダーを有効にするには

  1. レスポンダーライセンスがインストールされていることを確認してください。
  2. 構成ユーティリティで、「AppExpert」を展開し、「レスポンダー」を右クリックして、「 レスポンダー機能を有効にする」をクリックします。

NetScalerアプライアンスでのHTTPコールアウトの作成

次の表に示すパラメータ設定を使用して、HTTP コールアウトである HTTP-Callout-3 を作成します。HTTP コールアウトの作成の詳細については、「HTTP コールアウトの設定」を参照してください。

表1. HTTP コールアウト 3 のパラメータと値

パラメーター 名前
名前 Policy-Responder-3  

パラメーター

名前

HTTP-Callout-3

コールアウトリクエストを受信するサーバー:

IPアドレス

10.103.9.95

ポート

80

サーバーに送信するリクエスト:

方法

GET

ホスト表現

10.102.3.95

URL ステムエクスプレッション

“/cgi-bin/authenticate.pl”

ヘッダー:

名前

リクエスト

価値表現

コールアウトリクエスト

パラメーター:

名前

ユーザー名

価値表現

HTTP.REQ.HEADER(“Username”).VALUE(0)

名前

パスワード

価値表現

HTTP.REQ.HEADER(“Password”).VALUE(0)

サーバーの応答:

返品タイプ

テキスト

応答からデータを抽出する式

HTTP.RES.BODY(100)

応答を分析するためのレスポンダーポリシーの作成

コールアウトサーバーからの応答を確認し、送信元 IP アドレスがブラックリストに登録されている場合は接続をリセットするレスポンダーポリシー Policy-Responder-3 を作成します。次の表に示すパラメータ設定を使用してポリシーを作成します。ポリシーサブノードでレスポンダーポリシーを作成し、 レスポンダーポリシーマネージャーを使用してグローバルに バインドすることもできますが、このデモでは レスポンダーポリシーマネージャーを使用してレスポンダーポリシーを作成し、ポリシーをグローバルにバインドします。

表2. ポリシーレスポンダー 3 のパラメータと値

パラメーター
名前 Policy-Responder-3
アクション RESET
未定義の結果アクション -グローバル未定義の結果アクション-
「HTTP.REQ.HEADER (\” リクエスト\」) .EQ (\ “コールアウトリクエスト\」) .NOT && SYS.HTTP_CALLOUT (HTTP-Callout-3) .CONTAINS (\ “認証失敗\」)」

レスポンダーポリシーを作成し、構成ユーティリティを使用してグローバルにバインドするには

  1. [ AppExpert ] > [ レスポンダー] に移動します。
  2. 詳細ペインの [ ポリシーマネージャー] で、[ レスポンダーポリシーマネージャー] をクリックします。
  3. レスポンダーポリシーマネージャーダイアログボックスで 、「 グローバルオーバーライド」をクリックします。
  4. [ ポリシーの挿入] をクリックし、[ ポリシー名 ] 列の [ 新しいポリシー] をクリックします。
  5. [ レスポンダーポリシーの作成 ] ダイアログボックスで、次の操作を行います。

    1. [名前] に「ポリシーレスポンダー-3」と入力します。
    2. [アクション] で [ リセット] を選択します。
    3. 「未定義結果アクション」で、「グローバル未定義結果アクション」を選択します。
    4. Expression テキストボックスに、次のように入力します。
    "HTTP.REQ.HEADER("Request").EQ("Callout Request").NOT && SYS.HTTP_CALLOUT(HTTP-Callout-3).CONTAINS("Authentication Failed")"
    <!--NeedCopy-->
    
    1. CreateCloseの順にクリックします。
  6. [ 変更を適用] をクリックし、[ 閉じる] をクリックします。

リモートサーバーでの HTTP コールアウトエージェントの作成

次に、リモートコールアウトサーバーに HTTP コールアウトエージェントを作成する必要があります。HTTPコールアウトエージェントは、NetScalerアプライアンスからコールアウト要求を受け取り、適切に応答します。コールアウトエージェントはデプロイメントごとに異なるスクリプトであり、データベースの種類やサポートされているスクリプト言語など、サーバーの仕様を念頭に置いて作成する必要があります。

以下は、指定されたユーザー名とパスワードが有効かどうかを検証するコールアウトエージェントの擬似コードの例です。エージェントは、任意のプログラミング言語で実装できます。疑似コードは、コールアウトエージェントを開発する際のガイドラインとしてのみ使用してください。プログラムに追加の機能を組み込むことができます。

提供されたユーザー名とパスワードを疑似コードを使用して確認するには

  1. リクエストに入力されたユーザー名とパスワードを受け入れ、適切な形式にします。
  2. すべての有効なユーザー名とパスワードを含むデータベースに接続します。
  3. 提供された認証情報をデータベースと照合してください。
  4. HTTP コールアウトの要求に応じて応答をフォーマットします。
  5. 応答をNetScalerアプライアンスに送信します。
使用事例:アクセス制御と認証