问:PUBLIC被授予下列带有‘WITH GRANT OPTION’选项的权限: GRANTEEOWNERTABLE_NAMEGRANTORPRIVILEGEGRANTABLEPUBLICSYSPLAN_TABLE$SYSUPDATEYESPUBLICSYSPLAN_TABLE$SYSINSERTYESPUBLICSYSPLAN_TABLE$SYSDELETEYESPUBLICSYSOLAPTABLEVELSSYSUPDATEYESPUBLICSYSOLAPTABLEVELSSYSINSERTYESPUBLICSYSOLAPTABLEVELSSYSDELETEYESPUBLICSYSOLAPT……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
问:PUBLIC被授予下列带有‘WITH GRANT OPTION’选项的权限:
GRANTEE | OWNER | TABLE_NAME | GRANTOR | PRIVILEGE | GRANTABLE |
PUBLIC | SYS | PLAN_TABLE$ | SYS | UPDATE | YES |
PUBLIC | SYS | PLAN_TABLE$ | SYS | INSERT | YES |
PUBLIC | SYS | PLAN_TABLE$ | SYS | DELETE | YES |
PUBLIC | SYS | OLAPTABLEVELS | SYS | UPDATE | YES |
PUBLIC | SYS | OLAPTABLEVELS | SYS | INSERT | YES |
PUBLIC | SYS | OLAPTABLEVELS | SYS | DELETE | YES |
PUBLIC | SYS | OLAPTABLEVELTUPLES | SYS | UPDATE | YES |
PUBLIC | SYS | OLAPTABLEVELTUPLES | SYS | INSERT | YES |
PUBLIC | SYS | OLAPTABLEVELTUPLES | SYS | DELETE | YES |
Oracle安全指南中提到如下描述:
“注:当将对象权限授予角色时,‘GRANT OPTION’选项是无效的。Oracle数据库禁止对象权限通过角色进行传播,因此角色的被授予者不能将通过角色而获得的对象权限传播出去。”
如果PUBLIC被认定为角色,那么可以得出如下结论:
1、在上述情况下,‘GRANT OPTION’是无效的?
2、PUBLIC(系统公共用户)不能将自己获得的对象权限传播出去?
答:为了回答问题,下面我们用一个实验来验证文档。
首先,我们创建两个用户:USER_ABBIE和USER_BOB。另外,我们还将创建一个角色:USER_BOB_ROLE。然后,我们使用USER_ABBIE用户创建TEST_TABLE表,并将TEST_TABLE表上的SELECT权限以‘GRANT OPTION’选项授予USER_BOB_ROLE角色。
实验在Oracle 10g数据库中进行;实验所使用的SQL脚本,可以在你所使用的Oracle数据库环境中使用。
首先,创建用户和角色,并分配基本权限。注意:对于生产环境,我不建议以这种方式分配权限。最佳实践是使用最小权限原则。
SQL> create user USER_ABBIE identified by "For#12Testing#12Only"; 2 default tablespace USERS 3 temporary tablespace TEMP; User created. SQL> grant CONNECT, RESOURCE to USER_ABBIE; Grant succeeded. SQL> create user USER_BOB identified by "For#345Testing#345Only"; 2 default tablespace USERS 3 temporary tablespace TEMP; User created. SQL> grant CONNECT, RESOURCE to USER_BOB; Grant succeeded. SQL> create user USER_CHLOE identified by "For#789Testing#789Only"; 2 default tablespace USERS 3 temporary tablespace TEMP; User created. SQL> grant CONNECT, RESOURCE to USER_CHLOE; Grant succeeded. SQL> create role USER_BOB_ROLE; Role created. |
现在,我们将为USER_ABBIE用户创建一张表,并将其SELECT权限加上‘GRANT OPTION’选项授予USER_BOB_ROLE角色。
SQL> conn USER_ABBIE/"For#12Testing#12Only" Connected. SQL> create table TEST_TABLE 2 as select * from DUAL; Table created. SQL> column DUMMY format a10; SQL> select * from TEST_TABLE; DUMMY ---------- X SQL> grant SELECT on TEST_TABLE to USER_BOB_ROLE with GRANT OPTION; grant SELECT on TEST_TABLE to USER_BOB_ROLE with GRANT OPTION * ERROR at line 1: ORA-01926: cannot GRANT to a role WITH GRANT OPTION |
正如你看到的,Oracle数据库抛出ORA–01926错误,防止此类情况发生!
从安全角度来看,如果你没有完全理解对象访问权限是如何传播的以及其复杂程度,就使用GRANT和ADMIN选项是非常危险的。例如,撤销原先使用‘GRANT OPTION’选项分配的对象访问权限时,将级联收回所有被授予者所持有的权限。使用‘ADMIN OPTION’选项时,当授予者自身的权限被撤销时,所有它授予权限的被授予者仍将保持其授予的访问权限。当维护许多用户时,这就很容易造成不期望发生的权限授予情况。
最佳实践:将不带GRANT / ADMIN选项的权限直接分配给角色,然后将这些角色分配给指定的用户。
翻译
相关推荐
-
不安全的Firebase数据库使关键数据面临风险
当开发人员无法对支持其移动应用程序的数据库或云实例执行身份验证时,这里会发生一种最简单且最具破坏性的安全事件。 […]
-
甲骨文自治数据库亮相 带来云计算新希望
早前甲骨文还不在云计算公司之列,而现在该公司正在迅速弥补其失去的时间。甲骨文的云计算核心是甲骨文自治数据库(O […]
-
2017年12月数据库流行度排行榜 定格岁末排名瞬间
数据库知识网站DB-engines最近更新的2017年12月份数据库流行度排名情况是否能提供更多的看点呢?TechTarget数据库网站将与您分享12月份的榜单排名情况,让我们拭目以待。
-
2017年11月数据库流行度排行榜 半数以上数据库积分减少
数据库知识网站DB-engines更新了2016年11月份的数据库流行度排行榜。TechTarget数据库网站将与您一同关注11月份的榜单排名情况。