Application Delivery Management

API プロキシサーバーとしてのNetScaler® ADM

NetScaler Application Delivery Management (NetScaler ADM) は、自身の管理および分析機能のためにNITRO REST APIリクエストを受信できるだけでなく、管理対象インスタンスのREST APIプロキシサーバーとしても機能します。APIリクエストを管理対象インスタンスに直接送信する代わりに、REST APIクライアントはAPIリクエストをNetScaler ADMに送信できます。NetScaler ADMは、自身が応答する必要があるAPIリクエストと、変更せずに管理対象インスタンスに転送する必要があるAPIリクエストを区別できます。

APIプロキシサーバーとして、NetScaler ADMは以下の利点を提供します。

  • APIリクエストの検証。NetScaler ADMは、構成されたセキュリティポリシーおよびロールベースのアクセス制御 (RBAC) ポリシーに対してすべてのAPIリクエストを検証します。NetScaler ADMはテナントを認識しており、APIアクティビティがテナント境界を越えないようにします。

  • 集中監査。NetScaler ADMは、管理対象インスタンスに関連するすべてのAPIアクティビティの監査ログを保持します。

  • セッション管理。NetScaler ADMは、APIクライアントが管理対象インスタンスとのセッションを維持するタスクから解放します。

NetScaler ADM の API プロキシサーバーとしての動作

NetScaler ADMにリクエストを管理対象インスタンスに転送させたい場合、APIクライアントがAPIリクエストに以下のいずれかのHTTPヘッダーを含めるように構成します。

Header values Description
_MPS_API_PROXY_MANAGED_INSTANCE_NAME 管理対象インスタンスの名前
_MPS_API_PROXY_MANAGED_INSTANCE_IP 管理対象インスタンスのIPアドレス
_MPS_API_PROXY_MANAGED_INSTANCE_ID 管理対象インスタンスのID
_MPS_API_PROXY_TIMEOUT NITRO APIリクエストのタイムアウト値。タイムアウト値を秒単位で設定します。プロキシタイムアウトを設定すると、ADMはリクエストがタイムアウトするまで指定された期間待機します
_MPS_API_PROXY_MANAGED_INSTANCE_USERNAME 管理対象ADCインスタンスにアクセスするためのユーザー名
_MPS_API_PROXY_MANAGED_INSTANCE_PASSWORD 管理対象ADCインスタンスにアクセスするためのパスワード
_MPS_API_PROXY_MANAGED_INSTANCE_SESSID 管理対象インスタンスにアクセスするためのセッションID

Settings > Administration > System Configurations > Basic SettingsPrompt Credentials for Instance Login を選択した場合、管理対象インスタンスのユーザー名とパスワードを必ず構成してください。または、インスタンスセッションIDを指定することもできます。

これらのHTTPヘッダーのいずれかが存在することで、NetScaler ADMはAPIリクエストを管理対象インスタンスに転送する必要があるものとして識別できます。ヘッダーの値は、NetScaler ADMがリクエストを転送すべき管理対象インスタンスを特定するのに役立ちます。

このフローを次の図に示します。

デバイスAPI

上図に示すように、これらのHTTPヘッダーのいずれかがリクエストに現れると、NetScaler ADMはリクエストを次のように処理します。

  1. リクエストを変更せずに、NetScaler ADMはリクエストをインスタンスAPIプロキシエンジンに転送します。

  2. インスタンスAPIプロキシエンジンはAPIリクエストをバリデーターに転送し、APIリクエストの詳細を監査ログに記録します。

  3. バリデーターは、リクエストが構成されたセキュリティポリシー、RBACポリシー、テナンシー境界などに違反しないことを保証します。また、管理対象インスタンスが利用可能であるかどうかのチェックなど、追加のチェックを実行します。

APIリクエストが有効で、管理対象インスタンスに転送できる場合、NetScaler ADMはインスタンスセッションマネージャーによって維持されているセッションを識別し、そのリクエストを管理対象インスタンスに送信します。

