この章では、Webサービス・セキュリティの概念を紹介します。この章の内容は次のとおりです。
一般的なWebサービス概念の概要は、Webサービスの紹介のWebサービス概要に関する項を参照してください。
Webサービスには疎結合の接続という特性があり、オープン・アクセス(主にHTTP)が使用されるため、Webサービスによって実装されるSOAには、セキュリティに関する一連の新しい要件が追加されます。Webサービス・セキュリティには次の側面があります。
認証: ユーザーが表明しているとおりのユーザーであるかを検証します。ユーザーのアイデンティティは、ユーザー自身が提供する資格証明に基づいて検証されます。資格証明には次のものがあります。
ユーザーが所有しているもの。たとえばパスポート(実世界)やスマート・カード(ITの世界)など、信頼できる機関が発行した資格証明。
ユーザーが知っているもの。たとえばパスワードなどの共有の秘密鍵。
ユーザーの特性。たとえばバイオメトリック情報。
複数のタイプの資格情報を組み合せて使用することは、強い認証と呼ばれます。たとえば、ATMカード(ユーザーが持っているもの)とPINやパスワード(ユーザーが知っていること)を使用する場合などです。
認可(またはアクセス制御): 認証されたユーザーの権限に基づいて、特定のリソースへのアクセスを許可します。権限は1つ以上の属性によって定義されます。属性とはユーザーのプロパティまたは特性のことです。たとえば、「Marc」はユーザーで、「会議の発言者」は属性です。
機密保護、プライバシ: 情報の機密性を保ちます。Webサービス・リクエストや電子メールなどのメッセージと、送信ユーザーおよび受信ユーザーのアイデンティティに、機密を保つ方法でアクセスします。メッセージのコンテンツを暗号化し、送信ユーザーおよび受信ユーザーのアイデンティティを不明瞭化することで機密保護とプライバシが実現されます。
整合性、否認防止: 送信ユーザーがメッセージにデジタルで署名することによって、メッセージが転送中に変更されないようにします。デジタル署名を使用することによって、署名が検証され、否認防止が実現されます。署名内のタイムスタンプにより、このメッセージが有効期限後にリプレイされることを防ぎます。
Webサービス・セキュリティの要件には、資格証明の仲介(信頼できる環境間でのセキュリティ・トークンの交換)およびサービスの機能と制約(Webサービスがどの環境で何を実行できるかを定義する)も含まれます。
多くの場合、Oracle WSMのようなWebサービス・セキュリティ・ツールは、公開鍵インフラストラクチャ(PKI)環境に依存します。PKIでは、暗号鍵(データの暗号化または復号化に使用される数学関数)を使用します。鍵は秘密鍵、公開鍵のいずれかになります。非対称暗号モデルでは、受信ユーザーの公開鍵を使用してプレーン・テキストが暗号化され、受信ユーザーの対応する秘密鍵を使用して暗号文が復号化されます。また、メッセージに署名することによって秘密鍵がデジタル署名の作成に使用され、公開鍵が署名の検証に使用されます。公開鍵証明書(または略して証明書)は、公開鍵の整合性を保証するために使用されます。
Webサービス・セキュリティ要件は、トランスポート・レベル(Secure Socket Layer)およびXMLフレームワークに依存するアプリケーション・レベルの両方で、業界標準によってサポートされています。
Webサービスでサポートされている仕様、標準およびセキュリティ・トークンの詳細は、付録A「Webサービス・セキュリティ標準」を参照してください。
注意: オラクル社は新しい標準、特にOASIS Web Services Secure Exchange技術委員会が主導する仕様の普及に貢献しています。 |
Secure Sockets Layer(SSL)は、Transport Layer Security(TLS)とも呼ばれ、最も広く使用されているトランスポート・レイヤー・データ通信プロトコルです。TLSはInternet Engineering Task Force(IETF)で公式に標準化されたバージョンのSSLです。
認証(通信は信頼できる2つのパーティ間に確立されます)。
機密保護(交換されるデータは暗号化されます)。
メッセージ整合性(データが破損しているかどうか確認されます)。
クライアントおよびサーバー間での安全な鍵の交換。
SSLでは、通信チャネルは保護されますが、転送中でないデータは保護されません。このため、マルチステップ・トランザクション中の攻撃に対して環境が脆弱になります。(SSLでは、エンドツーエンドではなくポイントツーポイントのセキュリティが提供されます。)
アプリケーション・レベルのセキュリティはトランスポート・レベルのセキュリティを補完します。アプリケーション・レベルのセキュリティでは、XMLフレームワークに基づいて機密保護、整合性、認証性、メッセージ構造、信頼管理およびフェデレーションを定義します。
データの機密保護は、XML暗号化によって実装されます。XML暗号化では、デジタル・コンテンツが暗号化および復号化される方法、暗号化キーの情報を受信者に渡す方法、および暗号化されたデータを識別することによって復号化を容易にする方法が定義されます。
データの整合性および認証性は、XML署名によって実装されます。XML署名は、送信者のアイデンティティ(または署名エンティティ)をXMLドキュメントにバインドします。署名の検証は、非対称鍵または対称鍵を使用して行われます。
署名は、署名エンティティの否認防止も保証し、署名後にメッセージが変更されていないことを証明します。メッセージ構造およびメッセージ・セキュリティは、SOAPおよびSOAPのセキュリティ拡張機能であるWS-Securityによって実装されます。WS-Securityでは、SOAPメッセージにXML署名およびXML暗号化ヘッダーを添付する方法が定義されます。さらに、WS-Securityには、5つのセキュリティ・トークンのためのプロファイルが用意されています。5つのセキュリティ・トークンとは、ユーザー名(パスワード・ダイジェスト付き)、X.509証明書、Kerberosチケット、Security Assertion Markup Language(SAML)アサーションおよびREL(権限マークアップ)ドキュメントです。
SOAPエンベロープのボディにはビジネス・ペイロードが含まれます。ビジネス・ペイロードには、購入注文、会計文書、または単に別のWebサービスへのコールなどがあります。SAMLは非常に興味深いセキュリティ・トークンであり、認証と認可の両方がサポートされています。SAMLは、XMLドキュメントを使用してインターネット上でセキュリティ情報を共有するオープン・フレームワークです。SAMLは3つの部分に分かれています。
SAMLアサーション: 認証および認可情報を定義する方法。
SAMLプロトコル: 必要なアサーションを要求(SAMLリクエスト)し、取得(SAMLレスポンス)する方法。
SAMLバインディングおよびSAMLプロファイル: SAMLアサーションを業界標準のトランスポートおよびメッセージングのフレームワークに組み込む方法。
SAMLの完全仕様は、ブラウザベースのフェデレーションにおいて使用されます。ただし、Oracle WSMのようなWebサービス・セキュリティ・システムでは、SAMLアサーションのみが使用されます。プロトコルおよびバインディングは、WS-Securityおよびトランスポート・プロトコル(HTTPなど)により提供されます。
SAMLアサーションおよびアサーション識別子への参照はWS-Securityヘッダー要素に含まれ、SOAPエンベロープのヘッダー要素に含まれることになります(WS-Security SAMLのトークン・プロファイルに記述されます)。SAMLセキュリティ・トークンは、特にアイデンティティ伝播が必須である場合に関連します。
Webサービス・セキュリティ要件を次にまとめます。
ユーザー名、SAMLトークンまたはJWTトークンを要求してトランスポート・レベル認証を行うことによる、Webサービス・コンシューマとWebサービス・プロバイダの間の通信チャネルを保護するためのトランスポート・レベルのセキュリティ。
ユーザー名またはSAMLトークンを要求してメッセージ・レベル認証を行うことによるトランスポート・レベルのセキュリティ。
メッセージ部分をデジタルに暗号化することにより機密保護を確保するメッセージ・レベルのセキュリティ、デジタル署名を使用した整合性、およびユーザー名、X.509、またはSAMLトークンを必要とする認証。
Oracle Web Services Manager(WSM)は、異機種間環境でWebサービス・セキュリティを定義、実装するために設計され、単一トランザクションを完了するために使用される複数のWebサービスにわたる認証、認可、メッセージの暗号化および復号化、署名の生成および検証、およびアイデンティティ伝播が含まれます。
図2-1に、Webサービスとそのクライアント間の一般的なやり取りをいくつか説明するOracle Fusion Middlewareアプリケーションを示します。プロセスの各ステップでセキュリティがどのように管理されるかが、次の図で説明されています。
Oracle WSM Policy Manager(図2-1ではOWSMと表示)は、Oracle Fusion Middleware WebサービスおよびSOAアプリケーションのセキュリティの根幹です。Oracle WSM Policy Managerによるポリシー・フレームワークの管理方法の詳細は、第3章「Oracle WSMのポリシー・フレームワークについて」を参照してください。
注意: Webサービスのセキュリティを確認するために、Policy ManagerはWebサービスを開始する前に実行されている必要があります。Policy Managerが別個のサーバー(Webサービスを実行しているサーバー以外)にデプロイされている場合、他のサーバーを起動する前にそのサーバーが稼働していることを確認します。 |
前述の図で示すように、Webサービスに添付できるポリシーには、Oracle WSMポリシーとWebLogic Serverポリシーの2種類があります。詳細は、表1-1「Webサービス・ポリシーのタイプ」を参照してください。
次に、前述の図に出現したWebサービスとクライアントのやり取り、およびプロセスの各ステップでセキュリティがどのように管理されるかをより詳細に説明します。図中での説明のとおり、セキュリティはOracle WSMポリシーとWebLogic Webサービス・ポリシーの両方を使用して管理されます。
設計時に、Oracle JDeveloperなど好みのIDEを使用して、プログラムによってアプリケーションにOracle WSMポリシーおよびWebLogic Webサービス・ポリシーを添付します。
また、デプロイ時に、SOAコンポジット、ADFおよびWebCenterアプリケーションにはOracle Enterprise Manager Fusion Middleware Controlを使用し、WebLogic Webサービス(Java EE)にはWebLogic Server管理コンソール(図には示されていません)を使用して、ポリシーを添付します。
注意: 設計時にWebLogic Webサービスに添付されたポリシーは、デプロイ時に解除できません。新しいポリシーの添付のみ実行できます。
ユーザーがADF Webアプリケーションにログインします。
ユーザーは企業Aの内部または外部に存在します。
ADF Webアプリケーションは、Webサービス・データ・コントロールを使用して、WebLogic Webサービス、SOAコンポジット・アプリケーションまたはADF Business Componentsなどのサービスにアクセスします。
Webサービスのクライアント側では、Oracle WSMが、サービスへのSOAPメッセージ・リクエストをインターセプトし、添付されたポリシーの必要に応じて関連するトークンを挿入し、署名し、メッセージを暗号化します。
Webサービス側では、Oracle WSMが、サービスへのSOAPメッセージ・リクエストをインターセプトし、添付されたポリシーの必要に応じてトークンを抽出し、クライアントの資格証明をアイデンティティ管理インフラストラクチャ(ファイル、LDAP準拠のディレクトリまたはOracle Access Managerなど)に対して検証します。
SOAサービス・コンポーネントとのやり取り(図に示されています)には次のものが含まれます。
SOAサービス・コンポーネントが、データベース内の表への問合せまたは更新を行うためにADFビジネス・コンポーネントにアクセスします。
WebCenterクライアントが、顧客リクエストを処理するためにSOAサービス・コンポーネントにアクセスします。
SOAサービス・コンポーネントが、特定のタスクを実行するために、企業Aの内部にあるWebサービスにアクセスします。
SOAサービス・コンポーネントが、特定のタスクを実行するために、外部プロバイダ(企業B)経由でWebサービスにアクセスします。WSDLドキュメントを識別するURLを把握しているかぎり、Webサービスにアクセスできます。
Webサービスのクライアント側では再度、Oracle WSMが、サービスへのSOAPメッセージ・リクエストをインターセプトし、添付されたポリシーの必要に応じて関連するトークンを挿入し、署名し、メッセージを暗号化します。
Webサービス側では、Oracle WSMが、サービスへのSOAPメッセージ・リクエストをインターセプトし、添付されたポリシーの必要に応じてトークンを抽出し、クライアントの資格証明をアイデンティティ管理インフラストラクチャ(ファイル、LDAP準拠のディレクトリまたはOracle Access Managerなど)に対して検証します。
クライアントは、WebLogic Java EE Webサービスにアクセスします。
この場合は、より大きなコンポジット・アプリケーションのコンポーネントがWebLogic Webサービスとやり取りを行います。WebLogic JAX-WS Webサービス・クライアントを保護するには、Oracle WSMポリシーが使用されます。WebLogic JAX-RPCサービス・クライアントを保護するには、WebLogic Webサービスポリシーが使用されます。