前のトピック: Web サービス アプリケーション

次のトピック: WS_API_SAMPLE - Web サービス API サンプル アプリケーション


WS_API - Web サービス API アプリケーション

最新バージョン: 1.0.19-1

Web サービス API は CA AppLogic 2.9 の限定リリースおよびそれ以降のバージョンでのみ提供されます。

このセクションには、以下のトピックが含まれています。

機能の概要

CA AppLogic Web サービス 'WS_API' アプリケーション境界プロパティ

アプリケーション リソース

操作

アプリケーション アーキテクチャ

設定

HTTP モード

HTTPS モード

VPN モード

ノート

機能の概要

WS_API アプリケーションは、REST (Representational State Transfer)ベースのサービスを通じて、Web サービス インターフェースを 1 つ以上のグリッドに提供します。 WS_API REST インターフェースでは、以下のいずれかのアクセス メソッドを使用できます。

CA AppLogic Web サービス 'WS_API' アプリケーション境界プロパティ

プロパティ名

タイプ

説明

usr_ip

IP

WS_API アプリケーションが HTTP または HTTPS ベースのリクエストを通じてユーザにサービスを提供する IP アドレスです。 このプロパティは必須です。

net_ip

IP

WS_API アプリケーションがパブリック ネットワーク アドレスにアクセスするために使用される IP アドレスです。 このプロパティは必須です。

netmask

IP

vpn_ip、usr_ip、net_ip が存在するネットワークのネットワーク マスク。 このプロパティは必須です。

gateway

IP

トラフィックのルーティングに使用される IP ゲートウェイのアドレス。 WS_API が実行されている IP ネットワークの外側にあるホストから WS_API アプリケーションにアクセスするためには、このプロパティを指定する必要があります(ほとんどの場合必須)。 無効にするには、0.0.0.0 を使用します。 このプロパティは必須です。

dns1

IP

ホスト名解決のための DNS サーバの IP アドレス。 このプロパティは必須です。

dns2

IP

ホスト名解決のためのバックアップ DNS サーバの IP アドレス。 デフォルト: 0.0.0.0

allowed_hosts

文字列

許可される IP アドレス、または IP アドレスの範囲(CIDR 形式) デフォルト: 0.0.0.0/0 (すべて許可)

http_mode

文字列

usr_ip 上で API が対応する HTTP リクエストの種類を指定します。 有効な値: https、http、両方。 http に設定された場合、シンプルな HTTP ベースのリクエストが API によって対応されます。 https に設定された場合、SSL v3.0 暗号化に基づいたセキュアな HTTP リクエストのみが REST API によって対応されます。 両方に設定された場合、HTTP および HTTPS リクエストすべてが対応されます。 デフォルト: https このプロパティは、アプライアンスを使用して対応されるリクエストにのみ効果的です(つまり VPN を使用する場合には影響がありません)。 モードが http に設定された場合、すべてのトラフィックはプレーン テキストになることに注意してください。 API リクエストを発行する IP には allowed_hosts プロパティを設定することを強くお勧めします。

opts

文字列

SSL 設定の引数は opts プロパティを使用してアプリケーションに渡すことができます。これは、カンマ区切りの「名前=値」のペアとして渡されます。 このプロパティは、シンプル HTTP モード(http_mode=http)の場合は設定する必要がありません。 デフォルト: 空(使用されません)。 引数のいずれも指定されない場合、空の値であると見なされます。
ssl_country - 生成される SSL 証明書で使用される国の名前。
ssl_state_province - 生成される SSL 証明書で使用される州の名前。
ssl_locality - 生成される SSL 証明書で使用される地域の名前。
ssl_org_name - 生成される SSL 証明書で使用される組織の名前。
ssl_org_unit - 生成される SSL 証明書で使用される組織単位の名前。
ssl_common_name - 生成される SSL 証明書の共通名フィールドに使用される URL の名前。
ssl_email_address - 生成される SSL 証明書で使用される電子メール アドレス。
ssl_export_pass - クライアント Web ブラウザにインポートされる pkcs 12 形式のクライアント証明書で使用されるパスワード

