<!-- [if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery><w:DocumentKind>DocumentNotSpecified</w:DocumentKind><w:DrawingGridVerticalSpacing>7.8</w:DrawingGridVerticalSpacing><w:View>Normal</w:View><w:Compatibility></w:Compatibility><w:Zoom>0</w:Zoom></w:WordDocument></xml><![endif]-->
--========================
--author:_yeeXun
--date:12/31/2010 11:09:00 AM
--address:Jau 17-304
--========================
角色是相关权限的命令集合, 使用角色的主要目的是为了简化权限的管理。
为了简化对权限的管理,oracle 事先把一系列的权限集中在一起,打包给某个用户。
预定义角色
是指oracle 所提供的角色,每种角色都用于执行一些特定的管理任务,下面是 connect , resource , dba 角色;
1. connect角色
Connect角色具有一般应用开发人员需要的大部分权限,当建立一个用户后,大多数 情况下,只要给用户授予 connect 和 resource 角色就够了,那么 connect 角色具 有哪些权限呢?
Altersession--修改会话
Createcluster--建簇
Createdatabaselink--建数据库连接
Createsession--建会话
Createtable--建表
Createview--建视图
Createsequence--建序列
2. resource角色
Resource角色具有应用开发人员所需要的其他权限,比如建立存储过程。触发器等。 注意:resource 角色隐含了 unlimitedtablespace 系统权限
Resource角色包含了以下系统权限:
Createcluster--建簇
Createindextype--
Createtable--建表
Createsequence--建序列
Createtype--建类型
Createprocedure--建存储过程
Createtigger--建触发器
3. dba角色
Dba角色具有所有的系统权限,以及 withadminoption 选项,默认的 dba 用户为 sys 和 system ,他们可以将任何系统权限授予其他用户;
但是要注意:dba 角色不具备 sysdba 和 sysoper 的特权 ( 启动和关闭数据库 )
自定义角色
顾名思义就是自己定义的角色,根据自己的需要来定义。一般是dba 来建立,如果由别的用户建立,那么此用户需具有 createrole 的系统权限。在建立角色时可以指定验证方式 ( 不验证,数据库验证等 ) 。
1. 建立角色( 不验证 )
如果角色是公用的,可以采用不验证的方式建立角色。
Createrole角色名 notidentified;
2. 建立角色( 数据库验证 )
采用这样的方式时,角色名、口令存放在数据库中。当激活该角色时,必须提供口令。 在建立这种角色时,需要提供口令:
Createrole角色名 identifiedby 密码 ;
角色授权与分配
当建立角色时,角色没有任何权限,为了使角色完成特定的任务,必须为其授予相应的 系统权限和对象权限。
1. 给角色授权
给角色授权和合用户授权没多大区别,但是要注意: 系统权限的unlimitedtablespace 和对象权限的 withgrantoption 选项是不能授予角色的 。
Sql>connsystem/manager;
Sql>grantcreatesessionto角色名 withadminoption;
Sql>connscott/tiger;
Sql>grantselectonscott.empto角色名 ;
Sql>grantinsert,update,deleteonscott.empto角色名 ;
2.分配角色
一般分配角色由dba 来完成,如果要以其他用户身份分配角色,则要求该用户必须具 有 grantanyrole 的系统权限。
Sql>connsystem/manager;
Sql>grant角色名 to 用户名 withadminoption;
删除角色
受用droprole ,一般是 dba 来执行的,如果其他用户则要求该用户具有 dropany role 系统权限。
Sql>connsystem/manager;
Sal>droprole角色名 ;
角色一旦被删除,拥有此角色的用户则不能操作数据库。
显示角色的信息
1. 显示所有的角色
Sql>select*fromdba_roles;
2.显示角色具有的系统权限。
Sql>selectprivilege,admin_optionfromrole_sys_privswhererole='角色名 ';
3. 显示角色具有的对象权限
通过数据字典视图dba_tab_privs 可以查看角色具有的对象权限或是列的权限。
4. 显示用户具有的角色,以及默认角色
当以用户的身份连接到数据库时,oracle 会自动的激活默认的角色,通过查询数据字 典视图 dba_role_privs 可以显示某个用户具有的所有角色以及当前默认角色
Sql>selectgranted_role,default_rolefromdba_role_privswhere grantee='SCOTT';
精细访问控制
是指用户可以使用函数,策略实现更加细微的安全访问控制。如果使用精细访问控制, 则当在客户端发出sql 语句 (select,insert,update,delete) 时, oracle 会自 动在 sql 语句后追加谓词 (where 子句 ) ,并执行新的 sql 语句。通过这样的控制,可 以使得不同的数据库用户在访问相同表时,返回不同的数据信息。
--the end--
1507

被折叠的 条评论
为什么被折叠?



