Re: Audit trail - implementation strategies

2007-10-26 Thread wild_oscar

Well, I'm using Hibernate for persistance, so I guess the implementation
would be somehow different. Nevertheless, I'm looking at this solution.

For my understanding, with this approach you monitor the CRUD transactions
(via JPA/Toplink features) and audit each CRUD event individually, correct?



Brian Trzupek wrote:
> 
> We just did the very same thing. Here is how we did it
> 
> We are using JPA/Toplink for our database layer, so our  
> implementation is highly dependent on that.
> 
> We then used an approach based on this blog entry:
> http://tapestryofthoughts.blogspot.com/2007/05/glassfish-and-audit- 
> logging.html
> 
> Our modification to his approach was (well his doesn't compile on our  
> version of Toplink , so we changed that):
> 1) We implemented the PrincipalAware interface for our Action classes  
> so that we can use JAAS for authentication and pass the remote User  
> identity through to the Audit interface (in the Model) and know who  
> actually did the change.
> 2) We incorporated a 'mode' for audit logging. We have things like  
> AUDIT (where that is a interface driven event, like approving  
> resource access AUDIT_APPROVE etc), VIEW (where that is another  
> interface driven event representing that a user 'saw' something) and  
> general field level CRUD operations on the core entities we wanted  
> audited.
> 3) Then we implemented some specific rules where given AUDIT events  
> would trigger full field level audits (essentially serializing the  
> object) in the case where the rule trigger was an event that would  
> 'have historical significance'.
> 
> I know it sounds a bit gnarly, but is VERY elegant and extensible.  
> Give it a whirl and let me know if you need any help.
> 
> Thanks,
> Brian-
> 
> On Oct 25, 2007, at 1:35 PM, wild_oscar wrote:
> 
>>
>> I want to implement an audit trail in my application. Basically, I  
>> want to
>> record every database change, in the form "previous value, new  
>> value, who
>> changed it, when".
>>
>> I want to debate with you the best strategy in terms of  
>> minimization of data
>> transfer between the browser and the server and server operations.
>>
>> The user accesses a page and gets data from the database on a form. He
>> changes, say, one textfielnd and submits the form.
>>
>> We now need to see where changes occurred and record them, and  
>> therefore
>> need the old values and new values.
>>
>> What do you think of different approaches to this problem? My  
>> current ideas
>> are:
>>
>> 1) Resubmit the first query to get the "oldvalues" on the second  
>> submission
>> and then compare with the new values. Problem I see is that we'll  
>> have one
>> redundant query on each operation (first query to display values to  
>> the user
>> and second query to get the old values again in the database). In  
>> large
>> applications, between the 1st and 2nd queries data may have changed.
>>
>> 2) Have a hidden field for each value on the display form with the  
>> oldValue.
>> Main problem I see is the increased workload on the jsp page - for  
>> each
>> input field we need to manually have a hidden "oldValue" field...
>>
>> 3) Storing the oldObject in session right before the first display  
>> page.
>> Workload increases in Session management, to wisely add and remove  
>> these
>> objects from session.
>>
>> Can you share your ideas, point different approaches or suggest  
>> improvements
>> on the ones I mentioned?
>>
>> -- 
>> View this message in context: http://www.nabble.com/Audit-trail--- 
>> implementation-strategies-tf4692772.html#a13413247
>> Sent from the Struts - User mailing list archive at Nabble.com.
>>
>>
>> -
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
> 
> 
> -
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Audit-trail---implementation-strategies-tf4692772.html#a13423517
Sent from the Struts - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Audit trail - implementation strategies

2007-10-25 Thread Brian Trzupek

We just did the very same thing. Here is how we did it

We are using JPA/Toplink for our database layer, so our  
implementation is highly dependent on that.


We then used an approach based on this blog entry:
http://tapestryofthoughts.blogspot.com/2007/05/glassfish-and-audit- 
logging.html


Our modification to his approach was (well his doesn't compile on our  
version of Toplink , so we changed that):
1) We implemented the PrincipalAware interface for our Action classes  
so that we can use JAAS for authentication and pass the remote User  
identity through to the Audit interface (in the Model) and know who  
actually did the change.
2) We incorporated a 'mode' for audit logging. We have things like  
AUDIT (where that is a interface driven event, like approving  
resource access AUDIT_APPROVE etc), VIEW (where that is another  
interface driven event representing that a user 'saw' something) and  
general field level CRUD operations on the core entities we wanted  
audited.
3) Then we implemented some specific rules where given AUDIT events  
would trigger full field level audits (essentially serializing the  
object) in the case where the rule trigger was an event that would  
'have historical significance'.


I know it sounds a bit gnarly, but is VERY elegant and extensible.  
Give it a whirl and let me know if you need any help.


Thanks,
Brian-

On Oct 25, 2007, at 1:35 PM, wild_oscar wrote:



I want to implement an audit trail in my application. Basically, I  
want to
record every database change, in the form "previous value, new  
value, who

changed it, when".

