NetScaler Console

API プロキシサーバーとしての NetScaler コンソール

NetScaler Application Delivery Management (NetScaler Console) は、自身の管理および分析機能のために NITRO REST API リクエストを受信できることに加えて、管理対象インスタンスの REST API プロキシサーバーとして機能できます。API リクエストを管理対象インスタンスに直接送信する代わりに、REST API クライアントは NetScaler Console に API リクエストを送信できます。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 プロキシサーバーとして機能する方法

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

Header values Description
MPS-API-PROXY-MANAGED-INSTANCE-NAME Name of the managed instance.
MPS-API-PROXY-MANAGED-INSTANCE-IP IP address of the managed instance.
MPS-API-PROXY-MANAGED-INSTANCE-ID ID of the managed instance.
MPS-API-PROXY-TIMEOUT Timeout value for a NITRO API request. Set the timeout value in seconds. When you set a proxy timeout, NetScaler Console waits for the specified duration before it times out the request.
MPS-API-PROXY-MANAGED-INSTANCE-USERNAME User name to access the managed NetScaler instance.
MPS-API-PROXY-MANAGED-INSTANCE-PASSWORD Password to access the managed NetScaler instance.
MPS-API-PROXY-MANAGED-INSTANCE-SESSID Session ID to access the managed instance.

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

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

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

デバイス API

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

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

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

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

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

インスタンスログインの資格情報を要求オプションが無効になっていることを確認してください。これを行うには:

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

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

次の例は、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クライアントは次のことを行う必要があります。

  • ネットスケーラー コンソールにログインする
  • セッション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 コンソール