C.9. リフレクションサービス

リフレクションサービスとは、SGD Gateway のルーティングプロキシコンポーネントで使用される RESTful Web サービスの集まりです。SGD Gateway 管理者はリフレクションサービスを使用すると、ルーティングプロキシの経路、サービス、ロギングレベル、および接続を構成したり、ステータス情報を表示したりできます。

このセクションでは、次に示すリフレクションサービス関連のトピックについて説明します。

C.9.1. リフレクションサービスの有効化

デフォルトでは、SGD Gateway のリフレクションサービスは無効になっています。

次のアクセス方法の 1 つ以上に対してリフレクションサービスを有効にします。

C.9.1.1. リフレクションサービスに対する無認証アクセスを有効にする方法

  1. SGD Gateway ホストにスーパーユーザー (root) としてログインします。

  2. リフレクションサービスに対する無認証アクセスを有効にします。

    # /opt/SUNWsgdg/bin/gateway config enable --services-reflection
  3. (オプション) リフレクションサービスで使用するインタフェースを変更します。

    注意

    デフォルトでは、リフレクションサービスに対する無認証アクセスを使用できるのは SGD Gateway ホストからだけです。ほかのインタフェースで無認証アクセスを有効にすると、セキュリティーリスクが発生する可能性があります。

    リフレクションサービスに対する無認証アクセスに使用されるデフォルトのインタフェースは、localhost ループバックインタフェースです。次の例は、すべてのインタフェースで無認証アクセスを有効にする方法を示しています。

    # /opt/SUNWsgdg/bin/gateway config edit \
    --services-reflection-binding *:81
  4. (オプション) リフレクションサービスで使用するポートを変更します。

    リフレクションサービスに対する無認証アクセスに使用されるデフォルトのポートは、TCP ポート 81 です。これを別の未使用のポートに次の手順で変更できます。

    # /opt/SUNWsgdg/bin/gateway config edit \
    --services-reflection-binding localhost:portnum
    

    ここで、portnum はリフレクションサービスで使用するポート番号です。

  5. SGD Gateway を再起動します。

    # /opt/SUNWsgdg/bin/gateway restart
  6. リフレクションサービスにアクセスします。

    SGD Gateway ホストで、ブラウザを起動して http://localhost:81 にアクセスします。

    リフレクションサービスのホームページが表示されます。

