2012-02-24 12 views
1

これはアーキテクチャ上の問題の1つです。これがこのスタック交換に適していることを望みます。これらのための自然の家ではないようです...データセンター内のWCF wsHttpBinding - 典型的な使用パターン

私が取り組んでいるシステムは、データセンターに分散されています - DMZ内のWebサーバーは、データにアクセスするために(ファイアウォールを介して)セキュリティゾーンでWebサービスを呼び出します。現在、WSEでasmxサービスを使用しており、ユーザー名とパスワードの資格情報をSOAPヘッダーに渡しています。これらは暗号化されずに渡されます。見えるところでは、これはセキュリティのいくつかの尺度を提供しています(インターネットDMZサーバーの攻撃者は、イントラネットDMZサーバーからアクセスされたサービスの資格情報にアクセスできません)。

私たちはWCFの使用に移りたいと思いますが、Webサービスに固執しています。他のクライアントとの最高の相互運用性と標準準拠のためにwsHttpBindingを使用したいと思います。引き続きユーザー名認証を使用することは、SSLまたはメッセージ暗号化を使用することを要求しているようです。これは、多くの人にとって、両方のエンドポイントを制御する独自のデータセンター内で接続を暗号化することに過度の負担がかかるようです。

私は、これが他の人が何をしているのか、またどのような選択肢があるのか​​知りたいと思うでしょう。私は考えました(そしていくつかの理由を除いて)

  • SecurityMode = None - 資格情報を使用しません。外部Webサーバの攻撃者が好きなサービスにアクセスできるように、セキュリティの人々はこれに満足していません
  • BasicHttpBindingを使用してください - これは、暗号化されていないユーザ資格情報をTransportCredentialOnlyで渡すように設定できます。しかし、BasicHttpBindingが従来のアプローチとして意図されており、他のテクノロジとの相互運用性が低いとの懸念があります。
  • Clear Username Bindingを使用してください。これはオープンソースであり、法的理由によりオープンソースに近づきたくないです。
  • データセンター内でも暗号化されたメッセージに移動する必要があることを受け入れる
  • 別の認証タイプを使用するように変更します。 Windowsの資格情報 - これは現在、これらのサービスをどのように運用しているか、またDMZからディレクトリサーバーにアクセスできるかどうかに大きな変化が生じる可能性があります。私は、これは 資格情報がTransportCredentialOnlyを使用して暗号化されていないユーザを渡すように構成することができると思う - 他の人がセキュリティゾーンでデータ・センター内WCFを使用する方法についての

任意の考えを大幅

+1

あなたの質問にすべて答えるのにWCFのセキュリティについて十分な知識はありませんが、私はあなたがどこで見つかるか知っています! Juval LowyのプログラミングWCFサービスの第10章を調べてください。これはWCFの聖書であり、第10章ではWCFのセキュリティについて知りたいことをすべてカバーしています。 –

+0

コメントありがとうございます。面白いほど私はすでにその本を持っています。 IIRCイントラネットのシナリオでは、ファイアウォール/ネットワークゾーニングなしで、クライアントとサーバーが1つのネットワーク上にある「フラット」なネットワークを想定しています.netTCPなどのバインディングを使用して、ファイアウォールに優しいWebサービスのアプローチを継承しません。私は月曜日に再読してもらいます(職場の私の机の書庫に書いてあります) – Durathor

答えて

3

使用BasicHttpBindingをいただければ幸いです。しかし、他の技術とのBasicHttpBindingはレガシー アプローチと少なく、相互運用として意図されていることをやや懸念

基本HTTP認証では、しかし、それは、プレーンでパスワードを送信し、使用することができ、ほとんどの相互運用性の組み込みの認証メカニズムですテキスト。また、IISでサービスをホストし、Windowsアカウントを認証に使用したくない場合は、少し複雑になります。

SecurityMode = None - 資格情報を使用しないでください。外部のWebサーバ上の攻撃者が 彼らは

は、企業環境でサービスを確保好きなサービスへのアクセスを得ることができて私たちのセキュリティの人々 はこれで満足していない必須です。

他の認証タイプを使用するように変更しました。 Windows 資格 - これは、現在 がこれらのサービスをどのように運用しているか、またDMZから ディレクトリサーバーにアクセスできるかどうかについての大きな変更である可能性があります。

Windows資格情報の使用を開始したら、両方のネットワークに同じまたは信頼できるドメインを使用する必要があります。

この場合、証明書(CertificateOverTransportカスタムセキュリティモード)の方がはるかに優れています。 WCFの基本認証とUserNameToken認証の問題は、ユーザー名とパスワードがプレーンテキストとして転送されることです。これは、WCFが既定で(そして.NET 4の前には常に)、HTTPSまたはメッセージセキュリティを通じて暗号化を要求する理由です。攻撃者(より危険な内部の攻撃者を含む)は、DMZまたは内部ネットワークのいずれかで通信を傍受し、サービスにアクセスするために必要なすべての資格情報を取得できます。

証明書を使用し始めると、秘密鍵を持つ証明書自体がDMZのサーバーに安全に保存されます。証明書をエクスポートできないようにすることもできます。 DMZアプリケーションが内部サービスを呼び出すと、使用された証明書に関する情報がSOAPヘッダーに追加され、メッセージのタイムスタンプが署名されます。誰でも署名を検証でき(発信者の身元を証明できる)が、秘密鍵の所有者だけが作成できる。攻撃者がネットワーク通信にアクセスしても、身元を盗むことはできない。証明書に関連する他のセキュリティメカニズムがあります。

UserNameToken(WSEで使用したもの)は暗号化されたパスワードをサポートしますが、WCFではこの機能が実装されていません。 UserNameOverTransportの暗号化を要求しないようにするに

またはCertificateOverTransportあなたがしなければならないuse custom bindingは(のみ.NET 4で動作します - 以前のバージョンでは、MSからいくつかのKBを必要とします)。

+0

あなたの詳しい答えをありがとう - 私はすべての情報をまだ完全には処理していませんが、 DMZや社内ネットワークのいずれかで通信を盗聴し、サービスにアクセスするために必要な資格情報をすべて取得することができます。これは非常に賢明なようですが、私はデータセンター内での暗号化に関する面白い見方を続けています。これ(データセンター内での暗号化)が通常のプラクティスか多少珍しいかどうかについての考えはありますか? – Durathor

+0

暗号化されていないメッセージでクレデンシャルをプレーンテキストとして送信する場合のターゲットとなる状況。そのような場合には、攻撃者は単に取得してサービスを呼び出すことができます。データセンター内のメッセージを暗号化するのがどれほど共通しているのかよく分かりませんが、内部ネットワークであっても銀行では絶対に一般的です。 –

関連する問題