Guia do Demoiselle Audit Demoiselle Audit Paulo Gladson Ximenes Pinheiro Clóvis Lemes Ferreira Júnior Demoiselle Audit .................................................................................................................... v 1. Auditor ............................................................................................................................ 1 1.1. Auditor de Persistência .............................................................................................. 1 1.2. Auditor de Visão ....................................................................................................... 1 1.3. Criando seu próprio Auditor ......................................................................................... 1 2. Processor ........................................................................................................................ 3 2.1. Processor REST ....................................................................................................... 3 2.2. Processor MONGO ................................................................................................... 2.3. Criando seu próprio Processor ..................................................................................... 3. Configurações do Audit ...................................................................................................... 3.1. Instação no Projeto ................................................................................................... 3 4 5 5 3.2. Configurações do Sistema .......................................................................................... 5 3.2.1. PersistenceAuditor .......................................................................................... 6 3.3. Dashboard .............................................................................................................. 6 3.3.1. Como instalar o Dashboard ............................................................................... 7 4. Exemplo .......................................................................................................................... 9 5. Recomendações .............................................................................................................. 11 6. Release Notes ................................................................................................................. 13 iii iv Demoiselle Audit O Demoiselle Audit foi criado para suprir uma necessidade que a comunidade tinha de uma forma de historiar os eventos das aplicações desenvolvidas com o Framework Demoiselle. Desde o inicio ainda na concepção do componente buscamos as tecnologias, referências literárias e em padrões de mercado, as boas práticas e o que informações seriam capazes de registrar um momento e torná-lo um insumo para uma possível auditoria. Utilizamos duas fontes principais de referência o COBIT e o NIST. Sugerimos que essas fontes sejam usadas como base para a implantação eficaz de um processo consistente para que em caso de auditoria a mesma seja válida. O Demoiselle Audit é apenas uma peça no conjunto de procedimentos que garantem uma boa auditoria, apenas o uso do componente não é suficiente em casos de ações judiciais, a confiabialidade e invioalabilidade devem ser garantidas para que essas informações sejam consideradas relevantes. O Demoiselle Audit é dividido em três módulos e uma implementação de um dashboard para auxilio no desenvolvimento. 1. Core Principal módulo do sistema funicona com um agregador para suportar a plugabilidade dos Auditores e Processadores e tem mecanismo de tolerância a falha. 2. Auditores O módulo responsável por observar e capturar as informações da aplicação e enviar para o Core. A implementação de referência do Auditor fará a captura na camada de persistência da aplicação funcionando em conjunto com o JPA coletando os dados logo após a operação de CRUD ter sido concluída. 3. Processadores O módulo responsável pela conclusão do procedimento, ou seja ele tem a tarefa de persistir o elemento trilha. A implementação de referência do Processador envia para um serviço REST, mas podem haver implementações onde são enviados para um banco NoSQL, o mesmo banco da aplicação ou até mesmo um serviço de mensageria. 4. Dashboard Esta implementação não faz parte do mecanismo de funcionamento do Demoiselle Audit, mas serve como ferramenta de apoio à implantação e desenvolvimento do componente, ela consiste em quatro formas de visualizações dos dados persistidos pelo Demoiselle Audit e contém um serviço REST que recebe a trilha gerada pela implementação de referência do Processador, servindo de apoio à implantação do componente. NIST v Demoiselle Audit Arquitetura da ferramenta Demoisele Audit. Funcionamento da ferramenta Demoisele Audit. vi Auditor O objetivo dos Auditors é estabelecer a camada que será auditada, atualmente exste dois Auditors: camada de Persistência chamada PersistenceAuditor e para Visão chamado ViewAuditor. Um Auditor tem como objetivo executar a coleta de dados, preenchimento do objeto Trail com dados e disparar evento para o Processors. Os dados coletados pelos Auditor são: • Quem fez a operação? • Horário da operação? • IP de origem • Nome do Sistema • O que foi realizado? • Qual objeto foi manipulado? • Quais foram os dados atingidos pela operação? 1.1. Auditor de Persistência Para utilizar esse Auditor é necessário adicionar no pom.xml do seu projeto o seguinte trecho: <dependency> <groupId>br.gov.frameworkdemoiselle.component.audit</groupId> <artifactId>demoiselle-audit-auditors-persistence</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> 1.2. Auditor de Visão Para utilizar esse Auditor é necessário adicionar no pom.xml do seu projeto o seguinte trecho: <dependency> <groupId>br.gov.frameworkdemoiselle.component.audit</groupId> <artifactId>demoiselle-audit-auditors-view</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> 1.3. Criando seu próprio Auditor Se você tiver interesse em auditar outra camada da sua aplicação você deverá: 1. Criar um projeto Maven e utilizar o parent no seu pom.xml 1 Capítulo 1. Auditor <parent> <groupId>br.gov.frameworkdemoiselle.component.audit</groupId> <artifactId>demoiselle-audit-parent</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> 2. Criar uma classe que extenda br.gov.frameworkdemoiselle.component.audit.implementation.auditors.AbstractAuditor; de 3. Implementar os métodos que irão interceptar o ciclo de vida da camada; 4. Criar um objeto do tipo Trail e preencher seus dados básicos; 5. Chamar o método da consume([Objeto Trail]); 6. Caso seu Processor precise ser configurado, você deverá criar uma Classe que utilize a funcionalidade @Configuration do Demoiselle Demoiselle Configuration [http://demoiselle.sourceforge.net/docs/ framework/reference/2.4.0/html/configuracao.html], como exemplo você poderá se basear na classe impl/ processors/rest/src/main/java/br/gov/frameworkdemoiselle/component/audit/processors/rest/RESTConfig.java Apartir desse momento o componente estará apto a repassar esse objeto para os Processors definidos no pom.xml do seu projeto. Na sua implementação do seu sistema você deverá informar as seguintes informações: Tabela 1.1. Configurações Dado Local de Preenchimento Profile user.setAttribute("PROFILE", [Profile/Perfil do usuário no sistema]) Where user.setAttribute("IP", [IP do usuário no sistema]) UserName user.setAttribute("NAME", [Login/Nome/Identificador do usuário no sistema]) Maiores informações no link Demoiselle Security [http://demoiselle.sourceforge.net/docs/framework/ reference/2.4.0/html/security.html] Um exemplo de um Auditor esta na classe impl/auditors/persistence/src/main/java/br/gov/frameworkdemoiselle/ component/audit/auditors/persistence/PersistenceAuditor.java 2 Processor Um Processor tem como finalidade dar um destino que você deseja para o objeto que representa a trilha de auditoria. Atualmente estamos disponibilizando um Processor de REST para atender a questão de ser multi-sistema e outro Processor para MONGO. 2.1. Processor REST Para utilizar esse Processor é necessário adicionar no pom.xml do seu projeto o seguinte trecho: <dependency> <groupId>br.gov.frameworkdemoiselle.component.audit</groupId> <artifactId>demoiselle-audit-processors-rest</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> Para o correto funcionamento é necessário adicionar no demoiselle.properties as seguintes configurações: Tabela 2.1. Configuração demoiselle.properties Chave Descrição frameworkdemoiselle.audit.processor.rest.server.url URL do serviço REST para o envio das trilhas. 2.2. Processor MONGO Para utilizar esse Processor é necessário adicionar no pom.xml do seu projeto o seguinte trecho: <dependency> <groupId>br.gov.frameworkdemoiselle.component.audit</groupId> <artifactId>demoiselle-audit-processors-mongo</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> Para o correto funcionamento é necessário adicionar no demoiselle.properties as seguintes configurações: Tabela 2.2. Configuração demoiselle.properties Chave Descrição frameworkdemoiselle.audit.processor.mongo.server.url URL do servidor onde se onde se encontra o MongoDB frameworkdemoiselle.audit.processor.mongo.database.name URL do servidor encontra o MongoDB frameworkdemoiselle.audit.processor.mongo.collection.name Nome da coleção frameworkdemoiselle.audit.processor.mongo.database.user Usuário (se necessário) frameworkdemoiselle.audit.processor.mongo.database.password Senha 3 Capítulo 2. Processor 2.3. Criando seu próprio Processor Você poderá criar o seu próprio ponto de extensão, podendo ser um JMS, FTP, Banco de Dados NoSql, você tem a liberdade de criar, para que isso sejá possível você deve criar um projeto Maven e utilizar o parent no seu pom.xml: 1. Criar um projeto Maven e utilizar o parent no seu pom.xml <parent> <groupId>br.gov.frameworkdemoiselle.component.audit</groupId> <artifactId>demoiselle-audit-parent</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> 2. Criar uma classe que extenda de br.gov.frameworkdemoiselle.component.audit.implementation.processor.AbstractProcessor e implementar o método public void execute(@Observes @AuditProcessor Trail trail) 3. É dentro do bloco de código você implementará o destino que você deseja dar ao objeto Trail. 4. Para o bom funcionamento do seu Processor você deverá seguir as seguintes recomendações: 5. Antes de implementar seu código é necessário chamar o método super.execute(trail) para que o componente possa saber qual é a classe do Processor que esta sendo processada, isso é necessário para a situação de falha na execução do seu Processor e o componente possa reprocessar novamente no futuro; Quando houver algum tratamento de exceção no seu código como blocos try e catch você deverá além de realizar seu próprio tratamento a chamada do método fail([String com a mensagem de Erro], [Objeto Trail]); para que o componente possa reprocessar novamente no futuro; 4 Configurações do Audit O Demoseille Audit possui como base 3 módulos (Core, Processors e Auditors). O Core orquestra a integração entre os Processadores e os Auditores, que são implementações de cada projeto. 3.1. Instação no Projeto Em seu projeto que você deseja auditar, você deve adicionar no seu pom.xml no campo de dependências do projeto as seguintes linhas: <dependencies> <dependency> <groupId>br.gov.frameworkdemoiselle.component.audit</groupId> <artifactId>demoiselle-audit-auditors-persistence</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> <dependency> <groupId>br.gov.frameworkdemoiselle.component.audit</groupId> <artifactId>demoiselle-audit-auditors-view</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> <dependency> <groupId>br.gov.frameworkdemoiselle.component.audit</groupId> <artifactId>demoiselle-audit-processors-rest</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> <dependency> <groupId>br.gov.frameworkdemoiselle.component.audit</groupId> <artifactId>demoiselle-audit-processors-mongo</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> </dependencies> No código acima estamos utilizando o Auditor para a camada de Persistência e para a camada de Visão e o Processor para REST e o Processor para MONGO, você poderá adicionar quantos Processors e quantos Auditors você quiser. 3.2. Configurações do Sistema No seu arquivo demoiselle.properties você precisará adicionar as seguintes linhas: Tabela 3.1. Configuração demoiselle.properties Chave Descrição frameworkdemoiselle.audit.system Nome do seu Sistema frameworkdemoiselle.audit.scheduler.repeat.interval Intervalo de tempo em milisegundos para o reprocessamento das trilhas frameworkdemoiselle.audit.scheduler.start.time Tempo em milisegundos de quando será executado o primeiro reprocessamento após o inicio da aplicação 5 Capítulo 3. Configurações do ... Chave Descrição frameworkdemoiselle.audit.folder.fail.objects Pasta onde a aplicação terá direito de escrita e leitura para o armazenamento das trilhas que apresentaram problemas no processamento Para o Processor de REST você deverá adicionar a seguinte linha: Tabela 3.2. Configuração demoiselle.properties Chave Descrição frameworkdemoiselle.audit.processor.rest.server.url Endereço do Serviço REST (Ex.: http://localhost:8080/ dash) Para o Processor de MONGO você deverá adicionar a seguinte linha: Tabela 3.3. Configuração demoiselle.properties Chave Descrição frameworkdemoiselle.audit.processor.mongo.server.url Endereço do MongoDB frameworkdemoiselle.audit.processor.mongo.database.name Nome do Database frameworkdemoiselle.audit.processor.mongo.collection.name Nome da Coleção frameworkdemoiselle.audit.processor.mongo.database.user Usuário (se necessário) frameworkdemoiselle.audit.processor.mongo.database.password Senha 3.2.1. PersistenceAuditor Você poderá escolher quais serão suas Entidades JPA que serão auditadas na camada de persistência, para isso adicione a anotação do JPA @EntityListeners com o valor de PersistenceAuditor.class. Exemplo : @Entity @EntityListeners(value = PersistenceAuditor.class) public class Bookmark implements Serializable { ... } 3.3. Dashboard Para facilitar a busca de informações do que foi feito no sistema contruímos um Dashboard que traz 4 visões diferentes dos mesmos dados: • Visão de Sistema que se aprofunda em Pessoa e a Funcionalidade executada; • Visão da Pessoa que se aprofunda no Sistema e a Funcionalidade executada; • Visão de Funcionalidade que se aprofunda no Sistema e a Pessoa que executou; • Visão de Rastreamento que através de filtros como Sistema, Objeto e Identificador do Objeto mostrar o histórico de operações realizadas no Objeto; 6 Como instalar o Dashboard O Dashboard também fornece um serviço de REST para o Processor RESTProcessor, caso você utilize este processor no seu projeto e não queira implementar seu próprio serviço de REST você poderá utilizar o Dashboard para essa finalidade. 3.3.1. Como instalar o Dashboard Faça um clone do projeto e acesse a pasta demoiselle-audit/impl/dashboard, você precisará alterar o arquivo persistence.xml de acordo com as configurações do seu banco de dados onde serão armazenados as trilhas de auditoria, após feito essa configuração abra um terminal na pasta do "dashboard" e execute o comando maven: $mvn clean compile package Esse comando irá gerar um arquivo chamado demoiselle-audit-dashboard.war na pasta target. Agora que você já tem o arquivo .war você poderá fazer o deploy no seu servidor. 7 8 Exemplo Você encontrará no link para o projeto BookmarkAudit [https://github.com/demoiselle/laboratory/tree/master/ examples/bookmark-audit] que utiliza o componente de auditoria; 9 10 Recomendações Por se tratar de um componente de auditoria alguns pontos devem ser observados: • O servidor onde serão armazenadas as trilhas de auditoria deverá ser blindado e com acesso restrito para que seja garantida a confiabilidade das informações armazenadas; • Seguir as recomendações do NIST no link [http://csrc.nist.gov/publications/nistpubs/800-92/SP800-92.pdf] 11 12 Release Notes Dica Para reportar problemas, abrir discussões ou perguntar algo utilize as Issues do GitHub no endereço https://github.com/demoiselle/audit/issues . Versão 1.0.0 • 13 14