BACKGROUND
In a recent implementation for a US state government I used Tools4ever UMRA to consolidate enterprise-level audit logging for various processes – password resets, user provisioning, etc. The idea here was to take these common processes that require audit compliance, but are enabled by different systems (that keep their own logs), and centralize their logging in a SQL server table with common schema. Later, this table would be used for auditing and reporting.
UMRA ARCHITECTURE
The reason UMRA is the perfect tool for this is due to it’s architecture – it runs as a Windows service under a privileged Active Directory account. All projects and actions contained within the service are stateless, so elastic server farms can be set up. Interop capabilities are exposed over a COM interface, which is very easy to work with. Also, we can easily make wrappers over the COM interface, for sake of being more friendly towards external systems – i.e. an HTTP web service.
“AUDIT LOG” UMRA PROJECT
The idea behind this project is to make it easy for whoever executes it to take full advantage of the logging schema. When it comes to audit logging, there are really 3 pieces to it: (1) the action (2) the user performing the action – “actor” (3) the user against whom the action is being performed – “subject”. You can then break them down further – action’s details (code, text, new/old value, etc.) and user information (username, display name, location, IDs, etc.).
That’s a lot of data to deal with and UMRA lets us encapsulate this to a simple interface – a simple “Audit Log” project which could take in just 2 variables – Action Code and Subject Username, and fill in the rest by itself. Also, the project is flexible enough to allow passing all possible DB schema variables.
USING THE PROJECT
Ultimately, various external systems can easily call the project to enable centralized audit logging throughout the enterprise:
- Modern web-service-based web applications – via writing IIS WebMethod wrappers for calling the UMRA project
- Legacy ASP web applications – via executing the COM object directly
- Batch scripts – also via COM
- Other UMRA projects – through UMRA itself