Политика уровня строк не работает на моем столе - PullRequest
0 голосов
/ 09 мая 2018

У меня есть таблица, к которой я пытаюсь применить политику, настройка выглядит примерно так:

create role anonymous nologin;
create schema api;
create schema private;
create table private.mytable(
    id  serial primary key,
    description text default ''
);
create view api.mytable as select * from private.mytable;
insert into api.mytable (description) values ('row 1'), ('row 2');
grant usage on schema api to anonymous;
grant select on api.mytable to anonymous;
alter table private.mytable enable row level security;
create policy mytable_policy on private.mytable
    for select
    using (null);

Когда я устанавливаю роль на anonymous и выбираю все записи из mytable:

set role anonymous;
select * from api.mytable;

Я не ожидаю возврата строк, так как мое выражение в предложении using в политике - null, но я получаю все.
Я пробовал разные версии postgresql (9.5, 9.6, 10.3), но все они ведут себя одинаково, я что-то здесь не так делаю?

1 Ответ

0 голосов
/ 09 мая 2018

обновление

https://stackoverflow.com/a/33863371/5315974

RLS не будет работать с такими представлениями. Вы можете использовать RLS для представлений, хотя это ограничено.

что вы можете сделать, это

alter view api.mytable owner to anonymous ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...