Обсуждение: pg_dump & RLS

Поиск
Список
Период
Сортировка

pg_dump & RLS

От
Eduard Català
Дата:
Hi all,
Sorry if this is not the appropriate list, I think so.

- ¿is posible to export using pg_dump only the rows that satisfy a rls check?
- Of course, yes, use the --enable-row-security option in pg_dump
- Yes, but my RLS expression relies on a GUC:
CREATE POLICY my_policy  ON my_table  USING (company_id = current_setting('company_id')::int);
Prior to starting dumping I need to set the company_id GUC into the session, if not, there's no way to only export some rows.

Any ideas? 
- Execute a command before starting the export
- Some kind of login trigger for a special user
- ...

Thank you!

Re: pg_dump & RLS

От
Tom Lane
Дата:
=?UTF-8?Q?Eduard_Catal=C3=A0?= <eduard.catala@gmail.com> writes:
> - ¿is posible to export using pg_dump only the rows that satisfy a rls
> check?
> - Of course, yes, use the --enable-row-security option in pg_dump
> - Yes, but my RLS expression relies on a GUC:
> CREATE POLICY my_policy  ON my_table  USING (company_id =
> *current_setting('company_id')::int*);

That isn't the world's greatest design, but you should be
able to do something like

export PGOPTIONS="-c custom.company_id=42"
pg_dump ...

I kind of wonder why bother with RLS if any user can bypass it
just by changing a GUC, though.  It'd be better for the policy
to check something like role membership.

            regards, tom lane