Har*_*ari 0 postgresql row-level-security psql
有许多用户连接到数据库。我必须仅对一个用户 david 应用行级安全性(RLS),所有其他用户应该能够像往常一样访问表。
ALTER TABLE accounts ENABLE ROW LEVEL SECURITY;
CREATE POLICY accounts_web ON accounts TO david USING (id = current_setting('rls.tenant_id' )::uuid);
Run Code Online (Sandbox Code Playgroud)
我可以创建一个类似的策略CREATE POLICY accounts_no_rls ON accounts TO Michel USING (true);
,但我必须为每个用户创建一个策略。
是否可以仅使用两项策略(一项针对大卫的策略,第二项针对所有其他用户的策略)?
PUBLIC您可以为角色(即所有用户)创建一个宽松策略,以授予他们对表的访问权限,然后仅为 david 添加第二个限制性策略,该策略将按行限制访问。
ALTER TABLE accounts ENABLE ROW LEVEL SECURITY;
CREATE POLICY accounts_public ON accounts USING (true);
CREATE POLICY accounts_web ON accounts AS RESTRICTIVE TO david USING (id = current_setting('rls.tenant_id')::uuid);
-- ^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
长形式是
CREATE POLICY accounts_public ON accounts AS PERMISSIVE FOR ALL TO PUBLIC USING (true);
-- ^^^^^^^^^^^^^ ^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
562 次 |
| 最近记录: |