Поделиться через


Сведения о конфиденциальности Windows Communication Foundation

Корпорация Майкрософт стремится защитить конфиденциальность конечных пользователей. При создании приложения с помощью Windows Communication Foundation (WCF) версии 3.0 ваше приложение может повлиять на конфиденциальность конечных пользователей. Например, приложение может явным образом собирать контактные данные пользователей или запрашивать/отправлять информацию через Интернет на свой веб-сайт. Если в приложение внедряется технология Майкрософт, у этой технологии может быть свое поведение, которое способно повлиять на конфиденциальность данных приложения. WCF не отправляет какие-либо сведения в корпорацию Майкрософт из приложения, если вы или конечный пользователь не решите отправить его нам.

WCF кратко

WCF — это платформа распределенного обмена сообщениями с помощью Microsoft платформа .NET Framework, которая позволяет разработчикам создавать распределенные приложения. Сообщения, обмен которыми осуществляется между двумя приложениями, содержат информацию заголовка и тела сообщения.

Заголовки могут содержать информацию о маршрутизации сообщений, безопасности, транзакциях, а также другие сведения в зависимости от служб, используемых приложением. Как правило, по умолчанию выполняется шифрование сообщений. Единственным исключением является использование привязки BasicHttpBinding, которая была создана для использования с небезопасными веб-службами прежних версий. Разработчик приложения отвечает за окончательную версию приложения. Сообщения в тексте SOAP содержат данные, относящиеся к приложению; Однако эти данные, такие как определяемые приложением персональные данные, можно защитить с помощью функций шифрования WCF или конфиденциальности. В следующих разделах описаны возможности, которые теоретически могут повлиять на конфиденциальность.

Обмен сообщениями

Каждое сообщение WCF содержит заголовок адреса, указывающий назначение сообщения и место, где должен идти ответ.

Компонент адреса конечной точки является универсальным кодом ресурса (URI), определяющим конечную точку. Адрес может быть сетевым или логическим. Адрес может содержать имя компьютера (имя узла, полное доменное имя) и IP-адрес. Адрес конечной точки также может содержать глобальный уникальный идентификатор (GUID) или коллекцию таких идентификаторов для временной адресации, используемой для распознавания каждого адреса. Каждое сообщение содержит идентификатор сообщения, который является глобальным уникальным идентификатором. Эта возможность соответствует стандарту ссылок WS-Addressing.

Уровень обмена сообщениями WCF не записывает личную информацию на локальный компьютер. Однако возможно их распространение на уровне сети, если разработчик создал службу, раскрывающую такую информацию (например за счет указания имени пользователя в имени конечной точки или включения персональных данных в язык описания веб-служб конечной точки, но не требуя при этом от клиентов использования HTTPS для доступа к WSDL). Кроме того, если разработчик запускает средство служебной программы метаданных ServiceModel (Svcutil.exe) для конечной точки, которая предоставляет личную информацию, выходные данные средства могут содержать эти сведения, а выходной файл записывается на локальный жесткий диск.

Размещение на компьютере

Функция размещения в WCF позволяет приложениям запускать по запросу или включать общий доступ к портам между несколькими приложениями. Приложение WCF можно разместить в службы IIS (IIS), аналогично ASP.NET.

При размещении не раскрывается какая-либо особая информация в сети, и данные не сохраняются на компьютере.

Безопасность сообщений

Безопасность WCF предоставляет возможности безопасности для приложений обмена сообщениями. Предусмотренные функции безопасности включают в себя проверку подлинности и авторизацию.

Проверка подлинности осуществляется путем передачи учетных данных между клиентами и службами. Проверка подлинности может выполняться либо через безопасность на транспортном уровне, либо через безопасность на уровне сообщений SOAP следующим образом.

  • При безопасности на уровне сообщений SOAP проверка подлинности осуществляется с помощью учетных данных, например имен пользователей/паролей, сертификатов X.509, билетов Kerberos и маркеров SAML, каждый из которых может содержать персональные данные в зависимости от издателя.

  • С помощью безопасности транспорта проверка подлинности осуществляется посредством таких обычных механизмов проверки подлинности транспорта, как схемы проверки подлинности HTTP (обычная, дайджест, Negotiate, Integrated Windows Authorization, NTLM, без проверки и анонимная) и проверка подлинности на основе формы.

