我有一个由角色A创建的表
df.groupby(['ID','Name'],as_index=False).agg({'COMMENT1': ' '.join, 'COMMENT2': ' '.join, 'NUM': 'sum'})
说我要启用行级安全性,
Firstname|Lastname| Age
------------------------
Jill | Smith | 50
Eve | Dar | 94
默认情况下,此操作拒绝对除表所有者(roleA和超级用户)以外的所有角色进行选择/更新/删除操作
为了允许roleB查看/修改行,我需要创建一个策略
ALTER TABLE accounts ENABLE ROW LEVEL SECURITY;
在我看来,这就像对表的GRANT / REVOKE特权,RLS有何不同
答案 0 :(得分:0)
GRANT
只能对完整的表授予权限。向用户(或角色)授予SELECT
特权后,该用户可以看到表中的所有行,并且该用户是否具有表的UPDATE
特权,他/她可以更新所有行。
使用RLS(顾名思义),您可以分别控制每行的访问权限。
给出您的示例,在表上授予SELECT特权将允许每个用户查看所有行。有了您的规则,用户只能看到他/她是经理的那些雇员的行(规则可能应该扩展为也包括当前用户的行,而不仅仅是当前用户是经理的那些行)。 / p>
取下表:
Firstname | Lastname | manager
------------------------------
Jill | Smith | paul
Eve | Dar | paul
Arthur | Dent | mary
Ford | Prefect | mary
如果您授予选择并更新角色mary
和paul
,他们可以查看并更改该表中的所有行。
但是在您提出RLS政策的情况下,角色mary
只能看到和更改Arthur Dent和Ford Prefect。 paul
只能看到和更改Jill Smith和Eve Dar。
这些用户甚至都不知道表中有更多行。