Application Delivery Management

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

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

NetScaler ADMはAPIプロキシサーバーとして次のようなメリットがあります。

  • API要求の検証:NetScaler ADMは、すべてのAPIリクエストを、構成済みのセキュリティおよびロールベースのアクセス制御(RBAC)ポリシーに照らして検証します。NetScaler ADMはテナント認識機能も備えているため、APIアクティビティがテナントの境界を越えないようにします。

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

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

NetScaler ADMがAPIプロキシサーバーとして機能する仕組み

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

ヘッダー値 説明
_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。

注:

[設定] > [管理] > [ システム構成 ] > [基本設定] で、[ インスタンスログインの認証情報を確認する] を選択した場合は、マネージドインスタンスのユーザー名とパスワードを設定してください。または、インスタンスセッション ID を指定することもできます。

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

次の図はこのフローを示しています。

Device-API

上記の図に示すように、これらのHTTPヘッダーの1つが要求に表示されると、NetScaler ADM は要求を次のように処理します。

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

  2. インスタンスAPIプロキシエンジンはAPI要求を検証ツールに転送し、API要求の詳細を監査ログに記録します。

  3. 検証ツールは、要求が構成されているセキュリティポリシー、RBACポリシー、テナント境界などに違反がないことを確認します。管理対象インスタンスが利用可能かどうかを判断するチェックなど、追加のチェックを実行します。

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

注:

[ インスタンスログインの認証情報をプロンプト ] オプションが無効になっていることを確認します。必要な操作:

  1. [ 設定] > [管理]に移動します。
  2. [ システム構成] で、[ システム]、[タイムゾーン]、[許可されたURL]、[今日のメッセージ]の順に選択します。

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

次の例は、APIクライアントがIPアドレス192.0.2.5のNetScaler ADMサーバーに送信する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-->

クッキーヘッダーの値は、ログイン 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