-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/44265/
-----------------------------------------------------------

(Updated márc. 24, 2016, 12:20 du)


Review request for Ambari, Laszlo Puskas, Oliver Szabo, Robert Levas, Sandor 
Magyari, and Sebastian Toader.


Changes
-------

A new branch is created: audit_logging that has all the changes.
Since the previous patch the following fixes are added:
- instead of getting all the stages from DB, tasks are cached for a request and 
the status is calculated based on that.
- AsyncEventBus is used instead of a custom implementation
- Ambari properties now have a switch to disable audit logging: auditlog.enabled


Bugs: AMBARI-15241
    https://issues.apache.org/jira/browse/AMBARI-15241


Repository: ambari


Description
-------

Entry points for logging events:
- Login and logout: AmbariAuthenticationFilter, AmbariAuthorizationFilter, 
LogoutService
- Operation and tasks: ActionDBAAccessorImpl
- Kerberos related events: CreateKeytabFilesServerAction, 
CreatePrincipalServerAction, DestroyPrincipalsServerAction, 
FinalizeKerberosServerAction
- REST api: BaseService

Architecture:
AuditLogger injectable is created and wired in by Guice. The default 
implementation (AuditLoggerDefaultImpl) for this interface logs to a file. 
Considering performance impact, there is a buffered audit logger implementation 
(BufferedAuditLogger) that is a wrapper for an audit logger implementation and 
does the logging asynchronously.

Audit loggers have a single log method that accepts an AuditEvent object. At 
the entry points an AuditEvent is assembled and log method is called (except 
for the REST api, see below...)

REST Api:
In BaseService, there is a RequestAuditLogger, that is responsible for handling 
and assembling AuditEvents. It also has a log method, but the parameters for 
that is the Request and Result objects.
RequestAuditLogger is a small framework for that plugins can be implemented to 
handle different type of requests.
Plugins implements RequestAuditEventCreator interface and can be set to handle 
one or multiple request types (PUT, POST, DELETE, etc...), resource types 
(HOST_COMPONENT, BLUEPRINT, etc..) and results statuses (200 OK, 202 ACCEPTED, 
404 NOT_FOUND, etc). If null is returned by these getters, it means "all". If 
there are more than one RequestAuditEventCreators can handle a request, then 
the most specific is called. (Priority order: resourceType > resultStatus > 
requestType)
For example it is possible to define a plugin for all the POST requests, but if 
there is an other plugin for POST request and for resource type HOST_COMPONENT, 
then this latter is used (because it is more specific). The method 
createAuditEvent is responsible for creating the AuditEvent object for the 
RequestAuditEventLogger. If null is returned, then request is not logged (can 
be used for ignoring events).
Plugins are registered in ControllerModule and wired by guice to the 
RequestAuditLogger. If a new plugin is needed, then implementing the 
RequestAuditEventCreator interface and registering it in Guice is the only 
things to do. (open-closed principle)


Diffs (updated)
-----

  ambari-project/pom.xml b3d9ca2 
  ambari-server/conf/unix/log4j.properties 2ee32d4 
  ambari-server/conf/windows/log4j.properties cc40f74 
  ambari-server/pom.xml 1e44517 
  ambari-server/src/main/conf/log4j.properties 8e6652d 
  
ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
 429f573 
  
ambari-server/src/main/java/org/apache/ambari/server/api/services/BaseRequest.java
 a33e8a7 
  
ambari-server/src/main/java/org/apache/ambari/server/api/services/BaseService.java
 7945599 
  
ambari-server/src/main/java/org/apache/ambari/server/api/services/LogoutService.java
 df8faaa 
  
ambari-server/src/main/java/org/apache/ambari/server/api/services/Request.java 
ff9b6c7 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/AsyncAuditLogger.java
 PRE-CREATION 
  ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLogger.java 
PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLoggerDefaultImpl.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLoggerModule.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/AbstractAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/AbstractUserAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/AccessUnauthorizedAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/AuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/LoginAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/LogoutAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/OperationStatusAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/TaskStatusAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/kerberos/AbstractKerberosAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/kerberos/ChangeSecurityStateKerberosAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/kerberos/CreateKeyTabKerberosAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/kerberos/CreatePrincipalKerberosAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/kerberos/DestroyPrincipalKerberosAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/ActivateUserRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/AddAlertGroupRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/AddAlertTargetRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/AddBlueprintRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/AddComponentToHostRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/AddCredentialRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/AddHostRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/AddRepositoryRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/AddRepositoryVersionRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/AddRequestRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/AddUpgradeRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/AddUserToGroupRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/AddViewInstanceRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/AdminUserRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/BlueprintExportRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/ChangeAlertGroupRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/ChangeAlertTargetRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/ChangeRepositoryVersionRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/ChangeViewInstanceRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/ClientConfigDownloadRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/ClusterNameChangeRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/ClusterPrivilegeChangeRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/ConfigurationChangeRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/CreateGroupRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/CreateUserRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/DeleteAlertGroupRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/DeleteAlertTargetRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/DeleteBlueprintRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/DeleteGroupRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/DeleteHostRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/DeleteRepositoryVersionRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/DeleteServiceRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/DeleteUserRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/DeleteViewInstanceRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/MembershipChangeRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/PrivilegeChangeRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/RemoveUserFromGroupRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/StartOperationRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/UpdateRepositoryRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/UpdateUpgradeItemRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/UserPasswordChangeRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/ViewPrivilegeChangeRequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/RequestAuditEvent.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/RequestAuditEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/RequestAuditLogger.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/RequestAuditLoggerImpl.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/AlertGroupEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/AlertTargetEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/BlueprintEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/BlueprintExportEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ComponentEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ConfigurationChangeEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/CredentialEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/DefaultEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/GroupEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/HostEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/MemberEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/PrivilegeEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RecommendationIgnoreEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RepositoryEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RepositoryVersionEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RequestEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ServiceConfigDownloadEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ServiceEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UnauthorizedEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UpgradeEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UpgradeItemEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UserEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ValidationIgnoreEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ViewInstanceEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ViewPrivilegeEventCreator.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
 9404506 
  
ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
 076f850 
  
ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
 daca64d 
  
