Web サービスの管理

この記事には、以下のトピックが含まれています。
casm173
この記事には、以下のトピックが含まれています。
Web サービス
とは、異なる動作環境同士であっても製品間の通信を可能にする、一連のデータ交換標準のことです。 この機能はパーソナル コンピュータで Web サイトをブラウズするのと似ています。つまり、リモートの Web サイトが Solaris、AIX、Windows などいずれのホスト オペレーティング システム上にあってもアクセスできるのと同じことです。 同様に、Web サービスを利用すると、動作環境にかかわらず HTTP プロトコルを介して製品がさまざまなサービスと通信することができます。 たとえば、Microsoft Office 製品は UNIX サーバ上のプログラムと通信でき、Java Server Page は Windows サーバ上でホストされているサーバにアクセスできます。 このプラットフォームに依存しない通信によって、強力なインテグレーション システムが実現されます。
Web サービスではこのテクノロジを利用するため、ほとんどの製品で CA SDM およびナレッジ管理の機能を使用することができます。 Web サービス クライアントは、チケットの作成、アセットの更新、ナレッジ ベースの検索など、さまざまな操作を実行できます。
Web サービスの詳細については、CA SDM リファレンスを参照してください。
CA SDM コンポーネント
CA SDM では、J2EE Web サービスのこのバージョンのインストール ファイルが以下のディレクトリに置かれています。
<NX_ROOT>/sdk/websvc/R11
<NX_ROOT> は、CA SDM のルート インストール パスです。
Web サービス オプション
以下のオプションは、Web サービス セッションを制御します。
  • rest_webservice_access_duration
    REST Web サービス アクセス キーが有効期限が切れるまでアクティブ状態にある時間数を指定します。 アクセス キーのタイムアウトは、非アクティブ状態の時間ではなく、アクセス キーが作成してからの期間に基づいて決定されます。 アクセス キーが指定された期間に達すると、そのアクセス キーは使用されているかどうかに関係なく終了します。
    オプションで、REST クライアントも、アクセス キー リクエスト中に特定のアクセス キーのアクセス キー時間を指定できます。 この時間を指定するには、POST リクエスト ペイロードの一部として、rest_access リソースの expiration_date 属性に直接設定します。
    有効範囲:
    1 ~ 8760 時間
    デフォルト:
    168
  • rest_webservice_disable_basic_auth
    REST Web サービスのベーシック認証を無効にします。
    デフォルト:
    いいえ
  • rest_webservice_list_max_length
    REST Web サービスのクエリが返す行の最大数を指定します。
    デフォルト:
    500
  • rest_webservice_list_page_length
    REST Web サービスのクエリが返す行のデフォルト数を指定します。
    有効範囲:
    1 ~ 500
    デフォルト:
    25
  • rest_webservice_resources_to_expose
    CA SDM が REST Web サービスを通して公開する Majic ファクトリ(リソース)のリストを指定します。 このオプションにより、デフォルト動作がオーバーライドされます。 デフォルトでは、CA SDM は REST Web サービスを通してすべてのファクトリを公開します。
    このオプションに値を入力しない場合、デフォルトの動作により、REST_OPERATIONS プロパティが NONE に設定されていないすべての Majic ファクトリが公開されます。 デフォルトでは、このプロパティ が NONE に設定されている Majic ファクトリはありません。
    REST_OPERATIONS プロパティを使用して、特定の HTTP CRUD (CREATE、READ、UPDATE、DELETE)メソッドを設定し、CA SDM が特定の Majic ファクトリを公開するようにします。
    デフォルト:
    rest_access
    例:
    rest_access, cnt, grp, cr, crs, pri, alg, urg, imp, pcat, org
  • hmac_algorithm
    REST Web サービスでのカスタム/秘密鍵認証用のシグネチャを計算するために使用するアルゴリズムを指定します。
    デフォルト:
    HmacSHA1
  • string_to_sign_fields
    デフォルトの REQUEST_METHOD、REQUEST_URI、および QUERY_STRING フィールドに加えて、REST Web サービスでのカスタム/秘密鍵認証用のシグネチャを計算するために使用するフィールドを指定します。
    デフォルト:
    空白
  • webservice_domsrvr
    SOAP Web サービスによって使用されるオブジェクト エンジンの名前を指定します。 インストールされていない場合、SOAP Web サービスは「domsrvr」を使用します。
    オプションの値には、「domsrvr:」で始まる文字列を指定する必要があります。
  • webservice_session_timeout
    SOAP Web サービス セッションのタイムアウト値(分)を設定します。 連続する Web メソッド コールの間隔が指定した値を超えた場合、セッション ID は期限切れとして識別されます。 その結果、そのセッションは無効になります。
    アクティビティが原因でセッションが期限切れにならないようするには、このオプションに 0 を指定します。 ただし、ログオフ ルーチンなどの他の原因によって無効になる場合もあります。
