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
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
,Security
ellerDefault
. Värdet anger en av loggarna som visas i Loggboken, antingen säkerhetsloggen eller programloggen. Om du använder värdetDefault
beror den faktiska loggen på vilket operativsystem programmet körs på. Om granskning är aktiverat och loggplatsen inte har angetts är standardloggenSecurity
för plattformar som stöder skrivning till säkerhetsloggen. Annars skrivs den till loggenApplication
. Endast Windows Server 2003 och Windows Vista stöder skrivning till säkerhetsloggen som standard.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
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
ellerfalse
, 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
ärtrue
, 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å.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
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>
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å false
genereras 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.