ambari-server/src/main/java/org/apache/ambari/server/security/authentication/AmbariAuthenticationFilter.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilter.java
 4be804d 
  
ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AuthorizationHelper.java
 b136182 
  
ambari-server/src/main/java/org/apache/ambari/server/security/authorization/PermissionHelper.java
 PRE-CREATION 
  
ambari-server/src/main/java/org/apache/ambari/server/serveraction/AbstractServerAction.java
 33191bf 
  
ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreateKeytabFilesServerAction.java
 cadfe28 
  
ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreatePrincipalsServerAction.java
 8009ae1 
  
ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/DestroyPrincipalsServerAction.java
 93daae8 
  
ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/FinalizeKerberosServerAction.java
 c710b8e 
  ambari-server/src/main/java/org/apache/ambari/server/utils/RequestUtils.java 
PRE-CREATION 
  ambari-server/src/main/resources/webapp/WEB-INF/spring-security.xml 3bbc785 
  
ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
 f88cf8e 
  
ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java
 d7d08b1 
  
ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java
 7f3d763 
  
ambari-server/src/test/java/org/apache/ambari/server/api/services/BaseServiceTest.java
 19eeffb 
  
ambari-server/src/test/java/org/apache/ambari/server/audit/AccessUnauthorizedAuditEventTest.java
 PRE-CREATION 
  
ambari-server/src/test/java/org/apache/ambari/server/audit/LoginAuditEventTest.java
 PRE-CREATION 
  
ambari-server/src/test/java/org/apache/ambari/server/audit/LogoutAuditEventTest.java
 PRE-CREATION 
  
ambari-server/src/test/java/org/apache/ambari/server/audit/OperationStatusAuditEventTest.java
 PRE-CREATION 
  
ambari-server/src/test/java/org/apache/ambari/server/audit/StartOperationRequestAuditEventTest.java
 PRE-CREATION 
  
ambari-server/src/test/java/org/apache/ambari/server/audit/request/AbstractBaseCreator.java
 PRE-CREATION 
  
ambari-server/src/test/java/org/apache/ambari/server/audit/request/AllGetCreator.java
 PRE-CREATION 
  
ambari-server/src/test/java/org/apache/ambari/server/audit/request/AllPostAndPutCreator.java
 PRE-CREATION 
  
ambari-server/src/test/java/org/apache/ambari/server/audit/request/DefaultEventCreatorTest.java
 PRE-CREATION 
  
ambari-server/src/test/java/org/apache/ambari/server/audit/request/PutHostComponentCreator.java
 PRE-CREATION 
  
ambari-server/src/test/java/org/apache/ambari/server/audit/request/RequestAuditLogModule.java
 PRE-CREATION 
  
ambari-server/src/test/java/org/apache/ambari/server/audit/request/RequestAuditLoggerTest.java
 PRE-CREATION 
  
ambari-server/src/test/java/org/apache/ambari/server/checks/UpgradeCheckOrderTest.java
 d4ff566 
  
ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
 ca062c0 
  
ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
 f6027f3 
  
ambari-server/src/test/java/org/apache/ambari/server/notifications/DispatchFactoryTest.java
 6834d5c 
  
ambari-server/src/test/java/org/apache/ambari/server/orm/InMemoryDefaultTestModule.java
 3ecfe14 
  
ambari-server/src/test/java/org/apache/ambari/server/orm/JdbcPropertyTest.java 
c07382b 
  
ambari-server/src/test/java/org/apache/ambari/server/security/authentication/AmbariAuthenticationFilterTest.java
 PRE-CREATION 
  
ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilterTest.java
 9db3904 
  
ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderForDNWithSpaceTest.java
 da8d9bc 
  
ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderTest.java
 d48be85 
  
ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLocalUserDetailsServiceTest.java
 c410f5b 
  
ambari-server/src/test/java/org/apache/ambari/server/security/authorization/LdapServerPropertiesTest.java
 0797239 
  
ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/KerberosServerActionTest.java
 ce97f25 
  
ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/UpdateKerberosConfigsServerActionTest.java
 d6f9efe 
  
ambari-server/src/test/java/org/apache/ambari/server/utils/RequestUtilsTest.java
 PRE-CREATION 

Diff: https://reviews.apache.org/r/44265/diff/


Testing
-------

Unit tests are added to cover functionality. 

All tests passed on local machine.


Thanks,

Daniel Gergely

Reply via email to