これらのオプションでは CA SDM サーバを再起動する必要があります。
Webサービスのインストール
設定タイプに応じて、 CA SDM は、以下のサーバに Web サービスをインストールします。
  • 標準: プライマリ サーバとセカンダリ サーバの両方。 Web サービス クライアントがセカンダリ サーバ上で URL を使用できるようにするには、セカンダリ サーバに Web エンジンを追加します。
  • 高可用性: アプリケーション サーバ
Web サービスは、CA SDM サーバにインストールされているデフォルトのオブジェクト マネージャを使用します。 ほかのオブジェクト マネージャを使用するには、オブジェクト マネージャの
webservice_domsrvr
オプションをインストールして設定します。
オブジェクト マネージャ、WebDirector、および Web エンジンの追加と設定については、「オプション マネージャ」を参照してください。
設計時の機能をアクティブにする方法
CA SDM の Web サービスには、Java バージョンの開発者向けにメソッド スタブ設定機能が用意されています。 この機能を有効にすると、Web サービスは CA SDM サーバを無視してメソッド コールの擬似データを返します。このようにして、CA SDM サーバを動作させずに Web サービス コールを実行できます。
以下の手順に従います。
  1. deploy.wsdd を編集して、「design_mode_stubs」のセクションのコメント化を解除します。
  2. サーバの展開を解除してから再展開します。
  3. アプリケーション サーバを再起動します。
    設計時の機能がアクティブになります。
設計時の機能は CA SDM Web サービス メソッドのみに適用されます。
Web サービスのセキュリティ
Web サービスを展開する際は、セキュリティに関する重要な考慮事項を理解しておく必要があります。 HTTPを使用する場合、その初期設定にはセキュリティ上の脆弱性があります。つまり、Webサービス コール内の全情報は、HTTPプロトコルを使用してネットワーク上のクライアントとサーバ間を平文で送信されてしまいます。 この情報には、チケットに関する説明や連絡先名などのアプリケーション データだけでなく、Web サービスのセッション ID (SID)が含まれます。 さらに、Web サービス アプリケーションで使用するログイン方法によってはパスワードも含まれます。
Web サービスを展開する管理者は、この情報を熟読して十分に理解し、アプリケーションおよびネットワークの両方のレベルで追加の設定手順を実行して、Web サービス環境を確実に保護するように努めてください。
HTTP で使用するデフォルトの Web サービスにはセキュリティ上の脆弱性があるため、パスワードの漏洩、セッションの固定、データの盗み見などのセキュリティの脅威に曝されています。
Webサービスを展開するときは、以下に示す相互に関連した3つのセキュリティ事項について考慮する必要があります。
  • 展開をサポートするために必要なアプリケーション レベルのアクセス認証スキーマ
  • 展開に必要なネットワーク レベルの追加機能
  • Webサービス設定オプションを使って、これらの要件を施行する方法