C.9.1.2. リフレクションサービスに対する認証アクセスを有効にする方法

  1. SGD Gateway ホストにスーパーユーザー (root) としてログインします。

  2. リフレクションサービスの証明書と非公開鍵をエクスポートします。

    リフレクションサービスの証明書と非公開鍵は、リフレクションサービスキーストア /opt/SUNWsgdg/proxy/etc/keystore.reflection に保存されています。このキーストアは、SGD Gateway のインストール時に自動的に作成されます。

    デフォルトでは、リフレクションサービスキーストアには自己署名付き証明書と鍵のペアが 1 つ入っています。

    1. リフレクションサービスの証明書をエクスポートします。

      # /opt/SUNWsgdg/java/default/bin/keytool -exportcert \
      -alias server-name -rfc \
      -keystore /opt/SUNWsgdg/proxy/etc/keystore.reflection \
      -storepass "$(cat /opt/SUNWsgdg/etc/password)" \
      -file client.pem
      

      ここで、server-name はリフレクションキーストアでリフレクションサービスの証明書に使用されている別名、client.pem はエクスポートした証明書のファイル名です。

      keytool アプリケーションを使用する方法の詳細については、JDK Tools and Utilities のドキュメントを参照してください。

    2. リフレクションサービスの非公開鍵をエクスポートします。

      SGD Gateway に組み込まれている KeyManager アプリケーションを使用します。

      # /opt/SUNWsgdg/java/default/bin/java \
      -jar /opt/SUNWsgdg/proxy/KeyManager.jar export \
      --keyfile client.key \
      --keystore /opt/SUNWsgdg/proxy/etc/keystore.reflection \
      --keyalias alias-name \
      --keypass "$(cat /opt/SUNWsgdg/etc/password)" \
      --storepass "$(cat /opt/SUNWsgdg/etc/password)"
      

      ここで、alias-name はリフレクションキーストアでリフレクションサービスの鍵に使用されている別名、client.key はエクスポートした鍵のファイル名です。

  3. 証明書と非公開鍵をクライアントデバイスにインストールします。

    証明書と非公開鍵は、リフレクションサービスに対する承認を得るためにクライアントデバイスで使用されます。

    証明書と鍵をブラウザの証明書ストアにインポートするには、最初に証明書と鍵を PKCS12 形式のファイルに変換する必要があります。次に例を示します。

    # openssl pkcs12 -export -in mycert.crt -inkey mycert_key.pem -out mycert.p12

    このコマンドは、証明書ファイル mycert.crt および関連付けられた非公開鍵 mycert_key.pem を、PKCS12 形式の証明書ファイル mycert.p12 に変換します。

    PKCS12 形式の証明書をブラウザにインポートする方法の詳細については、ブラウザのオンラインドキュメントを参照してください。

  4. リフレクションサービスに対する認証アクセスを有効にします。

    SGD Gateway ホストで、次のコマンドを実行します。

    # /opt/SUNWsgdg/bin/gateway config enable --services-reflection-auth
  5. (オプション) リフレクションサービスで使用するインタフェースとポートを変更します。

    リフレクションサービスに対する認証アクセスに使用されるデフォルトのバインディングは、すべてのインタフェースの TCP ポート 82 です。これを別のインタフェースの未使用のポートに次の手順で変更できます。

    # /opt/SUNWsgdg/bin/gateway config edit \
    --services-reflection-binding int:portnum
    

    ここで、int はインタフェース、portnum はリフレクションサービスで使用するポート番号です。

  6. SGD Gateway を再起動します。

    # /opt/SUNWsgdg/bin/gateway restart
  7. 証明書と非公開鍵を使用して、クライアントデバイスからリフレクションサービスに接続します。

    • curl コマンドを使用する場合:

      $ curl --cert client.pem --key client.key -k -X GET https://gateway.example.com:82
      

      この例では、curl コマンドを使用してリフレクションサービスのホームページ https://gateway.example.com:82 にアクセスします。ここで、gateway.example.com は SGD Gateway の名前です。リフレクションサービスの証明書と非公開鍵は、client.pemclient.key です。

    • ブラウザを使用する場合:

      https://gateway.example.com:82 に移動します。ここで、gateway.example.com は SGD Gateway の名前です。

      リフレクションサービスのホームページが表示されます。

C.9.2. リフレクションサービスの使用

リフレクションサービスによって提供されている RESTful Web サービスにアクセスするには、クライアントアプリケーションを使用します。適切なクライアントアプリケーションには次のようなものがあります。

  • ブラウザ。リフレクションサービスにアクセスするもっとも簡単な方法は、ブラウザを使用することです。ただし、ブラウザでサポートされるのは HTTP GET リクエストだけなので、情報を取り出す RESTful Web サービスにしかアクセスできません。実際、ブラウザを使用すると、ルーティングプロキシのステータス情報を表示したり、経路とサービスを一覧表示したりするタスクに役立ちます。

  • curl。これは UNIX および Linux プラットフォーム用のコマンド行ツールで、HTTP GETPUTPOST、および DELETE リクエストをサポートしています。したがって、リフレクションサービスの全種類の RESTful Web サービスを使用できます。このツールの出力をファイルや別のプログラムにリダイレクトして、さらに処理することもできます。

または、RESTful Web サービスをサポートするユーザー独自のクライアントアプリケーションを持っている場合は、それを使用してリフレクションサービスにアクセスできます。

注記

リフレクションサービスを使用してルーティングプロキシの構成を変更する場合、SGD Gateway を再起動する必要はありません。

リフレクションサービスからは次の出力形式でデータが返されることがあります。

  • ASCII。これはデフォルトの出力形式です。データはタブで区切られた ASCII 形式で返されます。この出力形式は、あとでデータに構文解析などの処理を行う場合に役立ちます。

  • HTML。データは、ブラウザでの表示に適した HTML 形式で返されます。HTML 出力で返すには、Web サービスの URI (Uniform Resource Identifier) の末尾に /html を付加します。

