Oracle——“O7_DICTIONARY_ACCESSIBILTY”(字典保护机制)

一、概念

Oracle8i及更高版本,O7_DICTIONARY_ACCESSIBILITY初始化参数控制对系统特权的限制,默认值为 “false”,如果将该参数设置成 “true”,则允许访问SYS用户下的对象(就是普通用户都可以随意访问数据字典),由于ANY权限应用于数据字典,因此具有任何权限的恶意用户都可以查询或更改数据字典表。

二、设置

设置O7_DICTIONARY_ACCESSIBILTY初始化参数的两种方法:
1、在initSID.ora文件中对其修改;
2、使用sys用户或者sysdba用户登录sqlplus(前提是你已经使用了了spfile启动数据库实例)

#开启:
ALTER SYSTEM SET O7_DICTIONARY_ACCESSIBILITY = TRUE SCOPE = SPFILE;
#关闭:
ALTER SYSTEM SET O7_DICTIONARY_ACCESSIBILITY = FALSE SCOPE = SPFILE;

查看状态

SQL> show parameter o7; NAME                          TYPE     VALUE
---------------------------- ----------- ------------------------------
O7_DICTIONARY_ACCESSIBILITY    boolean   FALSE
SQL>

SYS用户必须使用SYSDBA或SYSOPER权限登录;否则将引发ORA-28009:connection as SYS should be as SYSDBA or SYSOPER错误。如果将O7_DICTIONARY_ACCESSIBILITY设置为TRUE,则可以作为用户SYS登录数据库,而无需指定SYSDBA或SYSOPER权限。

三、普通用户访问数据字典

对其他用户提供对象的访问权限的系统权限,不授予其他用户对SYS用户下对象的访问权限。
例如:select any table权限允许用户访问其他用户下的视图和表,但不允许用户选择数据字典对象(动态性能视图、常规视图、包和同义词的基表),但是可以通过授予这些用户显式对象权限,以访问SYS用户下的对象。

数据库中允许访问SYS用户对象的角色:

Role(角色) Description(描述)
SELECT_CATALOG_ROLE 授予此角色以允许用户SELECT数据字典视图的权限
EXECUTE_CATALOG_ROLE 授予此角色以允许用户对数据字典中的包和过程EXECUTE权限
DELETE_CATALOG_ROLE 授予此角色以允许用户从系统审核表SYS.AUD$ 和SYS.FGA_LOG$中删除记录

此外,可以向需要访问SYS用户中创建的表的用户授予select any dictionary系统特权。此系统权限允许对SYS用户中的任何对象进行查询访问,包括在该用户中创建的表。它必须单独授予每个需要特权的用户。它不包括在“GRANT ALL PRIVILEGES”中,但可以通过角色授予它。
注意:一定要非常小心谨慎地授予这些角色SELECT ANY DICTIONARY系统特权,因为它们的滥用可能会损害系统的完整性。

#将role(角色)授予用户
grant role to user;#将role(角色)从用户中回收
revoke role from user;示例:
SQL> grant SELECT_CATALOG_ROLE  to nice;Grant succeeded.SQL> revoke SELECT_CATALOG_ROLE  from nice;Revoke succeeded.
四、可以授予或撤销系统特权的用户

只有两种类型的用户可以向其他用户授予系统特权或从其他用户撤消这些特权:

1、通过以下方式被授予特定系统特权的用户DMIN OPTION

2、具有系统特权的用户GRANT ANY PRIVILEGE

所以只能将这些特权授予受信任的用户,权限乱用会造成非常严重的后果。

至此结束,有什么问题欢迎留言,谢谢。

O7_DICTIONARY_ACCESSIBILTY相关推荐

  1. 尚观-项老师-OCP-23节-笔记

     中间件可以停? natelink账号? 文档oracle官方文档 DML语句 某大师的oracle的体系结构 语法-DBA优化-SQL语句的执行计划 变量块(体系结构.数据管理.备份恢复.数据优 ...

最新文章

  1. python安装scipy
  2. java四子棋实验报告_Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
  3. C语言经典程序之:求十个整数中的最大最小数并输出(指针)
  4. Apache配置文件的帮助查询
  5. JavaSE入门学习51:多线程编程(二)
  6. hdu1403 后缀数组
  7. php找不到gearmanClent类,centos 使用docker搭建Gearman任务分发系统 ,Gearman的安装和使用...
  8. [html] 怎么去除img之间存在的间隔缝隙?
  9. linux RPM包安装、更新、删除等操作命令简明总结, 如何查看yum安装的软件路径 ?...
  10. Python 第六节课
  11. 接口测试工具 soapui 下载及安装
  12. Gephi教程———数据输入
  13. 还不会记录脚本日志吗?戳这里 ->>> python中logging模块二次封装记录脚本的每一步脚印
  14. win10 NET Framework 3.5(包括.NET 2.0和3.0)错误代码0x800f081f 的解决方法
  15. 贾扬清官宣:从阿里离职,或将投身AI创业!
  16. Hall Schematic
  17. Contextual Transformer Networks for Visual Recognition论文以及代码解析
  18. linux 中的指令
  19. Pnote 桌面笔记管理器
  20. javaweb springboot汽车租赁系统源码

热门文章

  1. 如何备考高级软考的系统架构设计师?
  2. unity3D摄像机跟随
  3. 基于51单片机GPS定位公交车自动报站系统(程序+原理图+PCB+论文+全套资料)
  4. 故障申报系统php源码,seay源代码全自动在线审计系统,PHP源代码缺陷自动审计平台-在线工具...
  5. Swift原生项目中集成RN的踩坑笔记
  6. Result「?」 返回类型拼接
  7. Linux系统软件安装 Jdk MySQL Tomcat
  8. 远程库的使用,打标签与别名——Git的学习与使用(四)
  9. C++智能指针shared_ptr、unique_ptr以及weak_ptr
  10. ESP32 MD5 代码