Windows Communication Foundation のプライバシー情報 (バージョン 3.0)
マイクロソフトは、エンド ユーザーのプライバシー保護に力を入れています。Windows Communication Foundation (WCF) (バージョン 3.0) を使用してアプリケーションを作成した場合、アプリケーションがエンド ユーザーのプライバシーに影響する可能性があります。たとえば、アプリケーションが明示的にユーザーの連絡先情報を収集することがあります。つまり、アプリケーションがインターネットを経由して Web サイトに情報を要求したり、情報を送信したりすることがあります。マイクロソフトの技術をアプリケーションに組み込んでいる場合、その技術にプライバシーに影響を与える可能性がある独自の動作が存在することがあります。WCF では、アプリケーションの作成者またはエンド ユーザーが選択しない限り、アプリケーションからマイクロソフトに情報を送信することはありません。
WCF の概要
WCF とは、Microsoft .NET Framework を使用した分散メッセージング フレームワークで、これによって開発者は、分散アプリケーションを作成できます。2 つのアプリケーション間で交換されるメッセージには、ヘッダーと本文情報が入ります。
ヘッダーには、アプリケーションが使用するサービスに応じて、メッセージ ルーティング、セキュリティ情報、トランザクションなどの情報が追加されます。メッセージは、通常、既定で暗号化されます。ただし、BasicHttpBinding を使用する場合は例外です。このバインディングは、セキュリティで保護されていない従来の Web サービスで使用するために設計されています。アプリケーションの設計者であるユーザーには最終設計に対する責任があります。SOAP 本文のメッセージには、アプリケーション固有のデータが入りますが、アプリケーション定義の個人情報などのデータは、WCF の暗号化機能または機密性保護機能を使用してセキュリティで保護できます。次のセクションでは、プライバシーに影響を与える可能性がある機能について説明します。
メッセージング
各 WCF メッセージには、メッセージの送信先と応答の返信先を指定するアドレス ヘッダーがあります。
エンドポイント アドレスのアドレス構成要素は、エンドポイントを識別する URI (Uniform Resource Identifier) です。このアドレスは、ネットワーク アドレスまたは論理アドレスのいずれかです。アドレスには、コンピュータ名 (ホスト名、完全修飾ドメイン名) と IP アドレスを指定できます。また、エンドポイント アドレスには、グローバル一意識別子 (GUID)、または各アドレスを識別するために使用される一時アドレス指定用に GUID のコレクションを入れることもできます。各メッセージには、GUID 形式のメッセージ ID があります。この機能は、WS-Addressing 参照仕様に準拠します。
WCF メッセージング レイヤは個人情報をローカル コンピュータに書き込みません。ただし、サービスの開発者が個人情報を公開するサービスを作成した場合は、ネットワーク レベルで個人情報を公開することがあります。このような例として、エンドポイント名に個人名を使用している場合や、エンドポイントの Web サービス記述言語に個人情報を追加しても、https を使用して WSDL にアクセスすることをクライアントに要求しない場合などがあります。また、個人情報を公開するエンドポイントに対してService Model Metadata Utility Tool (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 のアプリケーションにトランザクション サービスを提供します。
トランザクションの伝達で使用されるトランザクション ヘッダーには、GUID 形式のトランザクション ID または登録リスト ID を追加できます。
トランザクション機能では、Microsoft 分散トランザクション コーディネータ (MSDTC) トランザクション マネージャ (Windows コンポーネントの 1 つ) を使用して、トランザクション状態を管理します。既定では、トランザクション マネージャ間の通信は暗号化されます。トランザクション マネージャは、エンドポイント参照、トランザクション ID、および登録リスト ID を永続状態の一部としてログに記録できます。この状態の有効期間は、トランザクション マネージャのログ ファイルの有効期間によって決まります。MSDTC サービスがこのログを所有し、管理します。
トランザクション機能は、WS-Coordination 仕様と WS-AtomicTransaction 仕様を実装します。
信頼できるセッション
WCF の信頼できるセッションは、トランスポートまたは中継局のエラーが発生した場合でもメッセージの転送を実現します。信頼できるセッションは、基になるトランスポート (たとえば、ワイヤレス ネットワーク上の TCP 接続) が切断している場合やメッセージを紛失した場合 (HTTP プロキシでの送受信メッセージの破棄) でも、正確に 1 回のメッセージ転送を実行します。また、メッセージが送信された順序を維持するので、メッセージの並べ替え (マルチパス ルーティングの場合に発生する可能性がある) を回復できます。
信頼できるセッションは、WS-ReliableMessaging (WS-RM) プロトコルを使用して実装されています。これによって追加される WS-RM ヘッダーには、特定の信頼できるセッションに関連付けられたすべてのメッセージの識別に使用されるセッション情報が含まれています。各 WS-RM セッションには、GUID 形式の識別子があります。
エンド ユーザーのコンピュータに保持される個人情報はありません。
キューに置かれたチャネル
キューは、送信元アプリケーションが送ったメッセージを受信側アプリケーションに代わって保存しておき、後で受信側アプリケーションに転送します。受信側アプリケーションが一時的な場合なども、キューによって、送信元アプリケーションから受信側アプリケーションへのメッセージの転送を確実に実行できます。WCF では、トランスポートとして Microsoft メッセージ キュー (MSMQ) を使用することによってキューをサポートします。
キューに置かれたチャネル機能では、ヘッダーをメッセージに追加しません。代わりに、適切なメッセージ キューのメッセージ プロパティ セットを備えたメッセージ キューのメッセージを作成し、メッセージ キューのメソッドを呼び出して、メッセージ キューのキューにメッセージを追加します。メッセージ キューは、Windows に付属しているオプション コンポーネントです。
キューに置かれたチャネル機能では、キュー インフラストラクチャとしてメッセージ キューを使用するので、この機能によってエンド ユーザーのコンピュータに保持される情報はありません。
COM+ 統合
この機能は、WCF のサービスと互換性のあるサービスを作成するために既存の COM 機能と COM+ 機能をラップします。この機能は、特定のヘッダーを使用せず、エンド ユーザーのコンピュータにデータを保持しません。
COM サービス モニカ
この機能は、標準の WCF クライアントにアンマネージ ラッパーを提供します。この機能は、ネットワーク上で特定のヘッダーを使用せず、コンピュータにデータを保持しません。
ピア チャネル
ピア チャネルによって、WCF を使用したマルチパーティ アプリケーションの展開が可能になります。マルチパーティ メッセージングはメッシュのコンテキストで実行されます。メッシュは、ノードが参加できる名前によって識別されます。ピア チャネル内の各ノードは、ユーザー指定のポートで TCP リスナを作成し、メッシュ内の他のノードとの接続を確立することによって、回復力を確保します。メッシュ内の他のノードに接続するため、ノードは、リスナ アドレスやコンピュータの IP アドレスなど一部のデータをメッシュ内の他のノードと交換します。メッシュ内で送信されるメッセージに送信者に関するセキュリティ情報を入れ、メッセージのなりすましと改ざんを防止することができます。
エンド ユーザーのコンピュータに個人情報は格納されません。
IT 専門家向けの機能
トレース
WCF インフラストラクチャの診断機能は、トランスポート レイヤとサービス モデル レイヤを経由するメッセージ、およびこのメッセージに関連付けられたアクティビティとイベントをログに記録します。この機能は既定で無効になっています。この機能はアプリケーションの構成ファイルを使用して有効にし、トレース動作は、実行時に WCF WMI プロバイダを使用して変更できます。有効にすると、トレース インフラストラクチャは、メッセージ、アクティビティ、および処理イベントを含んだ診断トレースを構成済みリスナに出力します。出力の形式と場所は、管理者が選択するリスナ構成によって決まりますが、通常は XML 形式のファイルです。管理者は、トレース ファイルでアクセス制御リスト (ACL) を設定する必要があります。特に、Windows アクティベーション システム (WAS) でホストするとき、管理者は、ファイルがパブリック仮想ルート ディレクトリから提供されていないことを確認する必要があります (提供されることを望まない場合)。
トレースには、メッセージ ログとサービス モデル診断トレースの 2 種類があります。この 2 種類のトレースについて次のセクションで説明します。この 2 つのトレースは、それぞれ MessageLogging と System.ServiceModel というトレース ソースから構成されます。このログ トレース ソースは両方とも、アプリケーションにローカルなデータを取り込みます。
メッセージ ログ
メッセージ ログのトレース ソース (MessageLogging) によって管理者は、システムを通過するメッセージをログに記録できます。ユーザーは構成によって、メッセージ全体またはメッセージ ヘッダーだけをログに記録するかどうか、トランスポート レイヤまたはサービス モデル レイヤでログに記録するかどうか、および形式が正しくないメッセージをログに記録するかどうかを設定できます。また、ユーザーは、フィルタ処理を設定して、ログに記録するメッセージを制限できます。
既定では、メッセージ ログは無効になっています。ローカル コンピュータの管理者は、アプリケーション レベルの管理者がメッセージ ログを有効にするのを防止できます。
暗号化および復号化されるメッセージ ログ
メッセージは、以下に説明するようにログに記録され、暗号化および復号化されます。
トランスポート ログ
トランスポート レベルで送受信されるメッセージをログに記録します。このメッセージは、すべてのヘッダーを含んでいて、ネットワーク上に送信される前と受信されるときに暗号化できます。メッセージがネットワーク上に送信される前と受信されるときに暗号化される場合、そのメッセージは暗号化されたままログに記録されます。例外は、セキュリティ プロトコル (https) を使用する場合です。メッセージは、ネットワーク上で暗号化されている場合でも、送信前と受信後は復号化された状態でログに記録されます。
サービス ログ
チャネル ヘッダー処理が実行された後、ユーザー コードを入力する直前と直後に、サービス モデル レベルで送受信されるメッセージをログに記録します。このレベルでログに記録されるメッセージは、ネットワーク上でセキュリティ保護され、暗号化されている場合でも復号化されます。
形式が正しくないメッセージのログ
WCF インフラストラクチャが認識できないまたは処理できないメッセージをログに記録します。メッセージは、暗号化の有無を問わず、そのままの状態でログに記録されます。
メッセージが復号化された状態または暗号化されていない状態でログに記録される場合、WCF では既定で、メッセージをログに記録する前にセキュリティ キーと個人情報の可能性がある情報をメッセージから削除します。次のセクションでは、削除される情報と削除が実行される状況について説明します。キーと個人情報の可能性がある情報をログに記録するには、コンピュータの管理者とアプリケーションを配置するユーザーの両方が、所定の構成操作を実行して既定の動作を変更する必要があります。
復号化されたまたは暗号化されていないメッセージをログに記録するときにメッセージ ヘッダーから削除される情報
メッセージが復号化された状態または暗号化されていない状態でログに記録される場合、既定ではメッセージがログに記録される前に、セキュリティ キーと個人情報の可能性がある情報がメッセージ ヘッダーとメッセージ本文から削除されます。WCF によってキーおよび個人情報の可能性がある情報と見なされる部分を次のリストに示します。
削除されるキー :
- xmlns:wst="https://schemas.xmlsoap.org/ws/2004/04/trust" および xmlns:wst="https://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" の場合、下記の太字の項目が削除されます。
<Assertion
MajorVersion="1"
MinorVersion="1"
AssertionId="[ID]"
Issuer="[string]"
IssueInstant="[dateTime]"
>
<Conditions NotBefore="[dateTime]" NotOnOrAfter="[dateTime]">
<AudienceRestrictionCondition>
<Audience>[uri]</Audience>+
</AudienceRestrictionCondition>*
<DoNotCacheCondition />*
<!-- abstract base type
<Condition />*
-->
</Conditions>?
<Advice>
<AssertionIDReference>[ID]</AssertionIDReference>*
<Assertion>[assertion]</Assertion>*
[any]*
</Advice>?
<!-- Abstract base types
<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]"
>
[Subject]
<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|Deny|Indeterminate]"
>
[Subject]
<Action Namespace="[uri]">[string]</Action>+
<Evidence>
<AssertionIDReference>[ID]</AssertionIDReference>+
<Assertion>[assertion]</Assertion>+
</Evidence>?
</AuthorizationDecisionStatement>*
</Assertion>
復号化されたまたは暗号化されていないメッセージをログに記録するときにメッセージ本文から削除される情報
前述のとおり、WCF では、復号化されたまたは暗号化されていないメッセージをログに記録する場合、キーと既知の可能性がある個人情報をメッセージ ヘッダーから削除します。それに加えて、WCF では、次のリストに示す、キー交換に関係するセキュリティ メッセージを記述する本文要素とアクションについて、キーと既知の可能性がある個人情報をメッセージ本文から削除します。
次の名前空間の場合 :
xmlns:wst="https://schemas.xmlsoap.org/ws/2004/04/trust" と xmlns:wst="https://schemas.xmlsoap.org/ws/2005/02/trust" (有効なアクションがない場合など)
キー交換を伴うこの本文要素について情報が削除されます。
wst:RequestSecurityToken
wst:RequestSecurityTokenResponse
wst:RequestSecurityTokenResponseCollection
次の各アクションについても情報が削除されます。
https://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue
https://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Issue
https://schemas.xmlsoap.org/ws/2005/02/trust/RST/Renew
https://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Renew
https://schemas.xmlsoap.org/ws/2005/02/trust/RST/Cancel
https://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Cancel
https://schemas.xmlsoap.org/ws/2005/02/trust/RST/Validate
https://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Validate
https://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT
https://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT
https://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Amend
https://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Amend
https://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Renew
https://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Renew
https://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Cancel
https://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Cancel
https://schemas.xmlsoap.org/ws/2004/04/security/trust/RST/SCT
https://schemas.xmlsoap.org/ws/2004/04/security/trust/RSTR/SCT
https://schemas.xmlsoap.org/ws/2004/04/security/trust/RST/SCT-Amend
https://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 には、Windows に付属の WMI から WCF インフラストラクチャ構成情報を公開する WMI プロバイダが用意されています。既定では、WMI インターフェイスは管理者が利用できます。
WCF 構成では、.NET Framework 構成のしくみを使用します。構成ファイルはコンピュータに保存されます。アプリケーション開発者と管理者が、アプリケーションの要件に応じて構成ファイルと ACL を作成します。構成ファイルには、エンドポイント アドレスと証明書ストア内の証明書へのリンクを入れることができます。証明書を使用してアプリケーション データを提供し、アプリケーションによって使用される機能の各プロパティを構成することができます。
WCF にはパフォーマンス カウンタがあり、Class.Interface.Method@<endpointAddress> という形式で表示されます。
また、WCF では、FailFast メソッドを呼び出すことによって、.NET Framework のプロセス ダンプ機能を使用します。
IT 専門家のツール
WCF には、次の IT 専門家向けのツールも用意されており、Windows SDK に同梱されています。
SvcTraceViewer.exe
このビューアは、WCF トレース ファイルを表示します。このビューアは、トレースに含まれているすべての情報を表示します。
SvcConfigEditor.exe
このエディタでは、WCF 構成ファイルを作成し、編集できます。このエディタは、構成ファイルに含まれているすべての情報を表示します。テキスト エディタでも同じ操作を実行できます。
ServiceModel_Reg
このツールでは、コンピュータ上の ServiceModel のインストールを管理できます。このツールは、実行時にコンソール ウィンドウにステータス メッセージを表示し、処理中に WCF インストールの構成に関する情報を表示できます。
WSATConfig.exe と WSATUI.dll
このツールによって、IT 専門家は WCF で相互運用可能な WS-AtomicTransaction ネットワーク サポートを構成できます。このツールは、レジストリに格納された最も一般的に使用される WS-AtomicTransaction 設定の値を表示し、ユーザーはこのツールを使用してその値を変更できます。
広範囲に使用できる機能
次の機能は広範囲に使用できます。つまり、前述の任意の機能と共に構成できます。
サービス フレームワーク
ヘッダーには、インスタンス ID を入れることができます。このインスタンス ID は、メッセージを CLR クラスのインスタンスに関連付ける GUID です。
Web サービス記述言語 (WSDL) には、ポートの定義が入ります。各ポートには、エンドポイント アドレス、およびアプリケーションが使用するサービスを表すバインディングがあります。WSDL の公開は、構成を使用して無効にできます。コンピュータに保持される情報はありません。
関連項目
その他の技術情報
Windows Communication Foundation
Windows Communication Foundation セキュリティ