Application Delivery Management

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

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

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

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

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

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

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

NetScaler Consoleにリクエストを管理対象インスタンスに転送させたい場合は、APIクライアントを設定して、APIリクエストに以下のいずれかのHTTPヘッダーを含めます。

ヘッダー値 説明
_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リクエストのタイムアウト値。タイムアウト値を秒単位で設定します。プロキシタイムアウトを設定すると、NetScaler Consoleは指定された期間待機してからリクエストをタイムアウトします
_MPS_API_PROXY_MANAGED_INSTANCE_USERNAME 管理対象NetScalerインスタンスにアクセスするためのユーザー名
_MPS_API_PROXY_MANAGED_INSTANCE_PASSWORD 管理対象NetScalerインスタンスにアクセスするためのパスワード
_MPS_API_PROXY_MANAGED_INSTANCE_SESSID 管理対象インスタンスにアクセスするためのセッションID

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

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

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

Device-API

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

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

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

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

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

インスタンスログインの資格情報のプロンプトオプションが無効になっていることを確認してください。そのためには、次の手順を実行します。

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

APIプロキシサーバーとしてのNetScaler Consoleの使用方法

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

NetScaler ConsoleにAPIリクエストを送信する前に、APIクライアントは次のことを行う必要があります。

  • NetScaler Consoleにログインする
  • セッションIDを取得する
  • 後続のAPIリクエストにセッションIDを含める

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

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

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

NetScaler Consoleは、セッション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 Consoleに次の形式の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の値はNetScalerのIPアドレスです。

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

クライアントはNetScaler Consoleに次の形式の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 Consoleに次の形式の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 Consoleに次の形式の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: NetScaler上のCLI実行構成のダウンロード

クライアントはNetScaler Consoleに次の形式の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 Console