vpn_ip

IP

WS_API アプリケーションが安全な VPN トンネルを介してユーザにサービスを提供する IP アドレスです。 デフォルト: 空

vpn_ports

文字列

Web サービス API にアクセスするポートのリストです。 これらのポートは、VPN トンネルおよびファイアウォール ルールを介して許可されます。 通常必要とされるのはポート 80,443 のみです。デフォルト: 80,443

vpn_type

文字列

確立する VPN トンネルのタイプです。 有効な値は以下のとおりです。
certificate - OpenVPN との認証および暗号化に SSL クライアントおよびサーバ証明書を使用して、VPN トンネルが確立されます。 サーバ証明書は、存在しない場合は自動で生成されます。クライアント証明書は、/appliance/security.sh スクリプト(conf ボリュームの /server/ サブディレクトリ内の in_vpn アプライアンスに含まれています)を使用して手動で生成し、リモート VPN クライアント アプライアンス(データ ボリュームまたは nfs マウント ボリュームの /client/ サブディレクトリ内)にコピーする必要があります。
shared secret - OpenVPN との間に共有秘密ファイルを使用して、VPN トンネルが確立されます。 このファイルが存在しない場合は in_vpn アプライアンス上に自動で生成され、conf ボリュームの /server/ サブディレクトリに秘密鍵として格納されます。 このファイルは、リモート クライアント VPN アプライアンス上で、データ ボリュームまたは nfs マウント ボリュームの /client/ サブディレクトリにコピーされる必要があります。
ssh key - 認証に OpenSSH キー ファイルを使用して SSH トンネルが確立されます。 キー ファイルは、in_vpn アプライアンス上で、conf ボリュームの /server/ サブディレクトリ内に生成されます。 クライアント キー ファイルは、リモート VPN クライアント アプライアンスで、データ ボリュームまたは nfs マウント ストレージの /client/ サブディレクトリにコピーされる必要があります。
ipsec shared secret - in_vpn とリモート VPN クライアント アプライアンスの間で IPSec トンネルが確立されます。 vpn_authpath プロパティによって指定されるファイルの最初の行は、共有キーとして使用されます。
ipsec certificate - 証明書を使用する IPSec トンネルは、in_vpn のインスタンスとリモート VPN クライアント アプライアンスの間で確立されます。 サーバ証明書は、存在しない場合は自動で生成されます。または、/appliance/security.sh スクリプトを使用して生成することもできます。このスクリプトは、conf ボリュームの /server/ サブディレクトリ内にあります。クライアント証明書は、/appliance/security.sh スクリプト(in_vpn アプライアンス内)を使用して手動で生成し、リモート VPN クライアント アプライアンスのデータ ボリュームまたは nfs マウント ボリュームの /client/ サブディレクトリにコピーする必要があります。
デフォルト: certificate

vpn_authpath

文字列

トンネルの認証情報。 共有秘密モードの操作では、これはデータ ボリューム上の共有秘密ファイルへの相対パスになります(例: 「client/secret.key」ファイルの場合は 「secret.key」)。 トンネルが SSH キーである場合、このプロパティは、SSH 公開キー ファイル(VPN サーバの場合)、または秘密キー ファイル(VPN クライアントの場合)へのパスになります。パスにはファイル名も含まれます(例: /client/1/ssh.key 公開キー ファイルの場合は "/1/ssh.key")。 デフォルト: empty

vpn_standby

整数

アプリケーションの開始で VPN アクセスが有効かどうかを指定します。 ゼロ以外の場合、VPN アクセスは無効です。ゼロの場合は有効です。 VPN アクセスは、ランタイムに VPN アプライアンスを開始/停止することによって、手動で有効/無効にできます。 デフォルト: 1 (VPN アクセスは無効)。

in_standby

整数

REST API へのアクセスが標準の HTTP または HTTPS ベースの接続を介して許可されるかどうかを指定します。 このプロパティが 1 に設定され、vpn_standby が 0 に設定された場合、VPN トンネル ベースのアクセスのみが許可されます。 このアクセスは、ランタイムに in アプライアンスを開始/停止することによって、手動で有効/無効にできます。 デフォルト 0 (標準の HTTP と HTTPS アクセスが有効)。

