Microsoft は、エンド ユーザーのプライバシー保護に取り組んでいます。 Windows Communication Foundation (WCF) バージョン 3.0 を使用してアプリケーションをビルドすると、アプリケーションがエンド ユーザーのプライバシーに影響を与える可能性があります。 たとえば、アプリケーションがユーザーの連絡先情報を明示的に収集したり、インターネット経由で Web サイトに情報を要求または送信したりする場合があります。 アプリケーションに Microsoft テクノロジを埋め込む場合、そのテクノロジには、プライバシーに影響する可能性のある独自の動作が存在する可能性があります。 WCF は、お客様またはエンド ユーザーが Microsoft に送信することを選択しない限り、アプリケーションから Microsoft に情報を送信しません。
WCF の概要
WCF は、開発者が分散アプリケーションを構築できるようにする Microsoft .NET Framework を使用する分散メッセージング フレームワークです。 2 つのアプリケーション間で通信されるメッセージには、ヘッダーと本文の情報が含まれます。
ヘッダーには、アプリケーションで使用されるサービスに応じて、メッセージ ルーティング、セキュリティ情報、トランザクションなどが含まれる場合があります。 通常、メッセージは既定で暗号化されます。 1 つの例外は、セキュリティで保護されていないレガシ Web サービスで使用するように設計された BasicHttpBinding
を使用する場合です。 アプリケーション デザイナーは、最終的な設計を担当します。 SOAP 本文内のメッセージには、アプリケーション固有のデータが含まれています。ただし、このデータ (アプリケーション定義の個人情報など) は、WCF 暗号化または機密性の機能を使用して保護できます。 次のセクションでは、プライバシーに影響する可能性がある機能について説明します。
メッセージング
各 WCF メッセージには、メッセージの送信先と応答の送信先を指定するアドレス ヘッダーがあります。
エンドポイント アドレスのアドレス コンポーネントは、エンドポイントを識別する URI (Uniform Resource Identifier) です。 アドレスには、ネットワーク アドレスまたは論理アドレスを指定できます。 アドレスには、コンピューター名 (ホスト名、完全修飾ドメイン名) と IP アドレスを含めることができます。 エンドポイント アドレスには、グローバル一意識別子 (GUID) や、各アドレスを識別するために使用される一時的なアドレス指定用の GUID のコレクションを含めることもできます。 各メッセージには、GUID であるメッセージ ID が含まれています。 この機能は、WS-Addressing リファレンス標準に従います。
WCF メッセージング 層は、ローカル コンピューターに個人情報を書き込むことはありません。 ただし、サービス開発者がそのような情報を公開するサービスを作成した場合 (たとえば、エンドポイント名でユーザーの名前を使用したり、エンドポイントの Web サービス記述言語に個人情報を含めたりして、クライアントが WSDL にアクセスするために https を使用する必要がない場合など) は、ネットワーク レベルで個人情報が伝達される可能性があります。 また、開発者が、個人情報を公開するエンドポイントに対して ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe) ツールを実行すると、ツールの出力にその情報が含まれる可能性があり、出力ファイルはローカル ハード ディスクに書き込まれます。
ホスティング
WCF のホスティング機能を使用すると、アプリケーションをオンデマンドで開始したり、複数のアプリケーション間でポート共有を有効にしたりできます。 WCF アプリケーションは、ASP.NET と同様に、インターネット インフォメーション サービス (IIS) でホストできます。
ホスティングでは、ネットワーク上の特定の情報は公開されず、マシン上のデータは保持されません。
メッセージのセキュリティ
WCF セキュリティは、メッセージング アプリケーションのセキュリティ機能を提供します。 提供されるセキュリティ機能には、認証と承認が含まれます。
認証は、クライアントとサービスの間で資格情報を渡すことによって実行されます。 認証は、トランスポート レベルのセキュリティを使用するか、次のように SOAP メッセージ レベルのセキュリティを使用して行うことができます。
SOAP メッセージ セキュリティでは、認証は、ユーザー名/パスワード、X.509 証明書、Kerberos チケット、SAML トークンなどの資格情報を使用して実行されます。これらはすべて、発行者に応じて個人情報を含む可能性があります。
トランスポート セキュリティを使用すると、HTTP 認証スキーム (Basic、Digest、Negotiate、Integrated Windows Authorization、NTLM、None、Anonymous) などの従来のトランスポート認証メカニズムを使用して認証が行われ、フォーム認証が行われます。
認証により、通信エンドポイント間でセキュリティで保護されたセッションが確立される可能性があります。 セッションは、セキュリティ セッションの有効期間が続く GUID によって識別されます。 次の表は、保持される内容と場所を示しています。
データ | ストレージ |
---|---|
ユーザー名、X.509 証明書、Kerberos トークン、資格情報への参照などのプレゼンテーション資格情報。 | Windows 証明書ストアなどの標準的な Windows 資格情報管理メカニズム。 |
ユーザー名やパスワードなどのユーザー メンバーシップ情報。 | メンバーシップ プロバイダーを ASP.NET します。 |
クライアントに対するサービスの認証に使用されるサービスに関する ID 情報。 | サービスのエンドポイント アドレス。 |
呼び出し元情報。 | 監査ログ。 |
監査
監査では、認証イベントと承認イベントの成功と失敗が記録されます。 監査レコードには、サービス URI、アクション URI、および呼び出し元の ID というデータが含まれます。
また、メッセージ ログはアプリケーション固有のデータをヘッダーと本文に記録する可能性があるため、管理者がメッセージ ログの構成を変更 (オンまたはオフ) したときにも記録されます。 Windows XP の場合、アプリケーション イベント ログにレコードが記録されます。 Windows Vista および Windows Server 2003 の場合、セキュリティ イベント ログにレコードが記録されます。
トランザクション
トランザクション機能は、WCF アプリケーションにトランザクション サービスを提供します。
トランザクション伝達で使用されるトランザクション ヘッダーには、トランザクション ID または参加 ID (GUID) が含まれている場合があります。
トランザクション機能は、Microsoft 分散トランザクション コーディネーター (MSDTC) トランザクション マネージャー (Windows コンポーネント) を使用してトランザクションの状態を管理します。 既定では、トランザクション マネージャー間の通信は暗号化されます。 トランザクション マネージャーは、エンドポイント参照、トランザクション ID、参加 ID を永続的な状態の一部としてログに記録できます。 この状態の有効期間は、トランザクション マネージャーのログ ファイルの有効期間によって決まります。 MSDTC サービスは、このログを所有し、保持します。
トランザクション機能は、WS-Coordination およびトランザクション標準 WS-Atomic 実装します。
信頼できるセッション
WCF の信頼できるセッションは、トランスポートまたは中間エラーが発生したときにメッセージを転送します。 基になるトランスポートが切断された場合 (ワイヤレス ネットワーク上の TCP 接続など)、メッセージが失われる場合 (HTTP プロキシによる送信メッセージまたは受信メッセージのドロップ) が発生した場合でも、メッセージの正確な 1 回限りの転送が提供されます。 また、信頼できるセッションでは、メッセージの並べ替え (マルチパス ルーティングの場合に発生する可能性があります) も回復され、メッセージが送信された順序が維持されます。
信頼できるセッションは、WS-ReliableMessaging (WS-RM) プロトコルを使用して実装されます。 セッション情報を含むヘッダー WS-RM 追加します。これは、特定の信頼できるセッションに関連付けられているすべてのメッセージを識別するために使用されます。 各 WS-RM セッションには、GUID である識別子があります。
エンド ユーザーのコンピューターに個人情報は保持されません。
キューに登録されたチャネル
キューは、受信側アプリケーションに代わって送信側アプリケーションからのメッセージを格納し、後でこれらのメッセージを受信側アプリケーションに転送します。 受信アプリケーションが一時的な場合など、アプリケーションの送信から受信アプリケーションへのメッセージの転送を確実に行うのに役立ちます。 WCF では、トランスポートとして Microsoft Message Queuing (MSMQ) を使用してキューをサポートしています。
キューに登録されたチャネル機能は、メッセージにヘッダーを追加しません。 代わりに、適切なメッセージ キュー メッセージ プロパティが設定されたメッセージ キュー メッセージを作成し、メッセージ キュー メソッドを呼び出してメッセージ キュー キューにメッセージを配置します。 メッセージ キューは、Windows に付属するオプションのコンポーネントです。
キューに登録されたチャネル機能によってエンド ユーザーのマシンに情報は保持されません。キュー インフラストラクチャとしてメッセージ キューが使用されるためです。
COM+ の統合
この機能は、既存の COM および COM+ 機能をラップして、WCF サービスと互換性のあるサービスを作成します。 この機能では、特定のヘッダーは使用されず、エンド ユーザーのコンピューター上のデータは保持されません。
COM サービス モニカー
これにより、標準の WCF クライアントにアンマネージド ラッパーが提供されます。 この機能は、ネットワーク上に特定のヘッダーを持たず、マシン上にデータを保持することもありません。
ピア チャネル
ピア チャネルを使用すると、WCF を使用してマルチパーティ アプリケーションを開発できます。 マルチパーティ メッセージングは、メッシュのコンテキストで発生します。 メッシュは、ノードが結合できる名前によって識別されます。 ピア チャネル内の各ノードは、ユーザー指定のポートに TCP リスナーを作成し、回復性を確保するためにメッシュ内の他のノードとの接続を確立します。 また、メッシュ内の他のノードに接続するために、ノードは、リスナー アドレスやマシンの IP アドレスなど、一部のデータをメッシュ内の他のノードと交換します。 メッシュ内で送信されるメッセージには、メッセージのスプーフィングや改ざんを防ぐために、送信者に関連するセキュリティ情報を含めることができます。
エンド ユーザーのコンピューターに個人情報は保存されません。
IT プロフェッショナルエクスペリエンス
追跡
WCF インフラストラクチャの診断機能は、トランスポート およびサービス モデル レイヤーを通過するメッセージと、これらのメッセージに関連付けられているアクティビティとイベントをログに記録します。 この機能は既定でオフになっています。 アプリケーションの構成ファイルを使用して有効になり、実行時に WCF WMI プロバイダーを使用してトレース動作を変更できます。 有効にすると、トレース インフラストラクチャは、構成されたリスナーにメッセージ、アクティビティ、および処理イベントを含む診断トレースを出力します。 出力の形式と場所は、管理者のリスナー構成の選択肢によって決まりますが、通常は XML 形式のファイルです。 管理者は、トレース ファイルにアクセス制御リスト (ACL) を設定する必要があります。 特に、Windows ライセンス認証システム (WAS) によってホストされている場合、管理者は、必要でない場合は、ファイルがパブリック仮想ルート ディレクトリから提供されていないことを確認する必要があります。
次のセクションで説明するトレースには、メッセージ ログとサービス モデル診断トレースの 2 種類があります。 各種類は、独自のトレース ソース ( MessageLogging と System.ServiceModel) を使用して構成されます。 どちらのログ トレース ソースも、アプリケーションに対してローカルなデータをキャプチャします。
メッセージ ログ
メッセージ ログ トレース ソース (MessageLogging) を使用すると、管理者はシステムを通過するメッセージをログに記録できます。 構成を通じて、ユーザーはメッセージ全体またはメッセージ ヘッダーのみをログに記録し、トランスポート 層またはサービス モデル レイヤーでログを記録するかどうか、および形式が正しくないメッセージを含めるかどうかを決定できます。 また、ログに記録されるメッセージを制限するようにフィルター処理を構成することもできます。
既定では、メッセージ ログは無効になっています。 ローカル コンピューター管理者は、アプリケーション レベルの管理者がメッセージのログオンを有効にできないようにすることができます。
暗号化および復号化されたメッセージ ログ
メッセージは、次の用語で説明するように、ログに記録、暗号化、または復号化されます。
トランスポート ログ: トランスポート レベルで送受信されたメッセージをログに記録します。 これらのメッセージにはすべてのヘッダーが含まれており、ネットワーク上で送信される前および受信時に暗号化される可能性があります。
メッセージがネットワーク上で送信される前に暗号化され、受信されると、暗号化されてログに記録されます。 例外は、セキュリティ プロトコルが使用されている場合 (https) です。ネットワーク上で暗号化されている場合でも、送信される前と受信後に暗号化解除されてログに記録されます。
サービス ログ: チャネル ヘッダー処理が発生した後、ユーザー コードを入力する直前と後に、サービス モデル レベルで受信または送信されたメッセージをログに記録します。
このレベルでログに記録されたメッセージは、ネットワーク上でセキュリティで保護および暗号化された場合でも復号化されます。
メッセージ ログの形式が正しくない WCF インフラストラクチャが理解または処理できないメッセージをログに記録します。
メッセージは as-isログに記録されます。つまり、暗号化されているかどうか
メッセージが暗号化解除または暗号化されていない形式でログに記録されると、既定では、WCF はセキュリティ キーと個人情報をログに記録する前にメッセージから削除します。 次のセクションでは、削除される情報とそのタイミングについて説明します。 マシン管理者とアプリケーション 展開者は、キーと潜在的な個人情報をログに記録するように既定の動作を変更するために、特定の構成アクションを実行する必要があります。
暗号化解除されたメッセージまたは暗号化されていないメッセージをログに記録するときに、メッセージ ヘッダーから削除された情報
メッセージが暗号化解除または暗号化されていない形式でログに記録されると、セキュリティ キーと潜在的な個人情報は、ログに記録される前に、既定でメッセージ ヘッダーとメッセージ本文から削除されます。 次の一覧は、WCF がキーと潜在的に個人情報と見なす内容を示しています。
削除されるキー:
xmlns:wst="http://schemas.xmlsoap.org/ws/2004/04/trust"
およびxmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust"
wst:BinarySecret
wst:Entropy
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.1.xsd"
およびxmlns:wsse="http://docs.oasis-open.org/wss/2005/xx/oasis-2005xx-wss-wssecurity-secext-1.1.xsd"
wsse:Password
wsse:Nonce
削除される可能性のある個人情報:
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.1.xsd"
およびxmlns:wsse="http://docs.oasis-open.org/wss/2005/xx/oasis-2005xx-wss-wssecurity-secext-1.1.xsd"
wsse:Username
wsse:BinarySecurityToken
xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
の場合、bold
内の次の項目は削除されます。
<Assertion MajorVersion="1" MinorVersion="1" AssertionId="[ID]" Issuer="[string]" IssueInstant="[dateTime]"
<Conditions NotBefore="[dateTime]" NotOnOrAfter="[dateTime]"><AudienceRestrictionCondition><Audience>[uri]</Audience>+ </AudienceRestrictionCondition>* <DoNotCacheCondition />* <!-- 抽象基本型 <Condition />*
</Conditions>?
<Advice><AssertionIDReference>[ID]</AssertionIDReference>* <Assertion>[assertion]</Assertion>* [any]* </Advice>?
<--抽象基本型 <Statement />* <SubjectStatement><Subject>
<NameIdentifier
NameQualifier="[string]"?
Format="[uri]"?
>
[string]
</NameIdentifier>?
<SubjectConfirmation><ConfirmationMethod>[anyUri]</ConfirmationMethod>+ <SubjectConfirmationData>[any]</SubjectConfirmationData>?
<ds:KeyInfo>...</ds:KeyInfo>?
</SubjectConfirmation>?
</Subject></SubjectStatement>*
<AuthenticationStatement AuthenticationMethod="[uri]" AuthenticationInstant="[dateTime]"
[件名]
<SubjectLocality
IPAddress="[string]"?
DNSAddress="[string]"?
/>?
<AuthorityBinding AuthorityKind="[QName]" Location="[uri]" Binding="[uri]" />* </AuthenticationStatement>* <AttributeStatement> [Subject] <Attribute AttributeName="[string]" AttributeNamespace="[uri]"
<AttributeValue>[any]</AttributeValue>+
</Attribute>+ </AttributeStatement>* <AuthorizationDecisionStatement Resource="[uri]" Decision="[Permit|拒否 |不確定]"
[件名] <Action Namespace="[uri]">[string]</Action>+ <Evidence><AssertionIDReference>[ID]</AssertionIDReference>+ <Assertion>[assertion]</Assertion>+ </Evidence>? </AuthorizationDecisionStatement>* </Assertion>
暗号化解除されたメッセージまたは暗号化されていないメッセージをログに記録するときに、メッセージ本文から削除された情報
前述のように、WCF は、暗号化解除および暗号化されていないログに記録されたメッセージのキーと既知の個人情報をメッセージ ヘッダーから削除します。 さらに、WCF は、キー交換に関連するセキュリティ メッセージについて説明する、次の一覧の本文要素とアクションのメッセージ本文からキーと既知の個人情報を削除します。
次の名前空間の場合:
xmlns:wst="http://schemas.xmlsoap.org/ws/2004/04/trust"
と xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust"
(使用できるアクションがない場合など)
次の本文要素の情報が削除されます。これにはキー交換が含まれます。
wst:RequestSecurityToken
wst:RequestSecurityTokenResponse
wst:RequestSecurityTokenResponseCollection
次の各アクションの情報も削除されます。
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue
http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Issue
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Renew
http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Renew
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Cancel
http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Cancel
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Validate
http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Validate
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT
http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Amend
http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Amend
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Renew
http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Renew
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Cancel
http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Cancel
http://schemas.xmlsoap.org/ws/2004/04/security/trust/RST/SCT
http://schemas.xmlsoap.org/ws/2004/04/security/trust/RSTR/SCT
http://schemas.xmlsoap.org/ws/2004/04/security/trust/RST/SCT-Amend
http://schemas.xmlsoap.org/ws/2004/04/security/trust/RSTR/SCT-Amend
アプリケーション固有のヘッダーと本文データから情報が削除されない
WCF では、アプリケーション固有のヘッダー (クエリ文字列など) または本文データ (クレジット カード番号など) の個人情報は追跡されません。
メッセージ ログがオンの場合、アプリケーション固有のヘッダーおよび本文情報の個人情報がログに表示される場合があります。 ここでも、アプリケーション 配置者は、構成ファイルとログ ファイルに ACL を設定する役割を担います。 また、この情報を表示したくない場合はログ記録をオフにしたり、ログ記録後にログ ファイルからこの情報を除外したりすることもできます。
サービス モデルのトレース
サービス モデル トレース ソース (System.ServiceModel) を使用すると、メッセージ処理に関連するアクティビティとイベントのトレースが可能になります。 この機能では、 System.Diagnosticsの .NET Framework 診断機能が使用されます。 MessageLogging プロパティと同様に、場所とその ACL は、.NET Framework アプリケーション構成ファイルを使用してユーザーが構成できます。 メッセージ ログと同様に、管理者がトレースを有効にすると、常にファイルの場所が構成されます。したがって、管理者は ACL を制御します。
メッセージがスコープ内にある場合、トレースにはメッセージ ヘッダーが含まれます。 前のセクションのメッセージ ヘッダーで潜在的な個人情報を非表示にする場合と同じ規則が適用されます。以前に識別された個人情報は、トレース内のヘッダーから既定で削除されます。 潜在的な個人情報をログに記録するには、マシン管理者とアプリケーション 展開者の両方が構成を変更する必要があります。 ただし、アプリケーション固有のヘッダーに含まれる個人情報はトレースに記録されます。 アプリケーション 配置ツールは、構成ファイルとトレース ファイルに ACL を設定する役割を担います。 また、トレースを無効にしてこの情報を非表示にしたり、ログに記録された後にトレース ファイルからこの情報を除外したりすることもできます。
ServiceModel トレースの一部として、一意の ID (アクティビティ ID と通常は GUID) は、メッセージがインフラストラクチャのさまざまな部分を通過するにつれて、さまざまなアクティビティをリンクします。
カスタム トレース リスナー
メッセージ ログとトレースの両方に対して、カスタム トレース リスナーを構成できます。このリスナーは、ネットワーク上のトレースとメッセージを (たとえば、リモート データベースに) 送信できます。 アプリケーション 配置ツールは、カスタム リスナーを構成するか、ユーザーがこれを行えるようにする役割を担います。 また、リモートの場所で公開される個人情報と、この場所に ACL を適切に適用する責任も負います。
IT プロフェッショナル向けのその他の機能
WCF には、WMI (Windows に付属) を介して WCF インフラストラクチャ構成情報を公開する WMI プロバイダーがあります。 既定では、WMI インターフェイスは管理者が使用できます。
WCF 構成では、.NET Framework 構成メカニズムが使用されます。 構成ファイルはコンピューターに格納されます。 アプリケーション開発者と管理者は、アプリケーションの要件ごとに構成ファイルと ACL を作成します。 構成ファイルには、エンドポイント アドレスと証明書ストア内の証明書へのリンクを含めることができます。 証明書を使用してアプリケーション データを提供し、アプリケーションで使用される機能のさまざまなプロパティを構成できます。
WCF では、 FailFast メソッドを呼び出すことによって、.NET Framework プロセス ダンプ機能も使用します。
IT プロフェッショナル ツール
WCF には、Windows SDK に付属する次の IT プロフェッショナル ツールも用意されています。
SvcTraceViewer.exe
ビューアーには、WCF トレース ファイルが表示されます。 ビューアーには、トレースに含まれている情報が表示されます。
SvcConfigEditor.exe
エディターを使用すると、ユーザーは WCF 構成ファイルを作成および編集できます。 エディターには、構成ファイルに含まれている情報が表示されます。 テキスト エディターを使用して同じタスクを実行できます。
ServiceModel_Reg
このツールを使用すると、ユーザーは ServiceModel のマシンへのインストールを管理できます。 このツールは、実行時にコンソール ウィンドウにステータス メッセージを表示し、そのプロセスで WCF インストールの構成に関する情報を表示できます。
WSATConfig.exe と WSATUI.dll
これらのツールを使用すると、IT プロフェッショナルは WCF で相互運用可能な WS-AtomicTransaction ネットワーク サポートを構成できます。 ツールは、レジストリに格納されている最も一般的に使用される WS-AtomicTransaction 設定の値をユーザーが表示および変更できるようにします。
クロスカット機能
次の機能は横断的です。 つまり、上記の機能のいずれかで構成できます。
サービス フレームワーク
ヘッダーにはインスタンス ID を含めることができます。これは、メッセージを CLR クラスのインスタンスに関連付ける GUID です。
Web サービス記述言語 (WSDL) には、ポートの定義が含まれています。 各ポートには、エンドポイント アドレスと、アプリケーションで使用されるサービスを表すバインディングがあります。 WSDL の公開は、構成を使用して無効にすることができます。 コンピューターに情報は保持されません。