【发布时间】:2018-05-09 20:44:18
【问题描述】:
我有一个表,我正在尝试对其应用策略,设置如下所示:
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),但它们都有相同的行为,我在这里做错了吗?
【问题讨论】:
-
使用
using (false)是否有效? -
不,它没有。 @a_horse_with_no_name
-
你在哪里试过?..真正的数据库还是一些小提琴?..
-
我尝试连接到远程服务器并设置 postgres 的 docker 实例。 @VaoTsun
-
试试
alter view api.mytable owner to anonymous ;
标签: sql postgresql row-level-security