Problemi di sicurezza per la registrazione dei messaggi
In questo argomento viene descritto come proteggere i dati sensibili dall'esposizione nei log dei messaggi, nonché dagli eventi generati dalla registrazione dei messaggi.
Problemi di sicurezza
Registrazione di informazioni riservate
Windows Communication Foundation (WCF) non modifica i dati nelle intestazioni specifiche e nel corpo dell'applicazione. WCF non tiene traccia delle informazioni personali né nelle intestazioni specifiche dell'applicazione né nei dati del corpo.
Quando la registrazione dei messaggi è abilitata, le informazioni personali nelle intestazioni specifiche dell'applicazione, ad esempio una stringa di query; e informazioni sul corpo, ad esempio un numero di carta di credito, possono diventare visibili nei log. Il deployer dell'applicazione è responsabile dell'applicazione del controllo di accesso nei file di configurazione e di log. Se non si vuole che questo tipo di informazioni sia visibile, è consigliabile disabilitare la registrazione o escludere parte dei dati se si desidera condividere i log.
I suggerimenti seguenti consentono di evitare che il contenuto di un file di log venga esposto involontariamente:
Assicurarsi che i file di log siano protetti dagli elenchi di controllo di accesso (ACL) sia negli scenari host Web che self-host.
Scegliere un'estensione di file che non può essere facilmente servita usando una richiesta Web. Ad esempio, l'estensione di file .xml non è una scelta sicura. È possibile controllare la guida all'amministrazione di Internet Information Services (IIS) per visualizzare un elenco di estensioni che possono essere gestite.
Specificare un percorso assoluto per il percorso del file di log, che deve essere esterno alla directory pubblica vroot dell'host Web per impedire l'accesso da parte di un'entità esterna tramite un Web browser.
Per impostazione predefinita, le chiavi e le informazioni personali identificabili (come nome utente e password) non vengono registrate nei log delle tracce e dei messaggi. Un amministratore del computer, tuttavia, può usare l'attributo enableLoggingKnownPII
nell'elemento machineSettings
del file Machine.config per consentire alle applicazioni in esecuzione nel computer di registrare informazioni personali note. La configurazione seguente illustra come eseguire questa operazione:
<configuration>
<system.serviceModel>
<machineSettings enableLoggingKnownPii="true"/>
</system.serviceModel>
</configuration>
Un deployer dell'applicazione può quindi usare l'attributo logKnownPii
nel file App.config o Web.config per abilitare la registrazione delle informazioni personali come indicato di seguito:
<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 quando entrambe le impostazioni sono true
è abilitata la registrazione delle informazioni personali. La combinazione di due opzioni consente la flessibilità di registrare informazioni personali note per ogni applicazione.
Importante
In .NET Framework 4.6.1 i flag logEntireMessage
e logKnownPii
devono essere impostati anche su true
nel file Web.config o nel file App.config per abilitare la registrazione delle informazioni personali, come illustrato nell'esempio seguente <system.serviceModel><messageLogging logEntireMessage="true" logKnownPii="true" …
.
Tenere presente che se si specificano due o più origini personalizzate in un file di configurazione, vengono letti solo gli attributi della prima origine. Gli altri vengono ignorati. Ciò significa che, per il seguente App.configfile , le informazioni personali non vengono registrate per entrambe le origini anche se la registrazione delle informazioni personali è abilitata in modo esplicito per la seconda origine.
<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 l'elemento <machineSettings enableLoggingKnownPii="Boolean"/>
esiste all'esterno del file Machine.config, il sistema genera un ConfigurationErrorsException.
Le modifiche sono valide solo all'avvio o al riavvio dell'applicazione. Un evento viene registrato all'avvio quando entrambi gli attributi sono impostati su true
. Viene registrato anche un evento se logKnownPii
è impostato su true
ma enableLoggingKnownPii
è false
.
L'amministratore del computer e lo strumento di distribuzione delle applicazioni devono prestare particolare attenzione quando si usano queste due opzioni. Se la registrazione delle informazioni personali è abilitata, vengono registrate le chiavi di sicurezza e le informazioni personali. Se è disabilitato, i dati sensibili e specifici dell'applicazione vengono comunque registrati nelle intestazioni e nei corpi dei messaggi. Per una discussione più approfondita sulla privacy e sulla protezione delle informazioni personali dall'esposizione, vedere Privacy dell'utente.
Cautela
Le informazioni personali (PII) non sono nascoste nei messaggi in formato non valido. Tali messaggi vengono registrati as-is senza alcuna modifica. Gli attributi menzionati in precedenza non hanno alcun effetto su questo.
Listener di traccia personalizzato
L'aggiunta di un listener di traccia personalizzato sulla sorgente di traccia della registrazione dei messaggi è un privilegio che deve essere limitato all'amministratore. Ciò è dovuto al fatto che i listener personalizzati dannosi possono essere configurati per l'invio remoto di messaggi, che comportano la divulgazione di informazioni riservate. Inoltre, se si configura un listener personalizzato per l'invio di messaggi in transito, ad esempio a un database remoto, è necessario applicare il controllo di accesso appropriato nei log dei messaggi nel computer remoto.
Eventi attivati dalla registrazione dei messaggi
Di seguito sono elencati tutti gli eventi generati dalla registrazione dei messaggi.
Registrazione messaggi: questo evento viene generato quando la registrazione dei messaggi è abilitata nella configurazione o tramite WMI. Il contenuto dell'evento è "La registrazione dei messaggi è stata attivata. Le informazioni sensibili possono essere registrate in testo non crittografato, anche se sono state crittografate sul filo, ad esempio i contenuti dei messaggi.
Registrazione messaggi disattivata: questo evento viene generato quando la registrazione dei messaggi viene disabilitata tramite WMI. Il contenuto dell'evento è "La registrazione dei messaggi è stata disattivata".
Registrazione dei PII Conosciuti Attivata: questo evento viene emesso quando la registrazione dei PII conosciuti è abilitata. Ciò si verifica quando l'attributo
enableLoggingKnownPii
nell'elementomachineSettings
del file Machine.config è impostato sutrue
e l'attributologKnownPii
dell'elementosource
nel file App.config o Web.config è impostato sutrue
.Registrazione informazioni personali note non consentite: questo evento viene generato quando la registrazione delle informazioni personali note non è consentita. Ciò si verifica quando l'attributo
logKnownPii
dell'elementosource
nel file App.config o Web.config è impostato sutrue
, ma l'attributoenableLoggingKnownPii
nell'elementomachineSettings
del file Machine.config è impostato sufalse
. Non viene generata alcuna eccezione.
Questi eventi possono essere visualizzati nello strumento Visualizzatore eventi fornito con Windows. Per ulteriori informazioni, vedere la registrazione degli eventi.