Dela via


Anvisningar: Granska Säkerhetshändelser för Windows Communication Foundation

Med Windows Communication Foundation (WCF) kan du logga säkerhetshändelser till Windows-händelseloggen, som kan visas med hjälp av Windows Loggboken. Det här avsnittet beskriver hur du konfigurerar ett program så att det loggar säkerhetshändelser. Mer information om WCF-granskning finns i Granskning.

Så här granskar du säkerhetshändelser i kod

  1. Ange platsen för granskningsloggen. Det gör du genom att ange AuditLogLocation egenskapen ServiceSecurityAuditBehavior för klassen till ett av AuditLogLocation uppräkningsvärdena, som du ser i följande kod.

    // Create a new auditing behavior and set the log location.
    ServiceSecurityAuditBehavior newAudit =
        new ServiceSecurityAuditBehavior();
    newAudit.AuditLogLocation =
        AuditLogLocation.Application;
    
    ' Create a new auditing behavior and set the log location.
    Dim newAudit As New ServiceSecurityAuditBehavior()
    newAudit.AuditLogLocation = AuditLogLocation.Application
    

    Uppräkningen AuditLogLocation har tre värden: Application, Securityeller Default. Värdet anger en av loggarna som visas i Loggboken, antingen säkerhetsloggen eller programloggen. Om du använder värdet Default beror den faktiska loggen på vilket operativsystem programmet körs på. Om granskning är aktiverat och loggplatsen inte har angetts är standardloggen Security för plattformar som stöder skrivning till säkerhetsloggen. Annars skrivs den till loggen Application . Endast Windows Server 2003 och Windows Vista stöder skrivning till säkerhetsloggen som standard.

  2. Konfigurera vilka typer av händelser som ska granskas. Du kan samtidigt granska händelser på tjänstnivå eller auktoriseringshändelser på meddelandenivå. Det gör du genom att ange ServiceAuthorizationAuditLevel egenskapen eller MessageAuthenticationAuditLevel egenskapen till något av AuditLevel uppräkningsvärdena, som du ser i följande kod.

    // Create a new auditing behavior and set the log location.
    ServiceSecurityAuditBehavior newAudit =
        new ServiceSecurityAuditBehavior();
    newAudit.AuditLogLocation =
        AuditLogLocation.Application;
    newAudit.MessageAuthenticationAuditLevel =
        AuditLevel.SuccessOrFailure;
    newAudit.ServiceAuthorizationAuditLevel =
        AuditLevel.SuccessOrFailure;
    
    newAudit.MessageAuthenticationAuditLevel = _
        AuditLevel.SuccessOrFailure
    newAudit.ServiceAuthorizationAuditLevel = _
        AuditLevel.SuccessOrFailure
    
  3. Ange om du vill utelämna eller exponera fel för programmet när det gäller logggranskningshändelser. SuppressAuditFailure Ange egenskapen till antingen true eller false, enligt följande kod.

    // Create a new auditing behavior and set the log location.
    ServiceSecurityAuditBehavior newAudit =
        new ServiceSecurityAuditBehavior();
    newAudit.AuditLogLocation =
        AuditLogLocation.Application;
    newAudit.MessageAuthenticationAuditLevel =
        AuditLevel.SuccessOrFailure;
    newAudit.ServiceAuthorizationAuditLevel =
        AuditLevel.SuccessOrFailure;
    newAudit.SuppressAuditFailure = false;
    
    newAudit.SuppressAuditFailure = False
    

    Standardegenskapen SuppressAuditFailure är true, så att granskningsfelet inte påverkar programmet. Annars utlöses ett undantag. För alla lyckade granskningar skrivs en utförlig spårning. Om det inte går att granska skrivs spårningen på felnivå.

  4. Ta bort den befintliga ServiceSecurityAuditBehavior från samlingen med beteenden som finns i beskrivningen av en ServiceHost. Beteendesamlingen Behaviors nås av egenskapen, som i sin tur nås från Description egenskapen. Lägg sedan till den nya ServiceSecurityAuditBehavior i samma samling, som du ser i följande kod.

    // Remove the old behavior and add the new.
    serviceHost.Description.
        Behaviors.Remove<ServiceSecurityAuditBehavior>();
    serviceHost.Description.Behaviors.Add(newAudit);
    
    ' Remove the old behavior and add the new.
    serviceHost.Description.Behaviors.Remove(Of ServiceSecurityAuditBehavior)
    serviceHost.Description.Behaviors.Add(newAudit)
    

