Condividi tramite


Controllo degli eventi di sicurezza

Le applicazioni create con Windows Communication Foundation (WCF) possono registrare eventi di sicurezza (esito positivo, negativo o entrambi) con la funzionalità di controllo. Gli eventi vengono scritti nel registro eventi di sistema di Windows e possono essere esaminati usando il Visualizzatore eventi.

La funzionalità di controllo consente a un amministratore di individuare un attacco mentre è ancora in corso o quando è già avvenuto. Tale funzionalità consente inoltre agli sviluppatori di semplificare il debug dei problemi di sicurezza. Ad esempio, se per un errore nella configurazione dei criteri di autorizzazione o di verifica il sistema nega l'accesso a un utente autorizzato, uno sviluppatore può individuare e isolare rapidamente la causa di questo errore esaminando il registro eventi.

Per altre informazioni sulla sicurezza WCF, vedere Panoramica della sicurezza di . Per altre informazioni sulla programmazione wcf, vedere Programmazione WCF di base.

Livello di controllo e comportamento

Esistono due livelli di controllo di sicurezza:

  • Livello di autorizzazione del servizio, in cui un chiamante è autorizzato.

  • Livello di messaggio, in cui WCF verifica la validità del messaggio e autentica il chiamante.

È possibile controllare entrambi i livelli di controllo per l'esito positivo o negativo, noto come comportamento di controllo.

Posizione log di controllo

Dopo aver determinato un livello di controllo e un comportamento, l'utente (o un amministratore) può specificare un percorso per il log di controllo. Le tre opzioni includono: Default, Application e Security. Quando si specifica Default, il log effettivo dipende dal sistema in uso e dal fatto che il sistema supporti la scrittura nel log di sicurezza. Per altre informazioni, vedere la sezione "Sistema operativo" più avanti in questo argomento.

Per scrivere nel log di sicurezza è necessario il SeAuditPrivilege. Per impostazione predefinita, solo gli account del sistema locale e del servizio di rete dispongono di questo privilegio. Per gestire le funzioni del log di sicurezza read e delete è necessario il SeSecurityPrivilege. Per impostazione predefinita, solo gli amministratori hanno questo privilegio.

Al contrario, gli utenti autenticati possono leggere e scrivere nel registro applicazioni. Windows XP scrive gli eventi di controllo nel registro applicazioni per impostazione predefinita. Il log può anche contenere informazioni personali visibili a tutti gli utenti autenticati.

Eliminazione degli errori di controllo

Un'altra opzione durante il controllo è se eliminare eventuali errori di controllo. Per impostazione predefinita, un errore di controllo non influisce su un'applicazione. Se necessario, tuttavia, è possibile impostare l'opzione su false, che causa la generazione di un'eccezione.

Controllo della programmazione

È possibile specificare il comportamento di controllo a livello di codice o tramite la configurazione.

Classi di controllo

Nella tabella seguente vengono descritte le classi e le proprietà usate per programmare il comportamento di controllo.

Classe Descrizione
ServiceSecurityAuditBehavior Abilita le opzioni di impostazione per il controllo come comportamento del servizio.
AuditLogLocation Enumerazione per specificare a quale log scrivere. I valori possibili sono Default, Application e Security. Quando si seleziona Impostazione predefinita, il sistema operativo determina il percorso effettivo del log. Consultare la sezione "Scelta del registro eventi di applicazione o sicurezza" più avanti in questo argomento.
MessageAuthenticationAuditLevel Specifica i tipi di eventi di autenticazione dei messaggi controllati a livello di messaggio. Le scelte sono None, Failure, Successe SuccessOrFailure.
ServiceAuthorizationAuditLevel Specifica i tipi di eventi di autorizzazione del servizio controllati a livello di servizio. Le scelte sono None, Failure, Successe SuccessOrFailure.
SuppressAuditFailure Specifica cosa accade alla richiesta client quando il controllo ha esito negativo. Ad esempio, quando il servizio tenta di scrivere nel log di sicurezza, ma non dispone di SeAuditPrivilege. Il valore predefinito di true indica che gli errori vengono ignorati e che la richiesta client viene elaborata normalmente.

Per un esempio di configurazione di un'applicazione per registrare gli eventi di controllo, vedere Procedura: Controllare gli eventi di sicurezza.

Configurazione

È anche possibile usare la configurazione per specificare il comportamento di controllo aggiungendo un <serviceSecurityAudit> sotto i <comportamenti>. È necessario aggiungere l'elemento in un <comportamento> come illustrato nel codice seguente.

<configuration>  
  <system.serviceModel>  
    <behaviors>  
      <behavior>  
        <!-- auditLogLocation="Application" or "Security" -->  
        <serviceSecurityAudit  
                  auditLogLocation="Application"  
                  suppressAuditFailure="true"  
                  serviceAuthorizationAuditLevel="Failure"  
                  messageAuthenticationAuditLevel="SuccessOrFailure" />
      </behavior>  
    </behaviors>  
  </system.serviceModel>  
</configuration>  

Se il controllo è abilitato e non viene specificato un auditLogLocation valore, il nome del log predefinito è "Sicurezza" per la piattaforma che supporta la scrittura nel log di sicurezza; in caso contrario, è "Registro applicazioni". Solo i sistemi operativi Windows Server 2003 e Windows Vista supportano la scrittura nel log di sicurezza. Per altre informazioni, vedere la sezione "Sistema operativo" più avanti in questo argomento.

Considerazioni sulla sicurezza

Se un utente malintenzionato sa che il controllo è abilitato, l'autore dell'attacco può inviare messaggi non validi che causano la scrittura delle voci di controllo. Se il log di controllo viene compilato in questo modo, il sistema di controllo non riesce. Per attenuare questo problema, impostare la SuppressAuditFailure proprietà su true e utilizzare le proprietà del Visualizzatore eventi per controllare il comportamento di controllo.

Gli eventi di controllo scritti nel registro applicazioni in Windows XP sono visibili a qualsiasi utente autenticato.

Scelta tra registri eventi di sicurezza e applicazione

Le tabelle seguenti forniscono informazioni che consentono di scegliere se accedere all'applicazione o al registro eventi di sicurezza.

Sistema operativo

Sistema Registro applicazioni Registro di sicurezza
Windows XP SP2 o versione successiva Sostenuto Non supportato
Windows Server 2003 SP1 e Windows Vista Sostenuto Il contesto del thread deve possedere SeAuditPrivilege

Altri fattori

Oltre al sistema operativo, nella tabella seguente vengono descritte altre impostazioni che controllano l'abilitazione della registrazione.

Fattore Registro applicazioni Registro di sicurezza
Gestione dei criteri di audit Non applicabile. Insieme alla configurazione, il log di sicurezza è controllato anche dai criteri dell'autorità di sicurezza locale . È necessario abilitare anche la categoria "Verifica accesso agli oggetti".
Esperienza utente predefinita Tutti gli utenti autenticati possono scrivere nel registro applicazioni, quindi non è necessario alcun passaggio di autorizzazione aggiuntivo per i processi dell'applicazione. Il processo dell'applicazione (contesto) deve avere SeAuditPrivilege.

Vedere anche