mon_standby

整数

アプリケーションの開始時に、アプリケーション モニタリングがそのアプリケーションに無効になるかどうかを決定します。 ゼロ以外の場合、モニタリングは有効です。そうでない場合、モニタリングは無効になります。 モニタリングは、mon アプライアンスを開始することによって、ランタイムに手動で有効にできます。 デフォルト: 1 (モニタリングは無効になります)。

重要: vpn_ip、usr_ip、net_ip のプロパティに設定される IP アドレスは、使用する CA AppLogic グリッドで利用可能な IP アドレスである必要があります。 グリッドのダッシュボード上で、ネットマスク、ゲートウェイおよび DNS サーバと一緒に、それらを検索することができます。 将来は、CA AppLogic でこれらのアドレスが自動的に提供されるようにする予定です。

アプリケーション リソース

"WS_API" アプリケーション

リソース

最小

最大

デフォルト

CPU

0.55

76

1.1

メモリ

992 MB

134 GB

1.656 GB

帯域幅

7 Mbps

12.5 Gbps

730 Mbps

アプリケーション ボリューム

アプリケーション自身でいくつかのボリュームを使用します。 それらはアプリケーションの一部で、アプライアンス インスタンス内にすでに設定されています。 アプリケーション境界上で設定する必要のあるボリュームはありません。

ボリューム

サイズ

説明

code

50M

このボリュームは API アプリケーションのコードとスクリプトを格納するために使用されます。 このボリュームは WEB5 アプライアンスに割り当てられます。 デフォルトでは、code という名前の事前入力されたボリュームが、このアプリケーションで使用するために提供されます。

conf

50M

このボリュームは Web サービス API アプリケーションのすべての設定データを格納するために使用されます。 これには、リモート グリッドに関する情報を格納するためにユーザが事前入力した「vdcs.conf」、リモート グリッドにアクセスするためにユーザが作成した ssh キー、HTTPS インターフェースを介して API にアクセスするために API アプリケーションによって生成された SSL 証明書、および VPN インターフェースを介して API にアクセスするためにユーザが作成した VPN サーバ側証明書が含まれます。 このボリュームは NAS アプライアンスに割り当てられます。 デフォルトでは、conf という名前の事前入力されたボリュームが、このアプリケーションで使用するために提供されます。

log_data

50M

このボリュームは API サーバのログ記録データを格納するために使用されます。 また、API アプリケーションに必要な一時ファイルを格納するためにも使用されます。 このボリュームは NAS アプライアンスに割り当てられます。 デフォルトでは、log_data という名前の事前入力されたボリュームが、このアプリケーションで使用するために提供されます。

mon

50M

このボリュームは、アプリケーションのモニタリング データを格納するために使用されます。 ユーザがこのボリュームにアクセスしたり変更したりする理由はありません。このボリュームは、MON アプライアンスによって内部的に使用されます。 デフォルトでは、mon という名前のボリュームが、アプリケーション モニタリング データを格納するために提供されます。

操作

WS_API アプリケーションを開始するには、Web サービス インターフェースを介して管理されるグリッドにアクセスするように設定されている必要があります。 そのためには、conf ボリューム上で data サブディレクトリ内に vdcs.conf ファイルを作成することも必要です。 秘密/公開キーのペアを生成し、生成された公開キーでターゲットのグリッド コントローラ上にユーザを設定する必要があります。 vdcs.conf に入力する方法、Web サービス API 用の ssh キーの設定方法とグリッド ユーザの作成方法については、「設定」セクションを参照してください。

WS_API は、以下のモードのいずれかまたはその組み合わせで動作するように設定できます。

HTTP の使用

