Partilhar via


Preocupações de segurança para o registo de mensagens

Este tópico descreve como você pode proteger dados confidenciais contra exposição em logs de mensagens, bem como eventos gerados pelo log de mensagens.

Preocupações de segurança

Registro de informações confidenciais

O Windows Communication Foundation (WCF) não modifica nenhum dado em cabeçalhos e corpo específicos do aplicativo. O WCF também não rastreia informações pessoais em cabeçalhos específicos da aplicação ou dados do conteúdo.

Quando o registo de mensagens está habilitado, informações pessoais em cabeçalhos específicos do aplicativo, como uma cadeia de caracteres de consulta, e informações do corpo, como um número de cartão de crédito, podem ficar visíveis nos registos. O implantador de aplicativos é responsável por impor o controle de acesso nos arquivos de configuração e log. Se você não quiser que esse tipo de informação fique visível, desative o registro ou filtre parte dos dados se quiser compartilhar os logs.

As dicas a seguir podem ajudá-lo a evitar que o conteúdo de um arquivo de log seja exposto involuntariamente:

  • Verifique se os arquivos de log estão protegidos por Listas de Controle de Acesso (ACL) em cenários de host da Web e autohost.

  • Escolha uma extensão de arquivo que não possa ser facilmente atendida usando uma solicitação da Web. Por exemplo, a extensão de arquivo .xml não é uma escolha segura. Você pode verificar o guia de administração do IIS (Serviços de Informações da Internet) para ver uma lista de extensões que podem ser atendidas.

  • Especifique um caminho absoluto para o local do arquivo de log, que deve estar fora do diretório público vroot do host da Web para impedir que ele seja acessado por uma parte externa usando um navegador da Web.

Por padrão, chaves e informações de identificação pessoal (PII), como nome de usuário e senha, não são registradas em rastreamentos e mensagens registradas. Um administrador de máquina, no entanto, pode usar o atributo enableLoggingKnownPII no elemento machineSettings do arquivo Machine.config para permitir que aplicativos em execução na máquina registrem informações de identificação pessoal (PII) conhecidas. A configuração a seguir demonstra como fazer isso:

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

Um implantador de aplicativo pode usar o atributo logKnownPii no arquivo App.config ou Web.config para habilitar o log de PII da seguinte maneira:

<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>

Somente quando ambas as configurações estiverem true o registro de PII será habilitado. A combinação de dois switches permite a flexibilidade de registrar PII conhecidas para cada aplicativo.

Importante

No .NET Framework 4.6.1, os sinalizadores logEntireMessage e logKnownPii também devem ser definidos como true no arquivo Web.config ou no arquivo App.config para habilitar o registro em log PII, conforme mostrado no exemplo a seguir <system.serviceModel><messageLogging logEntireMessage="true" logKnownPii="true" ….

Você deve estar ciente de que, se especificar duas ou mais fontes personalizadas em um arquivo de configuração, somente os atributos da primeira fonte serão lidos. Os outros são ignorados. Isso significa que, para o arquivo App.configseguinte, a PII não é registada de ambas as fontes, mesmo que o registo de PII esteja explicitamente habilitado para a segunda fonte.

<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>

Se o elemento <machineSettings enableLoggingKnownPii="Boolean"/> existir fora do arquivo Machine.config, o sistema lançará um ConfigurationErrorsException.

As alterações só entram em vigor quando o aplicativo é iniciado ou reiniciado. Um evento é registrado na inicialização quando ambos os atributos são definidos como true. Um evento também será registrado se logKnownPii estiver definido como true mas enableLoggingKnownPii estiver false.

O administrador da máquina e o implantador de aplicativos devem ter extrema cautela ao usar esses dois switches. Se o registro de PII estiver habilitado, as chaves de segurança e as PII serão registradas. Se estiver desativado, os dados confidenciais e específicos do aplicativo ainda serão registrados nos cabeçalhos e corpos das mensagens. Para uma discussão mais aprofundada sobre privacidade e proteção da Informação de Identificação Pessoal (PII) contra exposição, consulte a secção Privacidade do Utilizador.

Atenção

A PII não está oculta em mensagens malformadas. Essas mensagens são registradas as-is sem qualquer modificação. Os atributos mencionados anteriormente não têm efeito sobre isso.

Ouvinte de rastreamento personalizado

Adicionar um monitor de rastreamento personalizado na fonte de rastreamento do Registo de Mensagens é um privilégio que deve ser restrito ao administrador. Isso ocorre porque ouvintes personalizados mal-intencionados podem ser configurados para enviar mensagens remotamente, o que leva à divulgação de informações confidenciais. Além disso, se você configurar um ouvinte personalizado para enviar mensagens no fio, como para um banco de dados remoto, deverá impor o controle de acesso adequado nos logs de mensagens na máquina remota.

Eventos acionados pelo registro de mensagens

A lista a seguir lista todos os eventos emitidos pelo registro de mensagens.

  • Registo de mensagens ativo: este evento é emitido quando o registo de mensagens é ativado na configuração ou por meio do WMI. O conteúdo do evento é "O log de mensagens foi ativado. Informações confidenciais podem ser registradas em texto não criptografado, mesmo que tenham sido criptografadas no fio, por exemplo, corpos de mensagens."

  • Desativação do registo de mensagens: este evento é emitido quando o registo de mensagens é desativado através do WMI. O conteúdo do evento é "O registro de mensagens foi desativado".

  • Log Known PII On: Este evento é emitido quando o registro de PII conhecidas está habilitado. Isso acontece quando o atributo enableLoggingKnownPii no elemento machineSettings do arquivo Machine.config é definido como truee o atributo logKnownPii do elemento source no arquivo App.config ou Web.config é definido como true.

  • Registo de PII Conhecidas Não Permitido: Este evento é emitido quando o registo de PII conhecidas não é permitido. Isso acontece quando o atributo logKnownPii do elemento source no arquivo App.config ou Web.config é definido como true, mas o atributo enableLoggingKnownPii no elemento machineSettings do arquivo Machine.config é definido como false. Nenhuma exceção é lançada.

Esses eventos podem ser visualizados na ferramenta Visualizador de Eventos que vem com o Windows. Para obter mais informações sobre isso, consulte registo de eventos.

Ver também