次の方法で共有


Windows Communication Foundation のセキュリティの概要

Windows Communication Foundation (WCF) は SOAP メッセージベースの分散プログラミング プラットフォームであり、データを保護するにはクライアントとサービス間のメッセージのセキュリティ保護が不可欠です。 WCF は、既存のセキュリティ インフラストラクチャと SOAP メッセージの認識されたセキュリティ標準の両方に基づいてセキュリティで保護されたメッセージを交換するための、汎用性と相互運用が可能なプラットフォームを提供します。

WCF では、HTTPS、Windows 統合セキュリティ、ユーザー名とパスワードなどの既存のテクノロジを使用して、セキュリティで保護された分散アプリケーションを構築した場合に使い慣れた概念を使用して、ユーザーを認証します。 WCF は、既存のセキュリティ インフラストラクチャと統合するだけでなく、セキュリティで保護された SOAP メッセージを使用して、Windows 専用ドメインを超えて分散セキュリティを拡張します。 WCF は、既存のプロトコルに加えて、プロトコルとして SOAP を使用する主な利点を持つ既存のセキュリティ メカニズムの実装と考えてください。 たとえば、クライアントまたはサービスを識別する資格情報 (ユーザー名とパスワード、X.509 証明書など) には、相互運用可能な XML ベースの SOAP プロファイルがあります。 これらのプロファイルを使用すると、XML デジタル署名や XML 暗号化などのオープン仕様を利用して、メッセージが安全に交換されます。 仕様の一覧については、「 System-Provided 相互運用性バインディングでサポートされる Web サービス プロトコル」を参照してください。

もう 1 つの並列は、セキュリティで保護された分散アプリケーションを可能にする Windows プラットフォーム上のコンポーネント オブジェクト モデル (COM) です。 COM には、コンポーネント間でセキュリティ コンテキストをフローできる包括的なセキュリティ メカニズムがあります。このメカニズムでは、整合性、機密性、および認証が適用されます。 ただし、COM では、WCF のようにクロスプラットフォームのセキュリティで保護されたメッセージングは有効になりません。 WCF を使用すると、インターネット経由で Windows ドメインにまたがるサービスとクライアントを構築できます。 WCF の相互運用可能なメッセージは、情報のセキュリティに自信を持って感じるのに役立つ、動的なビジネス主導のサービスを構築するために不可欠です。

Windows Communication Foundation のセキュリティ上の利点

WCF は、SOAP メッセージに基づく分散プログラミング プラットフォームです。 WCF を使用すると、サービスとサービス クライアントの両方として機能するアプリケーションを作成し、他のサービスとクライアントの数に制限なくメッセージを作成して処理できます。 このような分散アプリケーションでは、メッセージは、ノード間、ファイアウォール、インターネット、および多数の SOAP 中継局を介してフローできます。 これにより、さまざまなメッセージ セキュリティの脅威が発生します。 次の例は、エンティティ間でメッセージを交換するときに WCF セキュリティが軽減するのに役立つ一般的な脅威をいくつか示しています。

  • 機密情報を取得するためのネットワーク トラフィックの観察。 たとえば、オンラインバンキングシナリオでは、クライアントは口座間での資金の送金を要求します。 悪意のあるユーザーがメッセージを傍受し、アカウント番号とパスワードを使用すると、後で侵害されたアカウントからの資金の転送が実行されます。

  • クライアントを認識せずにサービスとして機能する悪意のあるエンティティ。 このシナリオでは、悪意のあるユーザー (悪意のあるユーザー) がオンライン サービスとして機能し、クライアントからのメッセージを傍受して機密情報を取得します。 その後、不正は盗まれたデータを使用して、侵害されたアカウントから資金を送金します。 この攻撃は フィッシング攻撃とも呼ばれます。

  • メッセージを変更して、呼び出し元が意図した結果とは異なる結果を得る。 たとえば、入金先の口座番号を変更すると、資金は不正な口座に移動できます。

  • ハッカーは、迷惑なハッカーが同じ注文書を再生する再生します。 たとえば、オンライン書店は数百の注文を受け取り、注文していない顧客に書籍を送信します。

  • サービスがクライアントを認証できない。 この場合、サービスは適切な人物がトランザクションを実行したことを保証できません。

要約すると、転送セキュリティは次の保証を提供します。

  • サービス エンドポイント (回答者) 認証。

  • クライアント プリンシパル (イニシエーター) 認証。

  • メッセージの整合性。

  • メッセージの機密性。

  • 再生の検出。

既存のセキュリティ インフラストラクチャとの統合

多くの場合、Web サービスのデプロイには、Secure Sockets Layer (SSL) や Kerberos プロトコルなどの既存のセキュリティ ソリューションが存在します。 Active Directory を使用する Windows ドメインなど、既にデプロイされているセキュリティ インフラストラクチャを利用するものがあります。 多くの場合、新しいテクノロジを評価して採用する際に、これらの既存のテクノロジと統合する必要があります。

WCF セキュリティは、既存のトランスポート セキュリティ モデルと統合され、SOAP メッセージ セキュリティに基づく新しい転送セキュリティ モデルに既存のインフラストラクチャを利用できます。

既存の認証モデルとの統合

通信セキュリティ モデルの重要な部分は、通信でエンティティを識別して認証する機能です。 通信中のこれらのエンティティは、"デジタル ID" または資格情報を使用して、通信相手に対して自身を認証します。 分散通信プラットフォームが進化するにつれて、さまざまな資格情報認証と関連するセキュリティ モデルが実装されています。 たとえば、インターネットでは、ユーザー名とパスワードを使用してユーザーを識別するのが一般的です。 イントラネットでは、Kerberos ドメイン コントローラーを使用してユーザーとサービスの認証をバックアップすることが一般的になっています。 2 つのビジネス パートナー間など、特定のシナリオでは、証明書を使用してパートナーを相互に認証できます。

