1、Oracle 角色管理 一、何为角色 角色。角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。 二、系统预定义角色 预定义角色是在数据库安装后,系统自动创建的一些常用的角色。下介简单的介绍一下这些预定角色。角色所包含的权限可以用以下语句查询: sqlselect * from role_sys_privs where role=角色名; 1CONNECT, RESOURCE, DBA 这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle 建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定
2、义角色。 2DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE,SELECT_CATALOG_ROLE 这些角色主要用于访问数据字典视图和包。 3EXP_FULL_DATABASE, IMP_FULL_DATABASE 这两个角色用于数据导入导出工具的使用。 4AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE AQ:Advanced Query。这两个角色用于 oracle 高级查询功能。 5 SNMPAGENT用于 oracle enterprise manager 和 Intelligent Agent 6RECOVERY_CATALO
3、G_OWNER 用于创建拥有恢复库的用户。关于恢复库的信息,参考 oracle 文档Oracle9i User-Managed Backup and Recovery Guide 7HS_ADMIN_ROLE A DBA using Oracles heterogeneous services feature needs this role to access appropriate tables in the data dictionary.管理角色 1.建一个角色 sqlcreate role role1; 2.授权给角色 sqlgrant create any table,create
4、procedure to role1;3.授予角色给用户 sqlgrant role1 to user1; 4.查看角色所包含的权限 sqlselect * from role_sys_privs; 5.创建带有口令以角色(在生效带有口令的角色时必须提供口令) sqlcreate role role1 identified by password1; 6.修改角色:是否需要口令 sqlalter role role1 not identified; sqlalter role role1 identified by password1; 7.设置当前用户要生效的角色 (注:角色的生效是一个什么
5、概念呢?假设用户 a 有 b1,b2,b3 三个角色,那么如果 b1 未生效,则 b1 所包含的权限对于 a 来讲是不拥有的,只有角色生效了,角色内的权限才作用于用户,最大可生效角色数由参数 MAX_ENABLED_ROLES 设定;在用户登录后,oracle 将所有直接赋给用户的权限和用户默认角色中的权限赋给用户。 ) sqlset role role1;/使 role1 生效 sqlset role role,role2;/使 role1,role2 生效 sqlset role role1 identified by password1;/使用带有口令的 role1 生效 sqlset
6、role all;/使用该用户的所有角色生效 sqlset role none;/设置所有角色失效 sqlset role all except role1;/除 role1 外的该用户的所有其它角色生效。 sqlselect * from SESSION_ROLES;/查看当前用户的生效的角色。 8.修改指定用户,设置其默认角色 sqlalter user user1 default role role1; sqlalter user user1 default role all except role1; 详见 oracle 参考文档 9.删除角色 sqldrop role role1;
7、角色删除后,原来拥用该角色的用户就不再拥有该角色了,相应的权限也就没有了。 说明: 1)无法使用 WITH GRANT OPTION 为角色授予对象权限 2)可以使用 WITH ADMIN OPTION 为角色授予系统权限 ,取消时不是级联CONNECT 角色: -是授予最终用户的典型权利,最基本的ALTER SESSION -修改会话CREATE CLUSTER -建立聚簇CREATE DATABASE LINK -建立数据库链接CREATE SEQUENCE -建立序列CREATE SESSION -建立会话CREATE SYNONYM -建立同义词CREATE VIEW -建立视图RES
8、OURCE 角色: -是授予开发人员的CREATE CLUSTER -建立聚簇CREATE PROCEDURE -建立过程CREATE SEQUENCE -建立序列CREATE TABLE -建表CREATE TRIGGER -建立触发器CREATE TYPE -建立类型DBA 角色:拥有系统所有系统级权限IMP_FULL_DATABASE 角色、EXP_FULL_DATABASE 角色:BACKUP ANY TABLE -备份任何表EXECUTE ANY PROCEDURE -执行任何操作SELECT ANY TABLE -查询任何表DELETE_CATALOG_ROLE 角色:这个角色是 Oracle8 新增加的,如果授予用户这个角色,用户就可以从表 sys.aud$中删除记录,sys.aud$表中记录着审计后的记录,使用这个角色可以简化审计踪迹管理。SELECT_CATALOG_ROLE 角色、EXECUTE_CATALOG_ROLE 角色:SELECT_CATALOG_ROLE 角色具有从数据字典查询的权利,EXECUTE_CATALOG_ROLE 角色具有从数据字典中执行部分过程和函数的权利。