Re: [HACKERS] proposal: schema variables

From: Fabien COELHO <coelho(at)cri(dot)ensmp(dot)fr>
To: Pavel Luzanov <p(dot)luzanov(at)postgrespro(dot)ru>
Cc: PostgreSQL Developers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: [HACKERS] proposal: schema variables
Date: 2018-08-29 18:10:02
Message-ID: alpine.DEB.2.21.1808291954300.14012@lancre
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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.

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2018-08-29 18:23:58 Re: FailedAssertion on partprune
Previous Message Gunnlaugur Thor Briem 2018-08-29 18:09:53 pg_upgrade fails saying function unaccent(text) doesn't exist