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


Проблемы безопасности при ведении журналов сообщений

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

Вопросы безопасности

Регистрация конфиденциальных сведений

Windows Communication Foundation (WCF) не изменяет никакие данные в зависящих от приложения заголовках и теле сообщения. WCF также не отслеживает персональные данные в зависящих от приложения заголовках или теле сообщения.

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

Следующие советы помогут предотвратить непреднамеренное раскрытие содержимого файла журнала.

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

  • Выберите расширение файла, которое нельзя легко получить с помощью веб-запроса. Например, расширение XML безопасным не является. Список расширений, которые могут быть получены, можно найти в руководстве по администрированию Internet Information Services (IIS).

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

По умолчанию ключи и персональные данные (personally identifiable information, PII), такие как имя пользователя и пароль, не регистрируются трассировкой и не указываются в заносимых в журнал сообщениях. Администратор компьютера может, тем не менее, с помощью атрибута enableLoggingKnownPII в элементе machineSettings файла Machine.config разрешить приложениям, выполняющимся на компьютере, регистрировать известные персональные данные (PII). Следующая конфигурация показывает, как это сделать.

<configuration>
   <system.serviceModel>
      <machineSettings enableLoggingKnownPii="true"/>
   </system.serviceModel>
</configuration> 

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

<system.diagnostics>
  <sources>
      <source name="System.ServiceModel.MessageLogging"
        logKnownPii="true">
        <listeners>
                 <add name="messages"
                 type="System.Diagnostics.XmlWriterTraceListener"
                 initializeData="c:\logs\messages.svclog" />
          </listeners>
      </source>
    </sources>
</system.diagnostics>

Регистрация PII включена, только когда оба параметра имеют значение true. Такое сочетание из двух ключей позволяет регистрировать известные PII для каждого приложения.

ms730318.Important(ru-ru,VS.100).gif Примечание
В .NET Framework, версия 4 для флагов logEntireMessage и logKnownPii необходимо задать значение true в файле Web.config или файле App.config, чтобы включить регистрацию персональных данных, как показано в следующем примере: <system.serviceModel><messageLogging logEntireMessage="true" logKnownPii="true" ….

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

<system.diagnostics>
   <sources>
      <source name="System.ServiceModel.MessageLogging"
              logKnownPii="false">
              <listeners>
                 <add name="messages"
                      type="System.Diagnostics.XmlWriterTraceListener"
                      initializeData="c:\logs\messages.svclog" />
              </listeners>
            </source>
      <source name="System.ServiceModel" 
              logKnownPii="true">
              <listeners>
                 <add name="traces"
                      type="System.Diagnostics.XmlWriterTraceListener"
                      initializeData="c:\logs\traces.svclog" />
              </listeners>
      </source>
   </sources>
</system.diagnostics>

Если элемент <machineSettings enableLoggingKnownPii="Boolean"/>ConfigurationErrorsException присутствует за пределами файла Machine.config, система вызывает исключение.

Изменения вступают в силу только после запуска или перезапуска приложения. Когда оба параметра имеют значение true, при запуске регистрируется событие. Событие также регистрируется, если параметр logKnownPii имеет значение true, а параметр enableLoggingKnownPii имеет значение false.

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

ms730318.Caution(ru-ru,VS.100).gifВнимание!
В неправильно сформированных сообщениях PII не скрываются. Такие сообщения регистрируются «как есть», без каких-либо изменений. Упомянутые выше атрибуты никак на это не влияют.

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

Добавление пользовательского прослушивателя трассировки на источник трассировки «Ведение журнала сообщений» должно быть привилегией исключительно администратора. Это связано с тем, что пользовательские прослушиватели могут быть настроены злоумышленниками на удаленную отправку сообщений, что может привести к разглашению конфиденциальных сведений. Кроме того, если пользовательский прослушиватель настроен на отправку сообщений по линии связи, например в удаленную базу данных, необходимо обеспечить надлежащее управление доступом к журналам сообщений на удаленной машине.

События, активируемые регистрацией сообщений

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

  • Регистрация сообщений включена: это событие создается при включении регистрации сообщений в конфигурации или посредством инструментария WMI. Содержание события: "Регистрация сообщений включена. Секретные сведения могут регистрироваться без шифрования, даже если при передаче они были зашифрованы, например, тексты сообщений".

  • Регистрация сообщений отключена: это событие создается при отключении регистрации сообщений в конфигурации или посредством инструментария WMI. Содержание события: "Регистрация сообщений отключена".

  • Регистрация известных PII отключена: это событие создается при включении регистрации известных персональных данных. Это происходит, когда атрибут enableLoggingKnownPii в элементе machineSettings файла Machine.config имеет значение true и атрибут logKnownPii в элементе source в файле App.config или Web.config имеет значение true.

  • Регистрация известных PII запрещена: это событие создается, когда Регистрация известных персональных данных не разрешена. Это происходит, когда атрибут logKnownPii в элементе source файла Machine.config имеет значение true, а атрибут enableLoggingKnownPii в элементе machineSettings в файле App.config или Web.config имеет значение false. Исключение не возникает.

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

См. также

Основные понятия

Проблемы безопасности и полезные советы при трассировке

Другие ресурсы

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