Auditoria de eventos de segurança

Aplicativos criados com o WCF (Windows Communication Foundation) podem registrar eventos de segurança (êxito, falha ou ambos) com o recurso de auditoria. Os eventos são gravados no log de eventos do sistema Windows e podem ser examinados usando o visualizador de eventos.

A auditoria fornece uma forma de um administrador detectar um ataque que já ocorreu ou que está em andamento. A auditoria ainda pode ajudar um desenvolvedor a depurar problemas relacionados à segurança. Por exemplo, se um erro na configuração da política de autorização ou verificação negar acidentalmente o acesso a um usuário autorizado, um desenvolvedor poderá descobrir e isolar rapidamente a causa desse erro examinando o log de eventos.

Para obter mais informações sobre a segurança do WCF, confira Visão Geral de Segurança. Para obter mais informações sobre programação do WCF, consulte Programação básica do WCF.

Nível e comportamento de auditoria

Existem dois níveis de auditorias de segurança:

  • Nível de autorização de serviço, no qual um chamador está autorizado.

  • Nível de mensagem, no qual o WCF verifica a validade da mensagem e autentica o chamador.

Você pode verificar os dois níveis de auditoria quanto a êxito ou a falha, o que é conhecido como comportamento de auditoria.

Local do log de auditoria

Depois de determinar um nível e um comportamento de auditoria, você (ou um administrador) pode especificar um local para o log de auditoria. As três opções incluem: Padrão, Aplicativo e Segurança. Quando você especifica o padrão, o log real depende de qual sistema você está usando e se o sistema dá suporte à gravação no log de segurança. Para obter mais informações, consulte a seção "Sistema operacional" mais adiante neste tópico.

Gravar no log de segurança requer o SeAuditPrivilege. Por padrão, somente contas do Sistema Local e do Serviço de Rede têm esse privilégio. O gerenciamento das funções de log de segurança read e delete requer o SeSecurityPrivilege. Por padrão, somente os administradores têm esse privilégio.

Por outro lado, os usuários autenticados podem ler e gravar no log do aplicativo. O Windows XP grava eventos de auditoria no log do aplicativo por padrão. O log também pode conter informações pessoais visíveis para todos os usuários autenticados.

Suprimir falhas de auditoria

Outra opção durante a auditoria é suprimir qualquer falha de auditoria. Por padrão, uma falha de auditoria não afeta um aplicativo. Se necessário, no entanto, você pode definir a opção como false, o que faz com que uma exceção seja lançada.

Auditoria de programação

Você pode especificar o comportamento de auditoria programaticamente ou por meio da configuração.

Classes de auditoria

A tabela a seguir descreve as classes e as propriedades usadas para programar o comportamento de auditoria.

Classe Descrição
ServiceSecurityAuditBehavior Habilita as opções de configuração para auditoria como um comportamento de serviço.
AuditLogLocation Enumeração para especificar em qual log gravar. Os valores possíveis são Padrão, Aplicativo e Segurança. Quando você seleciona padrão, o sistema operacional determina o local de log real. Consulte a seção "Escolha do log de eventos de segurança ou aplicativo" mais adiante neste tópico.
MessageAuthenticationAuditLevel Especifica quais tipos de eventos de autenticação de mensagem são auditados no nível da mensagem. As opções são None, Failure, Success e SuccessOrFailure.
ServiceAuthorizationAuditLevel Especifica quais tipos de eventos de autorização de serviço são auditados no nível do serviço. As opções são None, Failure, Success e SuccessOrFailure.
SuppressAuditFailure Especifica o que acontece com a solicitação do cliente quando a auditoria falha. Por exemplo, quando o serviço tenta gravar no log de segurança, mas não tem SeAuditPrivilege. O valor padrão de true indica que as falhas são ignoradas e a solicitação do cliente é processada normalmente.

Para obter um exemplo de como configurar um aplicativo para registrar eventos de auditoria em log, consulte Como auditar eventos de segurança.

Configuração

Você também pode usar a configuração para especificar o comportamento de auditoria adicionando um <serviceSecurityAudit> em <behaviors>. Você deve adicionar o elemento a um <comportamento>, conforme mostrado no código a seguir.

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

Se a auditoria estiver habilitada e um auditLogLocation não for especificado, o nome do log padrão será "Segurança" para a plataforma que dá suporte à gravação no log de segurança; caso contrário, será o log "Aplicativo". Somente os sistemas operacionais Windows Server 2003 e Windows Vista dão suporte à gravação no log de segurança. Para obter mais informações, consulte a seção "Sistema operacional" mais adiante neste tópico.

Considerações de segurança

Se um usuário mal-intencionado souber que a auditoria está habilitada, esse invasor poderá enviar mensagens inválidas que fazem com que as entradas de auditoria sejam gravadas. Se o log de auditoria for preenchido dessa maneira, o sistema de auditoria falhará. Para atenuar isso, defina a propriedade SuppressAuditFailure como true e use as propriedades do visualizador de eventos para controlar o comportamento de auditoria.

Eventos de auditoria gravados no Log de Aplicativos no Windows XP são visíveis para qualquer usuário autenticado.

Escolher entre logs de eventos de Segurança e Aplicativo

As tabelas a seguir fornecem informações para ajudá-lo a escolher se deseja fazer logon no log de evento de Aplicativo ou de Segurança.

Sistema operacional

Sistema Log do aplicativo Log de segurança
Windows XP SP2 ou posterior Com suporte Sem suporte
Windows Server 2003 SP1 e Windows Vista Com suporte O contexto do thread deve possuir SeAuditPrivilege

Outros fatores

Além do sistema operacional, a tabela a seguir descreve outras configurações que controlam a habilitação do registro em log.

Fator Log do aplicativo Log de segurança
Gerenciamento da política de auditoria Não aplicável. Junto com a configuração, o log de Segurança também é controlado pela política de LSA (autoridade de segurança local). A categoria "Acesso ao objeto de auditoria" também deve ser habilitada.
Experiência do usuário padrão Todos os usuários autenticados podem gravar no log de Aplicativo e, portanto, nenhuma etapa de permissão adicional é necessária para processos de aplicativos. O processo de aplicativos (contexto) deve ter SeAuditPrivilege.

Confira também