postgresql – 将行级安全性与列授权相结合

postgresql – 将行级安全性与列授权相结合,第1张

概述假设我有一个包含三列的用户表,public_data,private_data和system_data,我有三个名为postgres,authenticated_user和visitor的角色. postgres是超级用户,可以访问所有数据(当然包括system_data) authenticated_user应该能够访问每个用户的public_data,他们自己的private_data,但不能 假设我有一个包含三列的用户表,public_data,private_data和system_data,我有三个名为postgres,authenticated_user和visitor的角色.

postgres是超级用户,可以访问所有数据(当然包括system_data)

authenticated_user应该能够访问每个用户的public_data,他们自己的private_data,但不能访问system_data

访问者只能访问每个用户的public_data

如何设置表格,角色,授权和策略以完成上述 *** 作?

这不是一个声明性的行安全性问题,因为它听起来像是要返回所有行,但根据当前用户显示不同的列值

根据您的评论,您可以使用每种用户类型的不同查询.我没有看到使用private_data的case语句的方法

create table users (  ID int primary key,owner name not null,public_data text,private_data text,system_data text);--these should probably be groups,not users:create user visitor;create user authenticated_user;grant visitor to authenticated_user; -- will inherit visitors permissionsgrant select(ID,owner,public_data) on users to visitor;grant select(private_data) on users to authenticated_user;insert into users (ID,private_data,system_data) values (1,'visitor','public','private to visitor','system');insert into users (ID,system_data) values (2,'authenticated_user','private to authenticated_user','system');set role visitor;select ID,public_data from users;set role authenticated_user;select ID,case when owner=current_user then private_data else null end as private_data from users;set role postgres;select * from users;
总结

以上是内存溢出为你收集整理的postgresql – 将行级安全性与列授权相结合全部内容,希望文章能够帮你解决postgresql – 将行级安全性与列授权相结合所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1181786.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存