Re: [HACKERS] proposal: schema variables - Mailing list pgsql-hackers

From Fabien COELHO
Subject Re: [HACKERS] proposal: schema variables
Date
Msg-id alpine.DEB.2.21.1808291954300.14012@lancre
Whole thread Raw
In response to Re: [HACKERS] proposal: schema variables  (Pavel Luzanov <p.luzanov@postgrespro.ru>)
List pgsql-hackers
Hello Pavel L.

>> I do not understand your point, as usual. I raise a factual issue about 
>> security, and you do not answer how this can be solved with your proposal, 
>> but appeal to argument of authority and declare your "strong opinion".
>> 
>> I do not see any intrinsic opposition between having session objects and 
>> transactions. Nothing prevents a session object to be transactional beyond 
>> your willingness that it should not be.
>> 
>> Now, I do expect all PostgreSQL features to be security-wise, whatever 
>> their scope.
>> 
>> I do not think that security should be traded for "cheap & fast", esp as 
>> the sole use case for a feature is a security pattern that cannot be 
>> implemented securely with it. This appears to me as a huge contradiction, 
>> hence my opposition against this feature as proposed.
>
> I can't to agree with your position.
>
> Consider this example. I want to record some inappropriate user actions 
> to audit table and rollback transaction. But aborting transaction will 
> also abort record to audit table. So, do not use tables, becouse they 
> have security implications.

Indeed, you cannot record a transaction failure from a transaction.

> This is very similar to your approach.

I understand that your point is that some use case could require a non 
transactional session variable. I'm not sure of how the use case would go 
on though, because once the "attacker" disconnects, the session variable 
disappears, so it does not record that there was a problem.

Anyway, I'm not against having session variables per se. I'm argumenting 
that there is a good case to have them transactional by default, and 
possibly an option to have them non transactional if this is really needed 
by some use case to provide.

The only use case put forward by Pavel S. is the security audit one 
where a session variable stores that audit checks have been performed, 
which AFAICS cannot be implemented securely with the proposed non 
transactional session variables.

-- 
Fabien.


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: buildfarm: could not read block 3 in file "base/16384/2662": read only 0 of 8192 bytes
Next
From: Robert Haas
Date:
Subject: Re: FailedAssertion on partprune