Результатом проверки подлинности может стать безопасный сеанс, осуществляемый между взаимодействующими конечными точками. Сеанс определяется идентификатором GUID, который существует на протяжении всего времени существования сеанса безопасности. В следующей таблице указано, что и где хранится.

Data Хранилище
Учетные данные представления, например имена пользователей, сертификаты X.509, маркеры Kerberos и ссылки на учетные данные. Стандартные механизмы управления учетными данными в Windows, например хранилище сертификатов Windows.
Информация о членстве пользователя, например имена пользователей и пароли. ASP.NET поставщиков членства.
Данные идентификации о службе, используемой для проверки подлинности службы для клиентов. Адрес конечной точки службы.
Сведения о вызывающем объекте. Журналы аудита.

Аудит

Во время аудита регистрируются события успешной и неудачной проверки подлинности и авторизации. В журналах аудита содержатся следующие данные: URI службы, URI действия и идентификация вызывающего объекта.

Во время аудита также регистрируется событие, когда администратор изменяет конфигурацию ведения журнала сообщений (включает или выключает), поскольку при ведении журнала сообщений данные, относящиеся к приложению, могут указываться в заголовках и телах. Для Windows XP запись регистрируется в журнале событий приложения. Для Windows Vista и Windows Server 2003 запись регистрируется в журнале событий безопасности.

Транзакции

Функция транзакций предоставляет транзакционные службы приложению WCF.

Заголовки транзакций, используемые при распространении транзакций, могут содержать идентификаторы транзакций или идентификаторы зачисления, которые являются идентификаторами GUID.

Возможность транзакций использует диспетчер транзакций координатора распределенных транзакций (Майкрософт) (компонент Windows) для управления состоянием транзакций. По умолчанию взаимодействие между диспетчерами транзакций шифруется. Диспетчеры транзакций могут вносить в журнал ссылки на конечные точки, идентификаторы транзакций и идентификаторы зачисления как часть их устойчивого состояния. Время существования этого состояния определяется временем существования файла журнала диспетчера транзакций. Этот журнал используется и обслуживается службой MSDTC.

Возможность транзакций реализует стандарты транзакций WS-Coordination и WS-Atomic.

Надежные сеансы

Надежные сеансы в WCF обеспечивают передачу сообщений при сбое транспорта или посредника. Они обеспечивают точную передачу сообщений даже при отключении базового транспорта (например подключение TCP в беспроводной сети) или потере сообщения (удаление прокси-сервером HTTP исходящего или входящего сообщения). Надежные сеансы также восстанавливают измененный порядок передачи сообщений (что может произойти в случае многопутевой маршрутизации), сохраняя порядок, в котором были отправлены сообщения.

Надежные сеансы реализованы с использованием протокола WS-ReliableMessaging (WS-RM). Они добавляют заголовки WS-RM, содержащие информацию о сеансе, которая используется для определения всех сообщений, связанных с определенным надежным сеансом. У каждого сеанса WS-RM имеется идентификатор, являющийся идентификатором GUID.

Персональные данные не сохраняются на компьютере конечного пользователя.

Каналы в очереди

В очередях хранятся сообщения отправляющего приложения от имени получающего приложения и позднее перенаправляющие эти сообщения получающему приложению. Они обеспечивают передачу сообщений из отправляющих в получающие приложения, когда, например, получающее приложение служит посредником. WCF обеспечивает поддержку очереди с помощью очереди сообщений Майкрософт (MSMQ) в качестве транспорта.

