Wrong security context for deferred triggers?

Поиск
Список
Период
Сортировка
Искать
От
Laurenz Albe
Тема
Wrong security context for deferred triggers?
Дата
Msg-id
77ee784cf248e842f74588418f55c2931e47bd78.camel@cybertec.at
Список
Дерево обсуждения
Wrong security context for deferred triggers? Laurenz Albe <laurenz.albe@cybertec.at>
Re: Wrong security context for deferred triggers? Laurenz Albe <laurenz.albe@cybertec.at>
Re: Wrong security context for deferred triggers? Isaac Morland <isaac.morland@gmail.com>
Re: Wrong security context for deferred triggers? Tomas Vondra <tomas.vondra@enterprisedb.com>
Re: Wrong security context for deferred triggers? Laurenz Albe <laurenz.albe@cybertec.at>
Re: Wrong security context for deferred triggers? Laurenz Albe <laurenz.albe@cybertec.at>
Re: Wrong security context for deferred triggers? Laurenz Albe <laurenz.albe@cybertec.at>
Re: Wrong security context for deferred triggers? Pavel Stehule <pavel.stehule@gmail.com>
Re: Wrong security context for deferred triggers? Laurenz Albe <laurenz.albe@cybertec.at>
Re: Wrong security context for deferred triggers? Pavel Stehule <pavel.stehule@gmail.com>
Re: Wrong security context for deferred triggers? Joseph Koshakow <koshy44@gmail.com>
Re: Wrong security context for deferred triggers? Laurenz Albe <laurenz.albe@cybertec.at>
Re: Wrong security context for deferred triggers? Joseph Koshakow <koshy44@gmail.com>
Re: Wrong security context for deferred triggers? Laurenz Albe <laurenz.albe@cybertec.at>
Re: Wrong security context for deferred triggers? Joseph Koshakow <koshy44@gmail.com>
Re: Wrong security context for deferred triggers? Laurenz Albe <laurenz.albe@cybertec.at>
Re: Wrong security context for deferred triggers? Pavel Stehule <pavel.stehule@gmail.com>
Re: Wrong security context for deferred triggers? Joseph Koshakow <koshy44@gmail.com>
Re: Wrong security context for deferred triggers? "David G. Johnston" <david.g.johnston@gmail.com>
Re: Wrong security context for deferred triggers? Joseph Koshakow <koshy44@gmail.com>
Re: Wrong security context for deferred triggers? "David G. Johnston" <david.g.johnston@gmail.com>
Re: Wrong security context for deferred triggers? Laurenz Albe <laurenz.albe@cybertec.at>
Re: Wrong security context for deferred triggers? "David G. Johnston" <david.g.johnston@gmail.com>
Re: Wrong security context for deferred triggers? Laurenz Albe <laurenz.albe@cybertec.at>
Re: Wrong security context for deferred triggers? Bennie Swart <bennieswart@gmail.com>
Re: Wrong security context for deferred triggers? Isaac Morland <isaac.morland@gmail.com>
Re: Wrong security context for deferred triggers? Joseph Koshakow <koshy44@gmail.com>
Re: Wrong security context for deferred triggers? Nico Williams <nico@cryptonector.com>
Create a table and a deferrable constraint trigger:

 CREATE TABLE tab (i integer);

 CREATE FUNCTION trig() RETURNS trigger
    LANGUAGE plpgsql AS
 $$BEGIN
    RAISE NOTICE 'current_user = %', current_user;
    RETURN NEW;
 END;$$;

 CREATE CONSTRAINT TRIGGER trig AFTER INSERT ON tab
    DEFERRABLE INITIALLY IMMEDIATE
    FOR EACH ROW EXECUTE FUNCTION trig();

Create a role and allow it INSERT on the table:

 CREATE ROLE duff;

 GRANT INSERT ON tab TO duff;

Now become that role and try some inserts:

 SET ROLE duff;

 BEGIN;

 INSERT INTO tab VALUES (1);
 NOTICE:  current_user = duff

That looks ok; the current user is "duff".

 SET CONSTRAINTS ALL DEFERRED;

 INSERT INTO tab VALUES (2);

Become a superuser again and commit:

 RESET ROLE;

 COMMIT;
 NOTICE:  current_user = postgres


So a deferred constraint trigger does not run with the same security context
as an immediate trigger.  This is somewhat nasty in combination with
SECURITY DEFINER functions: if that function performs an operation, and that
operation triggers a deferred trigger, that trigger will run in the wrong
security context.

This behavior looks buggy to me.  What do you think?
I cannot imagine that it is a security problem, though.

Yours,
Laurenz Albe


В списке pgsql-hackers по дате отправления
От: Matthias van de Meent
Дата:
От: Jeevan Chalke
Дата:
FAQ