Re: SQL-standard function bodies and creating SECURITY DEFINER routines securely

From: Noah Misch <noah(at)leadboat(dot)com>
To: Bruce Momjian <bruce(at)momjian(dot)us>, Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Erki Eessaar <erki(dot)eessaar(at)taltech(dot)ee>, "pgsql-docs(at)lists(dot)postgresql(dot)org" <pgsql-docs(at)lists(dot)postgresql(dot)org>
Subject: Re: SQL-standard function bodies and creating SECURITY DEFINER routines securely
Date: 2022-09-12 04:46:47
Message-ID: 20220912044647.GA1404410@rfd.leadboat.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-docs

On Thu, Sep 08, 2022 at 01:20:31PM +0200, Peter Eisentraut wrote:
> On 01.09.22 03:11, Bruce Momjian wrote:
> >On Tue, Aug 16, 2022 at 03:38:13PM -0400, Bruce Momjian wrote:
> >>On Tue, Aug 16, 2022 at 03:34:22PM -0400, Tom Lane wrote:
> >>>Bruce Momjian <bruce(at)momjian(dot)us> writes:
> >>>>I have written the attached patch to mention this issue about sql_body
> >>>>functions.
> >>>
> >>>Spell-check, please. Seems OK otherwise.

> >Patch applied back to PG 10. Thanks.
>
> This feature is new in PG 14, so backpatching further than that doesn't make
> sense.

Even an sql_body function should override search_path, because it may call
other code that reacts to search_path. Separately, the new sentence is near
the start of a section that addresses more than just search_path. The section
ends with the "revoke the default PUBLIC privileges" topic, which is no less
relevant to sql_body functions.

Documentation needn't explain cases that make a best practice optional, and it
should explain only valuable ones. Omitting search_path on sql_body SECURITY
DEFINER functions isn't that valuable. If it were valuable, the patch's
sentence gives too little detail for the reader to decide what's safe for a
given function. I think this section should not attempt such detail. It's
enough to give the best practice, as the documentation did before this change.

In response to

Responses

Browse pgsql-docs by date

  From Date Subject
Next Message Joe Conway 2022-09-12 19:23:38 Re: how to check specific user_name have “SELECT ON ALL TABLES IN SCHEMA <tableschema>” privilege or not ?
Previous Message David G. Johnston 2022-09-11 16:03:23 Re: how to check specific user_name have “SELECT ON ALL TABLES IN SCHEMA <tableschema>” privilege or not ?