From: | "Joris Dobbelsteen" <Joris(at)familiedobbelsteen(dot)nl> |
---|---|
To: | "Marcelo de Moraes Serpa" <celoserpa(at)gmail(dot)com> |
Cc: | <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Audit-trail engine: getting the application's layer user_id |
Date: | 2007-04-24 23:18:52 |
Message-ID: | 73427AD314CC364C8DF0FFF9C4D693FF037AC9@nehemiah.joris2k.local |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
________________________________
From: pgsql-general-owner(at)postgresql(dot)org
[mailto:pgsql-general-owner(at)postgresql(dot)org] On Behalf Of Marcelo de
Moraes Serpa
Sent: dinsdag 24 april 2007 21:06
To: pgsql-general(at)postgresql(dot)org
Subject: Re: [GENERAL] Audit-trail engine: getting the
application's layer user_id
Thank you for the replies.
@Richard: I've thought about having one DB user for each APP
user. However, a coworker told me that it would infeasible to do that on
the web enviroment, specifically for J2EE where a DB connection pool is
used, so I gave up on that.
As Richard mentioned, he has done it.
Remember, for the pool you DO NOT setup a new connection every time but
you can certainly utilize the pool. The trick is the postgresql idea of
the Role-Based Access Control (RBAC) implementation. I.e. you can just
do a SET LOCAL ROLE <rolename>.
After transaction commit or rollback, or execution of SET LOCAL ROLE
NONE or RESET ROLE you will have your original role (own user) again.
This should work just fine.
See also:
http://www.postgresql.org/docs/8.1/interactive/sql-set-role.html
@Jorge: Is this "connection id" you say equivalent to the
"applicationid" mentioned in the ibm db2 article? If so, how could I get
this data through my application?
On 4/24/07, Marcelo de Moraes Serpa <celoserpa(at)gmail(dot)com> wrote:
Thank you for the replies.
@Richard: I've thought about having one DB user for each
APP user. However, a coworker told me that it would infeasible to do
that on the web enviroment, specifically for J2EE where a DB connection
pool is used, so I gave up on that.
@Jorge: Is this "connection id" you say equivalent to
the "applicationid" mentioned in the ibm db2 article? If so, how could I
get this data through my application?
Marcelo.
On 4/24/07, Jorge Godoy <jgodoy(at)gmail(dot)com> wrote:
"Marcelo de Moraes Serpa" <celoserpa(at)gmail(dot)com>
writes:
> I forgot to add the link to the article I've
mentioned:
>
>
http://www-128.ibm.com/developerworks/db2/library/techarticle/0302stolze
/0302stolze.html#section2b
>
> This is what I'd like to do on PostgreSQL,
So, translating it to a simpler example:
You want that your function gets the
connection ID it is using and
ties it to your current user ID at your
application and then have
all your tables use a trigger to retrieve
the user name from the
auxiliar table that maps "connection ID ->
user", right?
That's what's in that page: a UDF (user defined
function) named
getapplicationid() that will return the user
login / name / whatever and
triggers.
What is preventing you from writing that? What
is your doubt with
regards to how create that feature on your
database?
--
Jorge Godoy <jgodoy(at)gmail(dot)com >
From | Date | Subject | |
---|---|---|---|
Next Message | Benjamin Arai | 2007-04-25 04:25:12 | Re: Slow query using simple equality operators |
Previous Message | John Smith | 2007-04-24 22:50:58 | copy or create table for data logging? |