撤销角色,但用户仍然拥有通过角色获得的权限。

18 浏览
0 Comments

撤销角色,但用户仍然拥有通过角色获得的权限。

我在Revoke命令上遇到了问题。我创建了一个角色,并授予角色“SELECTE on table”的权限。然后我将角色授予用户。然后我从用户那里撤销了角色。但是用户仍然拥有通过角色获得的“SELECT on table”的权限。我做错了什么?

HR用户:

create table testtable (id number);--表TESTTABLE已创建 
create role trole;--角色TROLE已创建 
grant select on testtable to trole;--授权成功 
grant trole to test_user;--授权成功 

test_user:

set role trole;--角色TROLE成功。 
select * from hr.testtable;--正常工作 

HR用户:

revoke trole from test_user;--撤销成功。 

Test_user:

select * from hr.testtable;--尽管角色已撤销,但仍然正常工作。 

注意:没有对test_user进行任何其他授权。

0
0 Comments

撤销角色会从用户中删除该角色及其所包含的任何权限。在您的情况下,听起来test_user有一些额外的权限,比如直接授予或通过PUBLIC角色继承的SELECT ANY TABLE权限。请查看此帖子以查找所有已授予权限:How to show all privileges from a user in oracle?

嗨。我已经检查了角色和其他权限列表,但是在这个用户上没有其他权限。我尝试从其他用户(不是HR)向用户授予权限,但结果是相同的。我不明白出了什么问题。

您确认了PUBLIC是否可以访问HR模式和您的表,或者SELECT ANY TABLE权限吗?

我不知道如何检查公共对HR模式的访问权限,但我使用另一个模式进行测试(不是HR),结果是相同的。

这表明PUBLIC拥有太多的权限。使用上述链接中的查询,使用用户'PUBLIC'来检查。

问题的原因:撤销角色后,用户仍然具有通过角色获得的特权。

解决方法:检查用户是否通过PUBLIC角色或其他方式直接或间接地获得了额外的权限。可以使用上述链接中的查询来查找所有已授予权限。如果发现PUBLIC拥有过多的权限,可以限制其访问权限。

0