Problemas de seguridad y sugerencias útiles para el seguimiento
En este tema se describe cómo puede proteger la información confidencial frente a la exposición, así como sugerencias útiles al usar WebHost.
Utilizar un agente de escucha de traza personalizado con WebHost
Si está escribiendo su propio agente de escucha de traza, debe ser consciente de la posibilidad de que las trazas se puedan perder en el caso de un servicio hospedado en web. Cuando WebHost recicla, cierra el proceso activo mientras es sustituido por un duplicado. Sin embargo, los dos procesos deben tener acceso al mismo recurso durante algún tiempo, lo cual depende del tipo de oyente. En este caso, , XmlWriterTraceListener
crea un nuevo archivo de seguimiento para el segundo proceso; mientras que el seguimiento de eventos de Windows administra varios procesos dentro de la misma sesión y proporciona acceso al mismo archivo. Si su propia escucha no proporciona funcionalidades similares, se pueden perder las trazas cuando el archivo es bloqueado por los dos procesos.
También debe ser consciente de que un agente de escucha de traza personalizado puede enviar trazas y mensajes a través de la conexión, por ejemplo, a una base de datos remota. Como implementador de aplicaciones, debe configurar agentes de escucha personalizados con el control de acceso adecuado. También debe aplicar el control de seguridad en cualquier información personal que se pueda exponer en la ubicación remota.
Registrar información confidencial
Las trazas contienen los encabezados del mensaje cuando un mensaje está en ámbito. Cuando las trazas están habilitadas, la información personal en encabezados específicos de la aplicación, como una cadena de consulta; e información del cuerpo, como un número de tarjeta de crédito, se puede volver visible en los registros. El implementador de aplicaciones es responsable de aplicar el control de acceso en los archivos de configuración y seguimiento. Si no desea que este tipo de información sea visible, debe deshabilitar el seguimiento o filtrar parte de los datos si desea compartir los registros de seguimiento.
Las siguientes sugerencias pueden ayudarle a evitar que el contenido de un archivo de seguimiento se exponga involuntariamente:
Asegúrese de que los archivos de registro están protegidos por listas de control de acceso (ACL) tanto en escenarios de WebHost como de autohospedaje.
Elija una extensión de archivo que no se pueda atender fácilmente mediante una solicitud web. Por ejemplo, la extensión de archivo .xml no es una opción segura. Puede consultar la guía de administración de IIS para ver una lista de extensiones que se pueden servir.
Especifique una ruta de acceso absoluta para la ubicación del archivo de registro, que debe estar fuera del directorio público vroot de WebHost para impedir que un usuario externo acceda a él mediante un explorador web.
De forma predeterminada, las claves y la información de identificación personal (PII), como el nombre de usuario y la contraseña, no se registran en seguimientos y mensajes registrados. Sin embargo, un administrador de equipo puede usar el atributo enableLoggingKnownPII
en el elemento machineSettings
del archivo Machine.config para permitir que las aplicaciones que se ejecutan en la máquina registren información de identificación personal (PII) conocida de la siguiente manera:
<configuration>
<system.ServiceModel>
<machineSettings enableLoggingKnownPii="Boolean"/>
</system.ServiceModel>
</configuration>
Después, un implementador de aplicaciones puede usar el atributo logKnownPii
en el archivo App.config o Web.config para habilitar el registro de PII de la siguiente manera:
<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>
Solo cuando ambos valores son true
está habilitado el registro de PII. La combinación de dos interruptores permite la flexibilidad para registrar PII conocido para cada aplicación.
Debe tener en cuenta que si especifica dos o más orígenes personalizados en un archivo de configuración, solo se leen los atributos del primer origen. Los otros se ignoran. Esto significa que, para el archivo siguiente App.config, PII no se registra para ninguno de los dos orígenes, aunque el registro de PII esté habilitado explícitamente para el segundo origen.
<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="xml" />
</listeners>
</source>
</sources>
</system.diagnostics>
Si el elemento <machineSettings enableLoggingKnownPii="Boolean"/>
existe fuera del archivo Machine.config, el sistema inicia un ConfigurationErrorsException.
Los cambios solo son efectivos cuando la aplicación se inicia o se reinicia. Un evento se registra al iniciarse cuando ambos atributos se establecen en true
. También se registra un evento si logKnownPii
está establecido en true
, pero enableLoggingKnownPii
es false
.
Para más información sobre el registro de DCP, consulte el ejemplo Bloqueo de seguridad de DCP.
El administrador de la máquina y el implementador de aplicaciones deben tener precaución extrema al usar estos dos interruptores. Si el registro de PII está habilitado, se registran las claves de seguridad y la PII. Si está deshabilitado, los datos confidenciales y específicos de la aplicación todavía se registran en los encabezados y cuerpos del mensaje. Para obtener una explicación más detallada sobre la privacidad y la protección de la información personal identificable de quedar expuesta, consulte Privacidad del usuario.
Además, la dirección IP del remitente del mensaje se registra una vez por conexión para los transportes orientados a la conexión y una vez por mensaje enviado en caso contrario. Esto se hace sin el consentimiento del remitente. Sin embargo, este registro solo se produce en los niveles de traza Información o Detallado, que no son los niveles de traza predeterminados o recomendados en la producción, salvo para la depuración activa.