Функция очереди в каналах не добавляет заголовки в сообщение. Вместо этого она создает сообщение очереди сообщений с соответствующим набором свойств этого сообщения и вызывает методы очереди сообщений, чтобы разместить сообщение в очереди сообщений. Очередь сообщений является необязательным компонентом в поставляемой ОС Windows.

Никакие сведения не сохраняются на компьютере конечного пользователя функцией каналов очередей, так как она использует очередь сообщений в качестве инфраструктуры очередей.

Интеграция COM+

Эта функция упаковывает существующие функции COM и COM+ для создания служб, совместимых со службами WCF. Эта функция не использует определенные заголовки и не сохраняет данные на компьютере конечного пользователя.

Moniker службы COM

Это обеспечивает неуправляемую оболочку для стандартного клиента WCF. В этой возможности по сети не передаются специальные заголовки, и она не хранит данные на компьютере.

Одноранговый канал

Одноранговый канал позволяет разрабатывать многопартийные приложения с помощью WCF. Многопользовательский обмен сообщениями возникает в контексте сетки. Сетки определяются именем, с которым узел может соединиться. Каждый узел в одноранговом канале создает прослушиватель TCP на указанном пользователем порту и устанавливает подключения к другим узлам в сетке, чтобы обеспечить устойчивую работу. Чтобы подключиться к другим узлам в сетке, узлы также обмениваются некоторыми данными, включая адрес прослушивателя и IP-адреса компьютера, с другими узлами в сетке. Сообщения, отправляемые по сетке, могут содержать сведения о безопасности, принадлежащие отправителю, с целью предотвращения спуфинга и подделки сообщений.

Личная информация не хранится на компьютере конечного пользователя.

ИТ-специалист

Трассировка

Функция диагностика сообщений инфраструктуры WCF, передаваемых через уровни транспортной и служебной модели, а также действия и события, связанные с этими сообщениями. По умолчанию эта функция отключена. Он включен с помощью файла конфигурации приложения, а поведение трассировки может быть изменено с помощью поставщика WMI WCF во время выполнения. Во включенном состоянии инфраструктура трассировки выдает настроенным прослушивателям диагностическую трассировку, содержащую сообщения, действия и события обработки. Формат и расположение выходных данных определяются выбранной администратором конфигурацией прослушивателя, однако, как правило, это файл в формате XML. Администратор отвечает за настройку списка управления доступом (ACL) для файлов трассировки. В частности, в случае размещения в системе Windows Activation System (WAS) администратор должен убедиться, что файлы не предоставляются с общедоступного виртуального корневого каталога, за исключением, если это сделано намеренно.

Существует два типа трассировки: ведение журналов сообщений и диагностическая трассировка модели служб, описание см. в следующем разделе. Каждый тип настраивается через собственный источник трассировки: MessageLogging и System.ServiceModel. Оба этих источника трассировки для ведения журналов собирают данные, являющиеся локальными для приложения.

Ведение журнала сообщений

Источник трассировки для ведения журнала сообщений (MessageLogging) позволяет администратору вносить в журнал передаваемые в системе сообщения. С помощью конфигурации пользователь может выбрать, следует ли вносить в журнал сообщения целиком или только их заголовки, либо вносить их в журнал на транспортном уровне или уровне модели службы, либо включать неправильно сформированные сообщения. Кроме того, пользователь может настроить фильтрацию, чтобы ограничить внесение сообщений в журнал определенными типами.

По умолчанию ведение журнала сообщений отключено. Администратор локального компьютера может запретить администратору на уровне приложения включение ведения журнала сообщений.

Ведение журнала зашифрованных и расшифрованных сообщений

Зашифрованные или расшифрованные сообщения вносятся в журнал в соответствии со следующими условиями.

Сообщения журнала транспорта, полученные и отправленные на уровне транспорта. Эти сообщения содержат все заголовки и могут быть зашифрованы перед отправкой по сети и во время получения.

Если сообщения зашифрованы перед отправкой по сети и во время получения, они вносятся в журнал как зашифрованные. Исключением является использование протокола безопасности (HTTPS): в этом случае они вносятся в журнал расшифрованными перед отправкой и после получения, даже если они зашифровываются в сети.

