API プロキシサーバーとしての NetScaler Console
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 ヘッダーを含めます。
| ヘッダー値 | 説明 |
|---|---|
| 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。 |
注
Settings > Administration > System Configurations > Basic Settings で、Prompt Credentials for Instance Login を選択した場合、管理対象インスタンスのユーザー名とパスワードを設定してください。または、インスタンスセッションIDを指定することもできます。
これらのHTTPヘッダーのいずれかが存在すると、NetScaler ConsoleはAPIリクエストを管理対象インスタンスに転送する必要があるものとして識別するのに役立ちます。ヘッダーの値は、NetScaler Consoleがリクエストを転送すべき管理対象インスタンスを識別するのに役立ちます。
このフローを次の図に示します。
上図に示すように、これらのHTTPヘッダーのいずれかがリクエストに現れると、NetScaler Consoleは次のようにリクエストを処理します。
-
リクエストを変更せずに、NetScaler ConsoleはリクエストをインスタンスAPIプロキシエンジンに転送します。
-
インスタンスAPIプロキシエンジンは、APIリクエストをバリデーターに転送し、APIリクエストの詳細を監査ログに記録します。
-
バリデーターは、リクエストが設定されたセキュリティポリシー、RBACポリシー、テナンシー境界などに違反していないことを確認します。また、管理対象インスタンスが利用可能であるかどうかのチェックなど、追加のチェックを実行します。
APIリクエストが有効で、管理対象インスタンスに転送できる場合、NetScaler Consoleはインスタンスセッションマネージャーによって維持されているセッションを識別し、そのリクエストを管理対象インスタンスに送信します。
注
インスタンスログインの資格情報のプロンプトオプションが無効になっていることを確認してください。これを行うには:
-
設定 > 管理に移動します。
-
システム構成で、システム、タイムゾーン、許可された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クライアントは次のことを行う必要があります。
-
NetScaler Consoleにログインする
-
セッションIDを取得する
-
後続のAPIリクエストにセッションIDを含める。
ログオンAPIリクエストは次の形式です。
POST /nitro/v1/config/login
Content-Type: application/json
{
"login": {
"username":"nsroot",
"password":"nsroot"
}
}
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"
}
]
}
例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
ここで、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"
}
}
例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"
}
}
例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
例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