Re: Wrong security context for deferred triggers? - Mailing list pgsql-hackers

From Noah Misch
Subject Re: Wrong security context for deferred triggers?
Date
Msg-id 20250415155850.9b.nmisch@google.com
Whole thread Raw
In response to Re: Wrong security context for deferred triggers?  (Pavel Stehule <pavel.stehule@gmail.com>)
List pgsql-hackers
On Thu, Jan 23, 2025 at 07:28:19PM +0100, Laurenz Albe wrote:
> On Thu, 2025-01-23 at 12:30 -0500, Tom Lane wrote:
> > Pushed with some cosmetic adjustments
> 
> Thank you!

commit 01463e1 wrote:
> +NOTICE:  I am regress_groot

Let's not incur trivially-avoidable trademark risks
(https://google.com/search?q=%22i+am+groot%22) in the source tree.

> --- a/doc/src/sgml/trigger.sgml
> +++ b/doc/src/sgml/trigger.sgml
> @@ -129,6 +129,10 @@
>      In all cases, a trigger is executed as part of the same transaction as
>      the statement that triggered it, so if either the statement or the
>      trigger causes an error, the effects of both will be rolled back.
> +    Also, the trigger will always run in the security context of the role
> +    that executed the statement that caused the trigger to fire, unless
> +    the trigger function is defined as <literal>SECURITY DEFINER</literal>,
> +    in which case it will run as the function owner.

Phrase "the role that executed the statement" doesn't match what happens if
the role changes mid-statement.  Example of a statement that does so:

  select set_config('role', rolname, true), current_user from pg_authid;

The term "security context" doesn't otherwise appear in doc/.  I would just
change "run in the security context of the role" to "run as the role".  That's
simpler and less likely to create an impression that this stops attacks.



pgsql-hackers by date:

Previous
From: Christoph Berg
Date:
Subject: Re: [PoC] Federated Authn/z with OAUTHBEARER
Next
From: Dimitrios Apostolou
Date:
Subject: Re: Fundamental scheduling bug in parallel restore of partitioned tables