Så här konfigurerar du granskning i konfigurationen

  1. Om du vill konfigurera granskning i konfigurationen lägger du till ett beteendeelement >>< i beteendeavsnittet i filen web.config.< Lägg sedan till ett <serviceSecurityAudit-element> och ange de olika attributen, som du ser i följande exempel.

    <behaviors>  
       <behavior name="myAuditBehavior">  
          <serviceSecurityAudit auditLogLocation="Application"  
                suppressAuditFailure="false"
                serviceAuthorizationAuditLevel="None"
                messageAuthenticationAuditLevel="SuccessOrFailure" />  
          </behavior>  
    </behaviors>  
    
  2. Du måste ange beteendet för tjänsten, som du ser i följande exempel.

    <services>  
        <service type="WCS.Samples.Service.Echo"
        behaviorConfiguration=" myAuditBehavior">  
           <endpoint address=""  
                    binding="wsHttpBinding"  
                    bindingConfiguration="CertificateDefault"
                    contract="WCS.Samples.Service.IEcho" />  
        </service>  
    </services>  
    

Exempel

Följande kod skapar en instans av ServiceHost klassen och lägger till en ny ServiceSecurityAuditBehavior i dess samling av beteenden.

public static void Main()
{
    // Get base address from appsettings in configuration.
    Uri baseAddress = new Uri(ConfigurationManager.
        AppSettings["baseAddress"]);

    // Create a ServiceHost for the CalculatorService type
    // and provide the base address.
    using (ServiceHost serviceHost = new
        ServiceHost(typeof(CalculatorService), baseAddress))
    {
        // Create a new auditing behavior and set the log location.
        ServiceSecurityAuditBehavior newAudit =
            new ServiceSecurityAuditBehavior();
        newAudit.AuditLogLocation =
            AuditLogLocation.Application;
        newAudit.MessageAuthenticationAuditLevel =
            AuditLevel.SuccessOrFailure;
        newAudit.ServiceAuthorizationAuditLevel =
            AuditLevel.SuccessOrFailure;
        newAudit.SuppressAuditFailure = false;
        // Remove the old behavior and add the new.
        serviceHost.Description.
            Behaviors.Remove<ServiceSecurityAuditBehavior>();
        serviceHost.Description.Behaviors.Add(newAudit);
        // Open the ServiceHostBase to create listeners
        // and start listening for messages.
        serviceHost.Open();

        // The service can now be accessed.
        Console.WriteLine("The service is ready.");
        Console.WriteLine("Press <ENTER> to terminate service.");
        Console.WriteLine();
        Console.ReadLine();

        // Close the ServiceHostBase to shutdown the service.
        serviceHost.Close();
    }
}
Public Shared Sub Main()
    ' Get base address from appsettings in configuration.
    Dim baseAddress As New Uri(ConfigurationManager.AppSettings("baseAddress"))

    ' Create a ServiceHost for the CalculatorService type 
    ' and provide the base address.
    Dim serviceHost As New ServiceHost(GetType(CalculatorService), baseAddress)
    Try
        ' Create a new auditing behavior and set the log location.
        Dim newAudit As New ServiceSecurityAuditBehavior()
        newAudit.AuditLogLocation = AuditLogLocation.Application
        newAudit.MessageAuthenticationAuditLevel = _
            AuditLevel.SuccessOrFailure
        newAudit.ServiceAuthorizationAuditLevel = _
            AuditLevel.SuccessOrFailure
        newAudit.SuppressAuditFailure = False
        ' Remove the old behavior and add the new.
        serviceHost.Description.Behaviors.Remove(Of ServiceSecurityAuditBehavior)
        serviceHost.Description.Behaviors.Add(newAudit)
        ' Open the ServiceHostBase to create listeners 
        ' and start listening for messages.
        serviceHost.Open()

        ' The service can now be accessed.
        Console.WriteLine("The service is ready.")
        Console.WriteLine("Press <ENTER> to terminate service.")
        Console.WriteLine()
        Console.ReadLine()

        ' Close the ServiceHostBase to shutdown the service.
        serviceHost.Close()
    Finally
    End Try

End Sub

.NET Framework-säkerhet

SuppressAuditFailure Om egenskapen anges till true, undertrycks eventuella fel vid generering av säkerhetsgranskningar (om det är inställt på falsegenereras ett undantag). Men om du aktiverar följande windows-egenskap för lokal säkerhetsinställning kommer ett fel att generera granskningshändelser att göra att Windows stängs av omedelbart:

Granskning: Stäng av systemet omedelbart om det inte går att logga säkerhetsgranskningar

Om du vill ange egenskapen öppnar du dialogrutan Lokal säkerhet Inställningar. Under Säkerhets Inställningar klickar du på Lokala principer. Klicka sedan på Säkerhetsalternativ.

Om egenskapen AuditLogLocation är inställd på Security och Granskningsobjektåtkomst inte har angetts i den lokala säkerhetsprincipen skrivs inte granskningshändelser till säkerhetsloggen. Observera att inget fel returneras, men granskningsposter skrivs inte till säkerhetsloggen.

Se även