以下に、各セキュリティ機能について説明します。
  • Web サービス アプリケーション レベルの認証スキーマ
    - Web サービスにアクセスするには、Web サービス クライアント アプリケーションが Web サービス アプリケーションで認証される必要があります。 Webサービスのアクセス認証用に2種類のスキーマが用意されています。 ユーザ名/パスワードによる認証と、パブリック キー インフラストラクチャ(PKI)テクノロジによる認証です。 どちらの認証もアクセス ポリシーを使用して、Web サービスのアクセス コントロール/管理コンポーネントと連動します。 アクセス認証およびアクセス管理は、Webサービスで最も重要なセキュリティ機能です。
    ユーザ名/パスワードによる認証は、以下のセキュリティ設定コマンドを使用して無効にできます。
    disable_user_logon
    管理者はこのオプションを有効にする前に、Webサービスにアクセスするために企業で使用する各Webサービス クライアントが別の認証方法(PKIベースのログイン方法)を実際にサポートできるかどうかを確認する必要があります。 PKI テクノロジの大きなメリットは、システム ユーザ アカウントの
    管理
    (つまり、システム ユーザのパスワードの管理、保存、および送信)が Web サービス クライアント アプリケーションで不要である点です。
  • ネットワーク レベルのセキュリティ設定
    - ユーザ名/パスワード認証およびパブリック キー インフラストラクチャ(PKI)認証のどちらの認証スキーマでも、HTTP を使用する場合は、特定のログイン方法(および続いて送受信されるすべての情報)から返されるセッション ID が平文で送受信されることに注意してください。 さらに、ユーザ名/パスワード認証スキーマを使用している場合、パスワードは保護されない平文の状態でWebサービス クライアント アプリケーションからWebサービスへ送信されます。 製品開発中は、W3CによるWebサービス セキュリティの勧告基準はありませんでした。 このため、これらのWebサービスの実装では、安全なコンテキストを提供するWSセキュリティが使用されません。 代わりに、ポイント ツー ポイント トランスポート レイヤ セキュリティ(SSL/TLS)や、ネットワーク レベルのその他のセキュリティ方式(IPSecなど)を使用してネットワークを保護してください。こうしないと、アプリケーション レベルの認証交換、およびそれに続いて送受信されるセッションIDとデータが、すべて平文のまま送受信されます。
    Web サービスを展開するときは、SSL (または https)を使用して、アプリケーション レベルの認証交換、および続いて送受信されるセッション ID とデータを保護することをお勧めします。
  • Web サービス設定
    - 管理者は次の 2 つのセキュリティ設定コマンドを使用して、Web サービス アプリケーション レベルで、プロトコル レベルのセキュリティを施行した通信を確立できます。
    require_secure_logon
    このセキュリティ機能では、Login()およびLoginService()メソッドのコールにSSL(https)を使用する必要があります。 この機能は、他のWebサービスにかかるSSLのオーバーヘッドを回避すると同時に、ユーザ名およびパスワードを保護することにも役立ちます。
    require_secure_logon コマンドを使用すると、Web サービス アプリケーションは、Login() および LoginService() 以外のメソッドについて、通信でプロトコル レベルのセキュリティが施行されていることを確認しません。 このため、他のセキュリティ対策が講じられていない場合、Login() および LoginService() 以外の Web サービス メソッドは保護されない状態で呼び出されるため、セキュリティが非常に脆弱になります。
    require_secure_connection
    このセキュリティ機能では、WebサービスにアクセスするためにSSLを使用する必要があります。 httpsが必要であるにも関わらず使用されない場合は、SOAP FaultがUDS_SECURE_CHANNEL_REQUIREDコードと共に返されます。
    SSL の設定方法の詳細については、J2EE サーブレット コンテナのドキュメントを参照してください。
Webサービスの利用
本セクションでは、 CA SDM Web サービスの基本的な使用法について説明します。 Web サービスを使用する場合のコード例は、以下の CA SDM インストール ディレクトリにあります。
<NX_ROOT>/samples/sdk/websvc/java
サンプル コードはSOAPメッセージング用Apache Axisを使用してJavaで記述されています。
ログイン
Web サービス メソッドを使用する前に、login()、loginService()、loginServiceManaged() のうち、いずれかのメソッドを使用して SID (セッション ID)を取得する必要があります。 最初の 2 つのメソッドには CA SDM Web インターフェースと同一のユーザ名およびパスワードが必要です。検証方法は連絡先のアクセス タイプで指定します。 3番目のメソッドにはパブリック キー/プライベート キーのペアが必要です。プライベート キーで暗号化されたログイン リクエストがパブリック キーで復号化され、その逆も同様に実行されます。
共通タスクを実行する方法
柔軟で高機能な API を持つ Web サービスによって CA SDM を活用できますが、そのためには、以下の手順に従って、本製品で使用されるオブジェクト構造について知っておく必要があります。
  1. オブジェクトと属性について詳しく理解するには、「CA Service Desk Manager 参照コマンド」を参照してください。
    本書にはシステムの各オブジェクトの属性がすべて掲載されています。ほとんどの Web サービス メソッドには属性名が必要なので、これはとても重要です。
  2. Web サービス メソッド、特に一般的なメソッドを確認します。 たとえば、アプリケーションでリクエストのアクティビティ ログすべてを表示する場合は、アクティビティ ログがリクエストに対してどのように関連付けられているかを最初に特定します。
    CA Service Desk Manager 参照コマンド
    では、リクエスト オブジェクトに、act_log (内部以外のログのみ)および act_log_all (すべてのアクティビティ ログ)という 2 種類のアクティビティ ログ リストがあることが示されています。
  3. 必要な Web サービス メソッドを特定します。 オブジェクトに添付されたリストを取得するには、getRelatedList()またはgetRelatedListValues()を使用します。
