Citrix Application Delivery Management

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

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

APIプロキシサーバーとして、Citrix ADM には次の利点があります。

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

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

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

Citrix ADM がAPIプロキシサーバーとして機能する方法

Citrix 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ヘッダーが存在すると、Citrix ADM はAPIリクエストを管理対象インスタンスに転送する必要があるAPIリクエストとして識別するのに役立ちます。ヘッダーの値は、Citrix ADM がリクエストの転送先となる管理対象インスタンスを識別するのに役立ちます。

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

デバイス API

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

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

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

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

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

注:

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

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

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

次の例は、APIクライアントがIPアドレスを192.0.2.5のCitrix ADM サーバーに送信するREST APIリクエストを示しています。IP アドレス 192.0.2.10 のマネージインスタンスにリクエストを変更せずに転送するには、Citrix ADM が必要です。すべての例で_MPS_API_PROXY_MANAGED_INSTANCE_IPヘッダーを使用します。

APIクライアントでは、Citrix ADM にAPIリクエストを送信する前に、次のことが必要です。

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

ログオンAPI要求の形式は次のとおりです。

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

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

Citrix 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: 負荷分散仮想サーバーの統計情報の取得

クライアントは、Citrix 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: 負荷分散仮想サーバーの作成

クライアントは、Citrix 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: 負荷分散仮想サーバーの変更

クライアントは、Citrix 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: 負荷分散仮想サーバーの削除

クライアントは、Citrix 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 のダウンロード

クライアントは、Citrix 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プロキシサーバーとしてのCitrix ADM