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。

これらの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 はインスタンスセッションマネージャーによって維持されるセッションを識別し、そのリクエストを管理対象インスタンスに送信します。

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/v2/config/login HTTP/1.1
    Host: 192.0.2.5
    Content-Type: application/json
    Accept: application/json
    Cache-Control: no-cache

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

Citrix ADM は、セッションIDを含む応答でログオン要求に応答します。次のサンプル応答本文は、セッションIDを示しています。

{

  "errorcode": 0,
  "message": "Done",
  "operation": "add",
  "resourceType": "login",
  "username": "***********",
  "tenant_name": "Owner",
  "resourceName": "******",
  "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 HTTP/1.1
    Host: 192.0.2.5
    _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10
    Cookie: SESSID=##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D
    Accept: application/json
    Cache-Control: no-cache
<!--NeedCopy-->

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

クライアントは、Citrix ADM に次の形式のAPI要求を送信する必要があります。


    POST /nitro/v1/config/lbvserver/sample_lbvserver HTTP/1.1
    Host: 192.0.2.5
    _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10
    Cookie: SESSID=##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D
    Content-Type: application/json
    Accept: application/json
    Cache-Control: no-cache

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

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

クライアントは、Citrix ADM に次の形式のAPI要求を送信する必要があります。

    PUT /nitro/v1/config/lbvserver HTTP/1.1
    Host: 192.0.2.5
    SESSID: ##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D
    _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10
    Content-Type: application/json
    Accept: application/json
    Cache-Control: no-cache

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

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

クライアントは、Citrix ADM に次の形式のAPI要求を送信する必要があります。

    DELETE /nitro/v1/config/lbvserver/sample_lbvserver HTTP/1.1
    Host: 192.0.2.5
    Cookie: SESSID=##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D
    _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10
    Cache-Control: no-cache

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