Журналы журналов служб, полученные или отправленные на уровне модели обслуживания, после того как обработка заголовка канала произошла непосредственно перед вводом пользовательского кода и после ввода кода пользователя.

Сообщения, внесенные в журнал на этом уровне, расшифровываются, даже если они были защищены и зашифрованы в сети.

Неправильно сформированные сообщения журнала сообщений записывают сообщения, которые инфраструктура WCF не может понять или обработать.

Сообщения вносятся в журнал «как есть», т.е. либо зашифрованными, либо расшифрованными.

При входе сообщений в расшифрованную или незашифрованную форму 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 :

<Утверждение MajorVersion="1" MinorVersion="1" AssertId="[ID]" Issuer="[string]" IssueInstant="[dateTime]"

<Условия NotBefore="[dateTime]" NotOnOrAfter="[dateTime]">AudienceRestrictionCondition Audience[uri]</>Audience+ </AudienceRestrictionCondition* <DoNotCacheCondition>>>< />* <-- абстрактном базовом типе <Condition /*><

</Условия>? <Советы AssertIDReference[ID]</AssertIDReference>>* <Утверждение>[утверждение]</Утверждение>* [любой]* </Совет>?>< <-- оператор "Абстрактные базовые типы <" />* <SubjectStatement><Subject> <NameIdentifierNameQualifier="[string]"?Format="[uri]"?>[string]</NameIdentifier>?<SubjectConfirmation><ConfirmationMethod>[anyUri]</ConfirmationMethod>+ <SubjectConfirmationData>[any]</SubjectConfirmationData>? <ds:KeyInfo>...</ds:KeyInfo>? </SubjectConfirmation>? </Subject/SubjectStatement><>*

<AuthenticationStatement AuthenticationMethod="[uri]" AuthenticationInstant="[dateTime]"

[Тема] <SubjectLocalityIPAddress="[string]"?DNSAddress="[string]"?/>?<AuthorityBinding AuthorityKind="[QName]" Location="[uri]" Binding="[uri]" />* </AuthenticationStatement* <AttributeStatement>> [Subject] <AttributeNameName="[string]" AttributeNamespace="[uri]"

<AttributeValue>[any]</AttributeValue>+</Attribute>+ </AttributeStatement>* <AuthorizationDecisionStatement Resource="[uri]" Decision="[Permit|Запрет |Недетерминированное]"

[Тема] <Action Namespace="[uri]">[string]</Action>+ <Evidence><AssertIDReference[ID]</AssertIDReference>>+ <Утверждение>[утверждение]</Assert>+ </Evidence>? </AuthorizationDecisionStatement>* </Assert>

Сведения, удаленные из тел сообщений при расшифровке или незашифрованных сообщениях ведения журнала

Как описано ранее, 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 не отслеживает личную информацию в заголовках для конкретных приложений (например, строк запроса) или данных тела (например, номер кредитной карта).

Когда включено ведение журнала сообщений, персональные данные в информации заголовков и тел, относящихся к приложению, могут отображаться в журналах. И вновь, специалист, выполняющий развертывание приложения, отвечает за настройку элементов управления доступом для файлов конфигурации и журналов. Они также могут отключить ведение журнала, если они не хотят, чтобы эти сведения были видимы, или отфильтровать эти сведения из файлов журнала после его записи.

Трассировка модели службы

Источник трассировки модели службы (System.ServiceModel) обеспечивает трассировку действий и событий, относящихся к обработке сообщений. Эта возможность использует диагностические возможности .NET Framework из System.Diagnostics. Аналогично свойству MessageLogging, ее расположение и элемент управления доступом настраиваются пользователем с помощью файлов конфигурации приложения на базе .NET Framework. Как и при ведении журнала сообщений, расположение файла всегда настраивается при включении администратором трассировки. Таким образом, администратор управляет элементом управления доступом.

Трассировки содержат заголовки сообщений, когда сообщения находятся в области действия. Применяются аналогичные правила скрытия потенциально персональных данных в заголовках сообщений, описанные в предыдущем разделе: ранее определенные персональные данные по умолчанию удаляются из заголовков в трассировках. Администратор компьютера и специалист, выполняющий развертывание приложения, должны изменить конфигурацию, чтобы вносить в журнал потенциально персональные сведения. Однако персональные данные в заголовках, относящихся к приложению, вносятся в журнал в трассировках. Специалист, выполняющий развертывание приложения, отвечает за настройку элементов управления доступом в файлах конфигурации и трассировки. Они также могут отключить трассировку, чтобы скрыть эти сведения или отфильтровать эти сведения из файлов трассировки после его записи.

Являясь частью трассировки ServiceModel, уникальные идентификаторы (называемые идентификаторами действий или, как правило, глобальными уникальными идентификаторами) связывают различные действия друг с другом как поток сообщений, проходящий через разные области инфраструктуры.

Пользовательские прослушиватели трассировки

Для ведения журнала сообщений и трассировки можно настроить пользовательский прослушиватель трассировки, который может отправлять трассировки и сообщения по сети (например в удаленную базу данных). Специалист, выполняющий развертывание приложения, отвечает за настройку пользовательских прослушивателей или разрешение пользователям самостоятельно ее настраивать. Они также отвечают за любую личную информацию, предоставленную в удаленном расположении, и правильно применять списки управления доступом к этому расположению.

Другие возможности ИТ-специалистов

WCF имеет поставщик WMI, предоставляющий сведения о конфигурации инфраструктуры WCF через WMI (поставляется с Windows). По умолчанию интерфейс WMI доступен для администраторов.

Конфигурация WCF использует механизм конфигурации платформа .NET Framework. Файлы конфигурации хранятся на компьютере. Разработчик приложения и администратор создают файлы конфигурации и элемент правления доступом для каждого требования приложения. Файл конфигурации может содержать адреса конечных точек и ссылки на сертификаты в хранилище сертификатов. Сертификаты можно использовать, чтобы предоставить данные приложения для настройки различных свойств возможностей, используемых приложением.

WCF также использует функциональные возможности дампа процесса платформа .NET Framework путем вызова FailFast метода.

СРЕДСТВА ИТ-специалистов

WCF также предоставляет следующие ИТ-инструменты, которые предоставляются в пакете SDK для Windows.

SvcTraceViewer.exe

Средство просмотра отображает файлы трассировки WCF. Средство просмотра позволяет просмотреть информацию, содержащуюся в трассировках.

SvcConfigEditor.exe

Редактор позволяет пользователю создавать и изменять файлы конфигурации WCF. Редактор показывает всю информацию, содержащуюся в файлах конфигурации. Аналогичную задачу можно выполнить с помощью текстового редактора.

ServiceModel_Reg

Это средство позволяет пользователю управлять установкой ServiceModel на компьютере. Средство отображает сообщения о состоянии в окне консоли при запуске и в процессе могут отображаться сведения о конфигурации установки WCF.

WSATConfig.exe и WSATUI.dll

Эти средства позволяют ИТ-специалистам настраивать поддержку сети WS-AtomicTransaction в WCF. Средство отображает и позволяет пользователю изменять значения наиболее часто используемых параметров WS-AtomicTransaction, хранящихся в реестре.

Перекрестные функции

Следующие функции являются перекрестными. Это означает, что их можно сочетать с любыми указанными выше функциями.

Платформа служб

Заголовки могут содержать идентификатор экземпляра, который представляет собой глобальный уникальный идентификатор, связывающий сообщение с экземпляром класса CLR.

Язык описания веб-служб (WSDL) содержит определение порта. У каждого порта имеется адрес конечной точки и привязка, представляющая службы, используемые приложением. Предоставление WSDL можно отключить в конфигурации. Информация на компьютере не сохраняется.

См. также