このモードでは、REST API に標準の HTTP ベースのインターフェースを介してアクセスできます。
例: curl "http://usr_ip/api/v1/app/list?vdc=controller_name"
アプリケーションをこのモードで開始するには、必須プロパティを適切な値に設定し、http_mode プロパティを http に設定する必要があります。 アプリケーションをこのモードで動作するよう設定する方法については、「設定」セクションを参照してください。

HTTPS の使用

このモードでは、REST API に安全な HTTP ベースのインターフェースを介してアクセスできます。
例: curl -k -E /path/to/client_key.pem "https://usr_ip/api/v1/app/list?vdc=controller_name"
アプリケーションをこのモードで開始するには、必須プロパティを適切な値に設定し、http_mode プロパティを https に設定する必要があります。 また、opts プロパティを、前述のプロパティ表の該当する証明書用オプションで設定し、適宜署名されるようにすることもできます。 アプリケーションが正常に開始されたら、クライアント証明書を、conf ボリューム内の ssl-keys サブディレクトリからクライアント アプリケーションまたはブラウザにコピーし、WS_API へのアクセスに必要できるようにする必要があります。 アプリケーションをこのモードで動作するよう設定する方法については、「設定」セクションを参照してください。

vpn トンネルの使用

このモードでは、安全な VPN トンネルが、アプリケーション内の in_vpn VPN サーバとクライアント側の VPN クライアントの間で作成されます。 使用可能なタイプ VPN トンネル タイプのいずれか 1 つを使用してトンネルが正常に作成されたら、REST API には標準の HTTP ベースのインターフェースを介してアクセスできます。
例: curl "http://usr_ip/api/v1/app/list?vdc=controller_name"
アプリケーションをこのモードで開始するには、必須プロパティを適切な値に設定し、vpn_ip プロパティを設定して vpn_standby を 0 に設定する必要があります。 デフォルトでは、vpn_ports は 80,443 に設定されてポート 80 および 443 (それぞれ http および https)への接続が許可されます。vpn_type は certificate に設定され、VPN クライアントが SSL 証明書ベースのトンネルを使用してアプリケーション内の VPN サーバに接続することを許可します。 in_standby プロパティを 1 に設定し、VPN トンネルを介したリクエストのみが許可されるようにすることもできます。 VPN トンネルの外側からの API リクエストはすべてドロップされます。 アプリケーションをこのモードで動作するよう設定する方法については、「設定」セクションを参照してください。

アプリケーション アーキテクチャ

CA AppLogic Web サービス 'WS_API' アプリケーションのインフラストラクチャを以下に示します。

次のコンポーネントがあります。

Web サービス API

設定

このセクションでは、WS_API アプリケーションを 3 種類のモードのそれぞれで開始するための設定方法について説明します。