Prompt Credentials for Instance Login オプションが無効になっていることを確認してください。無効にするには:

  1. Settings > Administration に移動します。
  2. System Configurations で、System, Time zone, Allowed URLs and Message of the day を選択します。

NetScaler ADM を API プロキシサーバーとして使用する方法

以下の例は、IPアドレス192.0.2.5を持つNetScaler ADMサーバーにAPIクライアントが送信するREST APIリクエストを示しています。NetScaler ADMは、リクエストをIPアドレス192.0.2.10を持つ管理対象インスタンスに、変更せずに転送する必要があります。すべての例で _MPS_API_PROXY_MANAGED_INSTANCE_IP ヘッダーを使用しています。

NetScaler ADMにAPIリクエストを送信する前に、APIクライアントは以下を行う必要があります。

  • NetScaler ADMにログインします
  • セッションIDを取得します
  • 以降のAPIリクエストにセッションIDを含めます

ログオンAPIリクエストは以下の形式です。

    POST /nitro/v1/config/login
    Content-Type: application/json

    {
        "login": {
            "username":"nsroot",
            "password":"nsroot"
         }
    }
<!--NeedCopy-->

NetScaler ADMは、セッションIDを含む応答でログオンリクエストに応答します。以下のサンプル応答ボディはセッションIDを示しています。

{

  "errorcode": 0,

  "message": "Done",

  "operation": "add",

  "resourceType": "login",

  "username": "***********",

  "tenant_name": "Owner",

  "resourceName": "nsroot",

  "login": [

    {

      "tenant_name": "Owner",

      "permission": "superuser",

      "session_timeout": "36000",

      "challenge_token": "",

      "username": "",

      "login_type": "",

      "challenge": "",

      "client_ip": "",

      "client_port": "-1",

      "cert_verified": "false",

      "sessionid": "##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D",

      "token": "b2f3f935e93db6a"
    }

  ]

}
<!--NeedCopy-->

例 1: 負荷分散仮想サーバーの統計情報の取得

クライアントはNetScaler ADMに以下の形式のAPIリクエストを送信する必要があります。

    GET /nitro/v1/stat/lbvserver
    Content-type: application/json
    _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10
    SESSID: ##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D
<!--NeedCopy-->

ここで、Cookieヘッダーの値はログインAPI呼び出しから返されたセッションIDです。また、_MPS_API_PROXY_MANAGED_INSTANCE_IP の値はADCのIPアドレスです。

例 2: 負荷分散仮想サーバーの作成

クライアントはNetScaler ADMに以下の形式のAPIリクエストを送信する必要があります。


    POST /nitro/v1/config/lbvserver/sample_lbvserver
    Content-type: application/json
    Accept-type: application/json
    _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10
    SESSID: ##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D

    {
         "lbvserver":{
             "name":"sample_lbvserver",
             "servicetype":"HTTP",
             "ipv46":"10.102.1.11",
             "port":"80"
         }
    }
<!--NeedCopy-->

例 3: 負荷分散仮想サーバーの変更

クライアントはNetScaler ADMに以下の形式のAPIリクエストを送信する必要があります。

    PUT /nitro/v1/config/lbvserver
    Content-type: application/json
    Accept-type: application/json
    _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10
    SESSID: ##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D

    {
       "lbvserver":{
            "name":"sample_lbvserver",
            "appflowlog":"DISABLED"
       }
    }
<!--NeedCopy-->

例 4: 負荷分散仮想サーバーの削除

クライアントはNetScaler ADMに以下の形式のAPIリクエストを送信する必要があります。

    DELETE /nitro/v1/config/lbvserver/sample_lbvserver
    Accept-type: application/json
    _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10
    SESSID: ##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D

<!--NeedCopy-->

例 5: ADC 上の CLI 実行コンフィグのダウンロード

クライアントはNetScaler ADMに以下の形式のAPIリクエストを送信する必要があります。

    GET /nitro/v1/config/nsrunningconfig
    Accept-type: application/json
    _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10
    SESSID: ##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D

<!--NeedCopy-->
API プロキシサーバーとしてのNetScaler® ADM