Web サービス・セキュリティーを構成する際には、 結果がさまざまな種類のアタック・メカニズムに対してぜい弱ではないことを確認するために、 最大限の努力をする必要があります。 Web サービスを保護する際に起こりうるセキュリティー上の懸念があります。
WebSphere Application Server バージョン 6 以降では、SOAP メッセージ内で保全性、機密性、 および関連トークンを使用可能にする際は、セキュリティーは保証されません。 セキュリティー上の懸念についてのこのリストは、 すべてを網羅しているわけではありません。 ユーザーの環境については、ユーザー独自のセキュリティー分析を行う必要があります。
Web サービス・セキュリティー 2004 仕様には、XML デジタル・シグニチャー および XML 暗号化を SOAP ヘッダー内で使用する方法が定義されています。 したがって、ユーザーは、その他のセキュリティー・メカニズムとの関連で XML デジタル・シグニチャーおよび XML 暗号化と、それらがエンティティーに対して起こしうる脅威について理解しておく必要があります。 XML デジタル・シグニチャーの場合は、 デジタル・シグニチャー全般、特に XML デジタル・シグニチャーの使用によって生じるセキュリティーへの影響をすべて承知している必要があります。 デジタル・シグニチャーに準拠したアプリケーションで信頼を得る場合は、 Public Key Infrastructure (PKI) に準拠した認証信頼性検証など、 他のテクノロジーを組み込む必要があります。 XML 暗号化の場合、共通データ項目に対してデジタル署名と暗号化を組み合わせると、 暗号化がぜい弱になる可能性があります。 例えば、デジタル署名付きデータを暗号化する場合、 デジタル・シグニチャーをプレーン・テキストに置き忘れて、 プレーン・テキスト推測アタックに対してメッセージをぜい弱なままにする可能性があります。 一般的な習慣として、データを暗号化した場合は、 そのデータに関するダイジェストまたはシグニチャーはすべて暗号化してください。 詳しくは、 http://www.w3.org/TR/xmlenc-core/#sec-Sign-with-Encryptを参照してください。
トークン置換アタックの可能性が存在します。 このシナリオでは、デジタル・シグニチャーは、 セキュリティー・トークンから頻繁に派生されてメッセージに組み込まれる鍵を用いて検証されます。 トークンが置換された場合、 受信側は、置換された鍵に基づいてメッセージを受け入れますが、 これは予期したこととは異なります。 この問題に対するソリューションの 1 つとして考えられるのは、 セキュリティー・トークン (または署名鍵を派生させた固有の識別データ) を、 署名済みデータと一緒に署名することです。 状況によっては、 信頼のおける権限によって発行されたトークンが署名されます。 この場合には、保全性の問題はありません。 しかし、アプリケーション・セマンティクスおよび環境は時間の経過とともに変化するので、 最良の実践はこのアタックを防止することです。 デプロイ済みの環境に基づいて、リスク査定を行う必要があります。
デジタル・シグニチャーに使用するトークン ID の認証性および妥当性が正しく信頼できることを確認することをお勧めします。 特に X.509 トークンの場合、この問題は、証明書パスの検査、 および証明書失効リスト (CRL) の使用を伴います。 WebSphere Application Server バージョン 6 以降における Web サービス・セキュリティー実装では、 証明書は <TokenConsumer> エレメントによって検査されます。WebSphere Application Server は、 Java CertPath ライブラリーを使用して証明書を検査および検証する X.509 証明書のデフォルト・インプリメンテーションを提供します。 このインプリメンテーションには、CRL の明示的な概念はありません。 代わりに、正しいルート証明書および中間証明書がファイル内にのみ準備されています。 高度なソリューションの場合、 オンライン CRL データベースまたは Online Certificate Status Protocol (OCSP) を使用する証明書および CRL の検査を実行する独自の TokenConsumer インプリメンテーションを開発することもできます。
ユーザー名トークンにおけるパスワードは、 保護なしではダウンストリーム・サーバーに送信しないでください。 SSL (例えば、HTTPS) などのトランスポート・レベルのセキュリティーを使用するか、 Web サービス・セキュリティー内の XML 暗号化を使用して、パスワードを保護することができます。 保護の適切な方式は、使用している環境によって異なります。 ただし、アタックに対してぜい弱ではないと確信できる一部の特殊な環境では、 パスワードをダウンストリーム・サーバーにプレーン・テキストとして送信できる場合があります。
Web サービスの保護は、 XML デジタル・シグニチャーおよび XML 暗号化をただ使用可能にする場合と比べて、 より多くの作業を必要とします。 Web サービスを正しく保護するには、 PKI についての知識が必要になります。 必要となるセキュリティーの厳重さは、 デプロイ済みの環境および使用パターンによって異なります。 しかし、Web サービスを保護するための基本的な規則およびベスト・プラクティスがいくつかあります。 PKI に関するいくつかの資料を読み、 Web Services Interoperability Organization (WS-I) Basic Security Profile (BSP) に関する情報も読むことをお勧めします。