I want to debate with you the best strategy in terms of  
minimization of data

transfer between the browser and the server and server operations.

The user accesses a page and gets data from the database on a form. He
changes, say, one textfielnd and submits the form.

We now need to see where changes occurred and record them, and  
therefore

need the old values and new values.

What do you think of different approaches to this problem? My  
current ideas

are:

1) Resubmit the first query to get the "oldvalues" on the second  
submission
and then compare with the new values. Problem I see is that we'll  
have one
redundant query on each operation (first query to display values to  
the user
and second query to get the old values again in the database). In  
large

applications, between the 1st and 2nd queries data may have changed.

2) Have a hidden field for each value on the display form with the  
oldValue.
Main problem I see is the increased workload on the jsp page - for  
each

input field we need to manually have a hidden "oldValue" field...

3) Storing the oldObject in session right before the first display  
page.
Workload increases in Session management, to wisely add and remove  
these

objects from session.

Can you share your ideas, point different approaches or suggest  
improvements

on the ones I mentioned?

--
View this message in context: http://www.nabble.com/Audit-trail--- 
implementation-strategies-tf4692772.html#a13413247

Sent from the Struts - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: Audit trail - implementation strategies

2007-10-25 Thread wild_oscar

As a matter of fact, I have implemented an audit trail solution with triggers
in the past. I am trying to think of an alternative in the business layer
now, although implementing it directly in the database is an option if I
find this approach to be too troublesome.


Rod Bollinger wrote:
> 
> Depending on the DB you can implement this using triggers and log your
> audit
> trail directly in the DB itself.
> 
> -Rod
> 
> -Original Message-
> From: wild_oscar [mailto:[EMAIL PROTECTED] 
> Sent: Thursday, October 25, 2007 14:36
> To: user@struts.apache.org
> Subject: Audit trail - implementation strategies
> 
> 
> I want to implement an audit trail in my application. Basically, I want to
> record every database change, in the form "previous value, new value, who
> changed it, when".
> 
> I want to debate with you the best strategy in terms of minimization of
> data
> transfer between the browser and the server and server operations.
> 
> The user accesses a page and gets data from the database on a form. He
> changes, say, one textfield and submits the form.
> 
> We now need to see where changes occurred and record them, and therefore
> need the old values and new values.
> 
> What do you think of different approaches to this problem? My current
> ideas
> are:
> 
> 1) Resubmit the first query to get the "oldvalues" on the second
> submission
> and then compare with the new values. Problem I see is that we'll have one
> redundant query on each operation (first query to display values to the
> user
> and second query to get the old values again in the database). In large
> applications, between the 1st and 2nd queries data may have changed.
> 
> 2) Have a hidden field for each value on the display form with the
> oldValue.
> Main problem I see is the increased workload on the jsp page - for each
> input field we need to manually have a hidden "oldValue" field...
> 
> 3) Storing the oldObject in session right before the first display page.
> Workload increases in Session management, to wisely add and remove these
> objects from session.
> 
> Can you share your ideas, point different approaches or suggest
> improvements
> on the ones I mentioned?
> 
> -- 
> View this message in context:
> http://www.nabble.com/Audit-trail---implementation-strategies-tf4692772.html
> #a13413247
> Sent from the Struts - User mailing list archive at Nabble.com.
> 
> 
> -
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 
> 
> -
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Audit-trail---implementation-strategies-tf4692772.html#a13413561
Sent from the Struts - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: Audit trail - implementation strategies

2007-10-25 Thread Rod Bollinger
Depending on the DB you can implement this using triggers and log your audit
trail directly in the DB itself.

-Rod

-Original Message-
From: wild_oscar [mailto:[EMAIL PROTECTED] 
Sent: Thursday, October 25, 2007 14:36
To: user@struts.apache.org
Subject: Audit trail - implementation strategies


I want to implement an audit trail in my application. Basically, I want to
record every database change, in the form "previous value, new value, who
changed it, when".

I want to debate with you the best strategy in terms of minimization of data
transfer between the browser and the server and server operations.

The user accesses a page and gets data from the database on a form. He
changes, say, one textfield and submits the form.

We now need to see where changes occurred and record them, and therefore
need the old values and new values.

What do you think of different approaches to this problem? My current ideas
are:

1) Resubmit the first query to get the "oldvalues" on the second submission
and then compare with the new values. Problem I see is that we'll have one
redundant query on each operation (first query to display values to the user
and second query to get the old values again in the database). In large
applications, between the 1st and 2nd queries data may have changed.

2) Have a hidden field for each value on the display form with the oldValue.
Main problem I see is the increased workload on the jsp page - for each
input field we need to manually have a hidden "oldValue" field...

3) Storing the oldObject in session right before the first display page.
Workload increases in Session management, to wisely add and remove these
objects from session.

Can you share your ideas, point different approaches or suggest improvements
on the ones I mentioned?

-- 
View this message in context:
http://www.nabble.com/Audit-trail---implementation-strategies-tf4692772.html
#a13413247
Sent from the Struts - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]