デフォルトのハンドル
本製品が提供するデフォルト データの中には、頻繁に使用するものがあります。 これらのオブジェクト ハンドルを調べる手間を省くため、通常使用されるハンドルを以下に示します。
ハンドルは普遍ですが、判読可能なシンボルは編集することができます。
連絡先タイプ(オブジェクト名: ctp)
ハンドル
説明
ctp:2307
「アナリスト」タイプ
ctp:2310
「顧客」タイプ
ctp:2305
「従業員」タイプ
ctp:2308
「グループ」タイプ
影響度(オブジェクト名: imp)
ハンドル
説明
imp:1605
影響(なし)
imp:1600
影響5(低)
imp:1601
影響4(中低)
imp:1602
影響3(中)
imp 1603
影響2(中高)
imp:1604
影響1(高)
優先度(オブジェクト名: pri)
ハンドル
説明
pri:505
未割り当ての優先度(なし)
pri:500
優先度5(低)
pri:501
優先度4(中低)
pri:502
優先度3(中)
pri:503
優先度2(中高)
pri:504
優先度1(高)
重大度(オブジェクト名: sev)
ハンドル
説明
sev:800
重大度1(低)
sev:801
重大度2(中低)
sev:802
重大度3(中)
sev:803
重大度4(中高)
sev:804
重大度5(高)
コール リクエスト タイプ(オブジェクト名: crt)
ハンドル
説明
crt:180
リクエスト
crt:181
問題
crt:182
インシデント
連絡先に割り当てられたリクエスト、案件、または変更要求のクエリ
通常行われる最も一般的な操作は、アナリスト(担当者)に割り当てられたアクティブなリクエストの取得です。 doQuery()(リスト参照の取得)、doSelect()(値を直接取得)などのメソッドを使用できます。 担当者のハンドルがすでにわかっている場合、以下のWhere節を使用します。
assignee.id = U'<assigneeID>' AND active = 1
この Where 節では、<assigneeID> は連絡先ハンドルの ID 部分です。値は「555A043EDDB36D4F97524F2496B35E75」などのようになります。
リクエスト、変更要求、案件には「assignee」属性および「active」属性があり、その意味はこれら3つのオブジェクトで共通なので、このWhere節を使用できます。 Where節の「active = 1」部分は、アクティブなリクエストのみを検索することを示します。
アクティブ フラグ
ほとんどの CA SDM オブジェクトには[active]または[delete_flag]というフィールドがあります。 これはActive_Boolean_TableオブジェクトまたはBoolean_Tableオブジェクトを指すSRELポインタのことです。 クエリにこれらのフィールドを追加して、システム管理者が「非アクティブ」に設定したオブジェクトをフィルタすることもできます。 クエリでは、「delete_flag = 0」がアクティブなレコードの検索、「delete_flag = 1」が非アクティブなレコードの検索となります。 たとえば、doSelect()を使用してアクティブなリクエスト ステータス オブジェクトのすべての値を取得する擬似コードは以下のようになります。
doSelect(SID, "crs", "delete_flag = 0", -1, new String[0]);
オブジェクトをアクティブまたは非アクティブに設定するには、値をtrueまたはfalseで表すブール オブジェクトのハンドルを渡す必要があります。 このハンドルは変更されることはないので、コードに埋め込むことができます。 以下にその値を示します。
Active_Boolean_Table
Boolean_Table
actbool:4551 = 'Active'
bool:200 = 'False'
actbool:4552 = 'Inactive'
bool:201 = 'True'
関連リストの長さの取得
getObjectValues()などを使用してオブジェクトから属性値を取得する場合、以下の属性値を使用して関連リストの長さを取得できます。
"<listName>.length"
たとえば、あるリクエストのアクティビティ ログ数を取得するには、以下の属性をgetObjectValues()に渡します。
"act_log_all.length"
これは、このようなメソッドでリスト名を使用できる唯一の方法です。