C.9.2.1. RESTful Web サービスについて

表C.1「SGD Gateway リフレクションサービスの RESTful Web サービス」 に、SGD Gateway リフレクションサービスの RESTful Web サービスの一覧を示します。

表C.1 SGD Gateway リフレクションサービスの RESTful Web サービス

相対 URI

HTTP リクエストメソッド

説明

/

GET

ルーティングプロキシに関する稼働時間などの概要情報を表示します。

/service

GET

使用可能なサービスを一覧表示します。

サービスは、ルーティングプロキシが着信接続を行うエントリポイントです。

/service/Service-Id

GET

Service-Id で指定されたサービスの情報を一覧表示します。

/service/Service-Id

PUT

Service-Id で指定されたサービスを起動します。

/service/Service-Id

DELETE

Service-Id で指定されたサービスを停止します。

/client

GET

使用可能なクライアントを一覧表示します。

クライアントは、ルーティングプロキシが発信接続を行う出口ポイントです。

/client/Client-Id

GET

Client-Id で指定されたクライアントの情報を一覧表示します。

/route

GET

使用可能な経路を一覧表示します。

経路は、サービス経由の着信接続から、クライアント経由の発信接続までの、ルーティングプロキシを通る経路です。

/route/Route-Id

GET

Route-Id で指定された経路の情報を一覧表示します。

/route/Route-Id

PUT

Route-Id で指定された経路を起動します。

/route/Route-Id

DELETE

Route-Id で指定された経路を停止します。

/route/Route-Id/connection

GET

Route-Id で指定された特定の経路の接続を一覧表示します。

/route/Route-Id/connection/Connection-Id

DELETE

Connection-Id で指定された接続を終了します。

/connection

GET

すべての経路について、現在実行中の接続を一覧表示します。

/logging/level

GET

グローバルなロギングレベルを表示します。

/logging/level/Log-Level

PUT

ルーティングプロキシのグローバルなロギングレベルを設定します。

/logging/Package/level

GET

ルーティングプロキシの特定のコンポーネントのロギングレベルを表示します。

/logging/Package/level/Log-Level

PUT

ルーティングプロキシの特定のコンポーネントのロギングレベルを設定します。


RESTful Web サービスにアクセスするには、リフレクションサービスの URL に Web サービスの相対 URI を付加します。

たとえば、SGD Gateway gateway.example.com の使用可能な経路を一覧表示するには、次のようにリフレクションサービスの URL に /route を付加します。

$ curl --cert client.pem --key client.key -k -X GET https://gateway.example.com:82/route

ここで、client.pemclient.key は、リフレクションサービスの証明書と非公開鍵です。この例では、クライアントはリフレクションサービスにアクセスする前に認証を受けます。

C.9.2.2. リフレクションサービスの使用例

次の例ではいずれも、リフレクションサービスにアクセスするためのクライアントアプリケーションとして curl コマンドを使用します。

これらの例では、gateway.example.com という SGD Gateway のリフレクションサービスに対して認証アクセスを使用します。クライアントは、証明書 client.pem および非公開鍵 client.key を使用して認証されます。

SGD Gateway の使用可能なサービスを一覧表示するには:

$ curl --cert client.pem --key client.key -k \
-X GET https://gateway.example.com:82/service

経路を停止するには、リフレクションサービスでその経路に使用されている Route Id を指定します:

$ curl --cert client.pem --key client.key -k \
-X GET https://gateway.example.com:82/route
Route Id  Route Uptime   Service Id  ...
0         21h18m20s743m  ssgd-route-service  ...
1         21h18m20s736m  shttp-ssl-service   ...
$ curl --cert client.pem --key client.key -k \
-X DELETE https://gateway.example.com:82/route/1

グローバルなロギングレベルを FINER に設定するには:

$ curl --cert client.pem --key client.key -k \
-X PUT https://gateway.example.com:82/logging/level/FINER