WS_API アプリケーションを設定する方法

  1. WS_API をプロビジョニングします。CA AppLogic GUI でアプリケーション プロビジョニング ウィザードを使用するか、シェルで app provision コマンドを使用します。プロパティはまだ設定しません。 プロビジョニングの後にアプリケーションを開始しないようにウィザードが設定されていること、またはコマンド ラインの場合は --skipstart オプションが使用されていることを確認します。
    app provision WS_API ws_api_instance --skipstart 
    
  2. アプリケーションのデータ ボリュームを管理します。
    vol manage ws_api_instance:conf 
    
  3. data サブディレクトリで、vdcs.conf という名前のファイルが存在することを確認します。
    cd /mnt/vol/data
    ls vdcs.conf 
    

    このファイルには、REST API を通じて管理されるグリッドにアクセスするのに必要な情報が含まれています。

  4. vi テキスト エディタでファイルを開きます。
    vi vdcs.conf 
    
  5. テンプレートを参考にファイルを編集します。
    vdcs
       { 
       vdc controller_name : host = controller_ip or FQDN
          { 
          location  = "city, state, country" 
          latitude  = latitude 
          longitude = longitude 
          } 
    
    #  vdc controller_name : host = controller_ip or FQDN 
    #     { 
    #     location  = "city, state, country"
    #     latitude  = latitude
    #     longitude = longitude
    #     }
       } 
    
  6. API でアクセスされるグリッドの関連情報を入力します。 追加のグリッドの情報を追加するには、行のコメントを外し(# を削除)、2 つ目のグリッドの情報を追加します。 vdcs {...} セクション内で vdc ブロックを繰り返すことによって、さらにグリッドを追加することができます。 latitude と longitude の値の設定は任意です。
  7. 保存してテキスト エディタを終了します。
  8. vdcs.conf に設定されたグリッドへの ssh アクセス用に公開/秘密キーのペアを生成します。

    キーのペアを生成する方法

    ssh-keygen -t dsa -f /mnt/vol/data/gridkey
    パスワードを入力するプロンプトが表示されたら Enter キーを押します。 パスワードは入力しないでください。
    chmod 600 /mnt/vol/data/gridkey*
    chown 99:99 /mnt/vol/data/gridkey*
    
  9. 公開キーをコピーします。
    cat /mnt/vol/data/gridkey.pub 
    
  10. グリッド コントローラの各グリッド上でこのキーを sshkey として API ユーザを作成します。
    user create api@domain.com pwd=- sshkey="ssh-dsa AAA.................xyz" 
    

    ユーザが作成されます。

  11. ボリューム マネージャを終了します。

    アプリケーション境界が 3 つのオペレーティング モードのいずれかで動作するように設定できるようになりました。

HTTP モード

WS_API アプリケーションは、REST (Representational State Transfer)ベースのサービスを通じて、Web サービス インターフェースを 1 つ以上のグリッドに提供します。 HTTP アクセス メソッドは、シンプルな HTTP ベースの REST API コールを有効にします。

: このモードは非常に慎重に使用する必要があります。 このモードではセキュリティ チェックが一切ありません。誰でも認証なしで API リクエストを作成することができます。 また、クライアントと ws_api_instance アプリケーションの間のすべてのトラフィックはプレーン テキストになります。

アプリケーションを HTTP モードで設定するには、http_mode プロパティを http に設定し、必須プロパティを適切な値に設定する必要があります。 例:

app config ws_api_instance usr_ip=usr-ip net_ip=net-ip netmask=netmask gateway=gateway dns1=dns1 dns2=dns2 http_mode=http 

アプリケーションを app start コマンドを使用して、または GUI の[アプリケーションの開始]ボタンを使用して開始できるようになりました。

HTTPS モード

WS_API アプリケーションは、REST (Representational State Transfer)ベースのサービスを通じて、Web サービス インターフェースを 1 つ以上のグリッドに提供します。 HTTPS アクセス メソッドは、安全な HTTP ベースの REST API コールを有効にします。

アプリケーションを HTTPS モードで設定する方法

  1. http_mode プロパティを https に設定します(デフォルト)
  2. 必須プロパティを適切な値に設定します。
  3. opts プロパティを設定して、カスタム SSL 証明書を生成します。

    : opts が空白のままの場合は、汎用的な SSL 証明書がアプリケーションの開始時に生成されます。 http_mode および allowed_hosts プロパティ設定はデフォルト値の設定のままにできます。 例:

    app config ws_api_instance usr_ip=usr-ip net_ip=net-ip netmask=netmask gateway=gateway dns1=dns1 dns2=dns2 opts=ssl_country=Country,ssl_state=State,ssl_local=City,ssl_org_name=Organization,ssl_org_unit=Unit,ssl_common_name=Common Name,ssl_email_address=company@domain.com,ssl_export_pass=Passkey 
    
  4. app start コマンドを使用するか、GUI の[アプリケーションの開始]ボタンを使用してアプリケーションを開始します。

    アプリケーションが初めて開始された場合、PEM 形式のクライアント キー(クライアント証明書と api_client.pem という名前の秘密キーで構成)および PKCS12 形式の api_client.p14 という名前のブラウザ対応キーが、conf ボリュームの /mnt/config/ssl_keys/keys/ ディレクトリに作成されます。 api_client.p14 キー ファイルはブラウザ ベースのすべての API アクセスに使用でき、api_client.pem キーはブラウザ以外の API アクセスに使用できます。

追加のクライアント証明書を生成する方法

  1. ws_api_instance を実行する main.api_srv コンポーネントにログインします。
  2. /mnt/config/ssl_keys ディレクトリに移動します。
  3. 'api' ユーザ アカウント用の秘密キーを生成します。 openssl genrsa -out keys/api_client2_privkey.pem 2048
  4. CA が署名するための証明書署名リクエストを生成します。 openssl req -new -key keys/api_client2_privkey.pem -out keys/api_client2_request.csr
  5. CA で CSR に署名します。 openssl x509 -req -days 365 -in keys/api_client2_request.csr -CA CA/CA_cert.pem -CAkey CA/private/CA_key.pem -CAserial CA/CA_cert.srl -out keys/api_client2.cer
  6. api_client2_a.pem の cat および cert を実行し、 コマンド ラインで SSL/PEM キーとして使用できるようにします。 cat keys/api_client2_privkey.pem keys/api_client2.cer > keys/api_client2.pem
  7. 共通の Web ブラウザによって使用できる形式でキーをエクスポートします。 openssl pkcs12 -export -in keys/api_client2.cer -inkey keys/api_client_privkey2.pem -out keys/api_client2.p14
VPN モード

WS_API アプリケーションは、REST (Representational State Transfer)ベースのサービスを通じて、Web サービス インターフェースを 1 つ以上のグリッドに提供します。 VPN アクセス メソッドは、安全な VPN トンネルを介して HTTP リクエストを送信できるようにします。

アプリケーションを VPN モードで設定する方法

  1. vpn_ip を適切な IP アドレスに設定し、vpn_standby を無効(0 に設定)します。
  2. in_standby を 1 に設定して、VPN セットを介したアクセスを制限します。

    例:

    app config ws_api_instance usr_ip=usr-ip vpn_ip=vpn-ip net_ip=net-ip netmask=netmask gateway=gateway dns1=dns1 dns2=dns2 vpn_standby=0 in_standby=1 
    
  3. app start コマンドを使用するか、GUI の[アプリケーションの開始]ボタンを使用してアプリケーションを開始します。

    アプリケーションが開始した後、必要なサーバ証明書およびキー ファイルが存在しない場合は、VPN サーバ アプライアンスがこれらのファイルを生成します。

  4. アプライアンスにログインし、/appliance ディレクトリ内にある security.sh スクリプトを実行して、クライアント証明書およびキーを生成します。
    [ws_api_instance:main.in_vpn appliance]# ./security.sh generate_client
    Generated client SSL cerfiticate and key file.
    ==============================================
    これらのファイルは、CA 証明書ファイルと共に VPN サーバの
    /client/ subdirectory of data volume or fs-mounted volume.
    クライアント ファイル(client.a1c65e2bae3d0b57)へのパスは auth_path プロパティに指定される必要があります。
    Location of files:
    クライアント証明書: /mnt/data/server/client.a1c65e2bae3d0b57.crt
    クライアント キー ファイル: /mnt/data/server/client.a1c65e2bae3d0b57.key
    CA 証明書ファイルは /mnt/data/server/ca.crt にあります。
    

    クライアント証明書(client.xxxxxxxxxxxxxxxx.crt など)およびキー ファイル(client.xxxxxxxxxxxxxxxx.key など)は、client サブディレクトリ内に生成されます。CA 証明書(ca.crt)は conf ボリュームの server サブディレクトリ内に生成されます。

  5. これらの証明書を、データ ボリュームまたは nfs マウント ボリューム上の /client/ サブディレクトリ内のリモート VPN クライアント アプライアンスにコピーします。
ノート

オープン ソースおよびサードパーティ ソフトウェアの使用

以下のオープン ソース/サードパーティ ソフトウェアが code ボリュームにインストールされます。

ソフトウェア

バージョン

変更

ライセンス

ノート

JSON

2.15

いいえ

Artistic

該当なし

IPC-Run

0.82

いいえ

GPLv2

該当なし

XML-Simple

1.40

いいえ

Artistic

該当なし

Sort-Naturally

1.02

いいえ

Artistic

該当なし