したがって、同じサービスが社内の顧客や外部パートナーやインターネットのお客様に公開される可能性がある Web サービスの世界では、インフラストラクチャがこれらの既存のセキュリティ認証モデルとの統合を提供することが重要です。 WCF セキュリティでは、次のようなさまざまな資格情報の種類 (認証モデル) がサポートされています。

  • 匿名の呼び出し元。

  • ユーザー名クライアント資格情報。

  • 証明書クライアントの資格情報。

  • Windows (Kerberos プロトコルと NT LanMan [NTLM] の両方)。

標準と相互運用性

既存のデプロイが大規模な世界では、同質性はまれです。 分散コンピューティング/通信プラットフォームは、さまざまなベンダーが提供するテクノロジと相互運用する必要があります。 同様に、セキュリティも相互運用可能である必要があります。

相互運用可能なセキュリティ システムを有効にするために、Web サービス業界でアクティブな企業は、さまざまな標準を作成しています。 具体的には、セキュリティに関して、WS-Security: SOAP Message Security (OASIS 標準本文で受け入れられており、以前は WS-Securityと呼ばれる)、WS-Trust、WS-SecureConversation、WS-SecurityPolicy といういくつかの注目すべき標準が提案されています。

WCF では、さまざまな相互運用性シナリオがサポートされています。 BasicHttpBinding クラスは Basic Security Profile (BSP) を対象とし、WSHttpBinding クラスは WS-Security 1.1 や WS-SecureConversation などの最新のセキュリティ標準を対象とします。 これらの標準に準拠することで、WCF セキュリティは、Microsoft Windows 以外のオペレーティング システムやプラットフォームでホストされている Web サービスと相互運用および統合できます。

WCF セキュリティ機能領域

WCF セキュリティは、転送セキュリティ、アクセス制御、監査の 3 つの機能領域に分かれています。 以下のセクションでは、これらの領域について簡単に説明し、詳細なリンクを提供します。

セキュリティの転送

転送セキュリティには、整合性、機密性、認証という 3 つの主要なセキュリティ機能が含まれます。 整合性 とは、メッセージが改ざんされているかどうかを検出する機能です。 機密性 とは、意図された受信者以外の誰もがメッセージを読めないようにする機能です。これは暗号化によって実現されます。 認証 は、要求された ID を検証する機能です。 これら 3 つの関数を組み合わせることで、メッセージが 1 つのポイントから別のポイントに安全に到着するようにします。

トランスポートとメッセージのセキュリティ モード

WCF で転送セキュリティを実装するには、 トランスポート セキュリティ モードと メッセージ セキュリティ モードという 2 つの主要なメカニズムが使用されます。

  • トランスポート セキュリティ モード では、転送セキュリティを実現するために、HTTPS などのトランスポート レベルのプロトコルが使用されます。 トランスポート モードには、広く採用され、多くのプラットフォームで利用でき、計算の複雑さも少ないという利点があります。 ただし、ポイントツーポイントからのみメッセージをセキュリティで保護するという欠点があります。

  • 一方、メッセージ セキュリティ モードでは、WS-Security (およびその他の仕様) を使用して転送セキュリティを実装します。 メッセージ セキュリティは SOAP メッセージに直接適用され、アプリケーション データと共に SOAP エンベロープ内に含まれるため、トランスポート プロトコルに依存せず、拡張性が高く、エンドツーエンドのセキュリティ (ポイントツーポイント) を確保するという利点があります。SOAP メッセージの XML の性質を処理する必要があるため、トランスポート セキュリティ モードよりも数倍遅いという欠点があります。

これらの違いの詳細については、「 サービスとクライアントのセキュリティ保護」を参照してください。

3 番目のセキュリティ モードでは、以前のモードの両方が使用され、両方の利点があります。 このモードは TransportWithMessageCredential と呼ばれます。 このモードでは、メッセージ セキュリティを使用してクライアントを認証し、トランスポート セキュリティを使用してサーバーを認証し、メッセージの機密性と整合性を提供します。 このため、 TransportWithMessageCredential セキュリティ モードはトランスポート セキュリティ モードとほぼ同じ速度で、メッセージ セキュリティと同じ方法でクライアント認証の拡張性を提供します。 ただし、メッセージ セキュリティ モードとは異なり、完全なエンドツーエンドのセキュリティは提供されません。

アクセス制御

アクセス制御 は承認とも呼ばれます。 承認 を使用すると、さまざまなユーザーがデータを表示するための異なる権限を持つことができます。 たとえば、会社の人事ファイルには機密性の高い従業員データが含まれているため、従業員データを表示できるのはマネージャーだけです。 さらに、マネージャーは直属の部下のデータのみを表示できます。 この場合、アクセス制御は、ロール ("マネージャー") とマネージャーの特定の ID の両方に基づいています (あるマネージャーが別のマネージャーの従業員レコードを見ないようにするため)。

WCF では、アクセス制御機能は、共通言語ランタイム (CLR) PrincipalPermissionAttribute との統合と 、ID モデルと呼ばれる API のセットを通じて提供されます。 アクセス制御とクレーム ベースの承認の詳細については、「 セキュリティの拡張」を参照してください。

監査

監査 は、Windows イベント ログへのセキュリティ イベントのログ記録です。 認証エラー (または成功) など、セキュリティ関連のイベントをログに記録できます。 詳細については、「 監査」を参照してください。 プログラミングの詳細については、「 方法: セキュリティ イベントを監査する」を参照してください。

こちらも参照ください