Oracle自主访问控制机制系统表研究

本人近来关注于数据库安全方面,粗略地研究了下数据库的自主访问控制(DAC)和强制访问控制(MAC),现把自己对Oracle中DAC的理解写出来,与大家分享,以上均Oracle文档结合自己的理解,难免存在错误的地方,还请指正。

访问控制是允许或者禁止某人访问某资源的过程,数据库中就是限制用户对数据库客体(如表、试图等)的访问。实现这种访问控制一般是基于访问控制列表(ACL),ACL一般记录了who能访问what以及how访问。大多数据库的将ACL以数据库系统表的形式进行实现。下面具体介绍下Oracle中的权限相关系统表的设计。

Oracle中的权限分为两种:系统权限和对象权限。

系统权限

系统权限包括数据库管理权限和带有ANY的权限。管理权限如ALTER DATABASE,CREATE USER等权限,这类权限是和DDL相关的权限。另一类带有ANY的权限,如SELECT ANY TABLE,表示可以查询所有表的权限,这类权限是全局DML相关的权限。查看所有的系统权限可以通过表SYSTEM_PRIVILEGE_MAP,该视图显示了权限名称及其对应的值,通过表可以看出所有的系统权限的权限值均为负数。

记录用户的系统权限授权的信息主要存储在系统表SYS.SYSAUTH$表中,可以通过DBMA_METADATA包获取表的创建信息。

  1. SQL> select dbms_metadata.get_ddl('TABLE','SYSAUTH$','SYS'from dual;   
  2. DBMS_METADATA.GET_DDL('TABLE','SYSAUTH$','SYS')   
  3. ------------------------------------------------------------------------   
  4. CREATE TABLE "SYS"."SYSAUTH$"   
  5. (    "GRANTEE#" NUMBER NOT NULL ENABLE,   
  6.       "PRIVILEGE#" NUMBER NOT NULL ENABLE,   
  7.       "SEQUENCE#" NUMBER NOT NULL ENABLE,   
  8.       "OPTION$" NUMBER   
  9. ) PCTFREE   
  10. PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING  
  11. STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645  
  12. PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)  
  13. TABLESPACE "SYSTEM"   
  14.  

可以看到表字段信息,包含GRANTEE#,PRIVILEGE#,SEQUENCE#和OPTION$。GRANTEE#表示被授权者的UID,PRIVILEGE#表示被授权的权限值,OPTION$表示是此权限否可被转授,SEQUENCE#个人感觉是时间戳的概念,对于这个的验证放在后面。由此可见,系统权限和角色的授予,并不记录授权者的信息。通过查询这张表,可以看到PRIVILEGE#字段并不是上面所说的全是负数,还存在正数,不错,这是因为这张表不仅仅存放了系统权限,还存放了角色的授予信息,如果授予角色的时候,PRIVILEGE#字段即为角色的ID,当然角色也可能被授予角色和系统权限,因此想通过简单的SQL语句获取一个用户所拥有的所有的角色或所有的系统权限,会涉及到递归的查询,大家可以想下如何构造这个SQL语句,(提示下:Oracle特有的CONNECT BY语法)。

由系统权限的系统表可以看出,对于系统权限,Oracle中并不记录授权者的概念,这说明对系统权限的回收肯定是特定用户进行的,由于没有授权者的概念,当然也就没有了级联回收系统权限的情况,这里SEQUENCE#字段作为时间戳貌似也没有太大的意义了。

对象权限

对象权限主要记录用户被赋予某对象的某种权限,如用户A被授予表TB1的SELECT权限。由此可见,对象权限系统表需要具有如下几个字段:授权者,被授予者,对象,权限类型,转授标记。对象权限系统表是SYS.OBJAUTH$,首先来看表定义。

  1. SQL> select dbms_metadata.get_ddl('TABLE','OBJAUTH$','SYS'from dual;   
  2.    
  3. DBMS_METADATA.GET_DDL('TABLE','OBJAUTH$','SYS')   
  4. ----------------------------------------------------------------------   
  5. CREATE TABLE "SYS"."OBJAUTH$"   
  6.  (    "OBJ#" NUMBER NOT NULL ENABLE,   
  7.       "GRANTOR#" NUMBER NOT NULL ENABLE,   
  8.       "GRANTEE#" NUMBER NOT NULL ENABLE,   
  9.       "PRIVILEGE#" NUMBER NOT NULL ENABLE,  
  10.       "SEQUENCE#" NUMBER NOT NULL ENABLE,  
  11.       "PARENT" ROWID,  
  12.       "OPTION$" NUMBER,  
  13.       "COL#" NUMBER  
  14.  ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING  
  15.  

系统表中存在并不是所猜想的那么几个字段,除了对象(OBJ#),授权者(GRANTOR#),被授予者(GRANTEE#),具体权限(PRIVELGE#),转授标志(OPTION$)外,还具有SEQUENCE#,PARENT和COL#,SEQUENCE#应该还是时间戳,COL#是指在进行列级授权时记录的列号,在对表进行授权时,可以指定列,如GRANT SELECT(C1) ON T1 TO U1。至于PARENT还有待考证啊。

以上从总体上粗略的介绍了Oracle中权限相关的系统表以及系统表中字段的意义,当然有些字段是个人猜测,没有什么依据,还有待进行实验证明。有对此了然的园友,望不吝赐教,感激不尽啊。

原文链接:http://www.cnblogs.com/nocode/archive/2011/03/14/1984265.html

 

【编辑推荐】

  1. Oracle数据库设计规范化的前两个要求
  2. Oracle PLM助力企业提高产品创新能力
  3. 对Oracle数据库设计中字段的正确使用方案
  4. Oracle数据库设计提升性能的五条法则
  5. Oracle数据库设计要做到五戒

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/240923.html<

(0)
运维的头像运维
上一篇2025-04-24 02:36
下一篇 2025-04-24 02:38

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注