您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 第12章 用户管理和安全
第十二章管理安全性——用户与权限管理引言数据库安全性问题一直是人们关注的焦点,数据库数据的丢失以及数据库被非法用户的侵入对于任何一个应用系统来说都是至关重要的问题。确保信息安全的重要基础在于数据库的安全性能。安全性Oracle数据库作为大型分布式数据库,其安全性一直是设计的重要目标。作为Oracle安全模型基础的安全原理是基于最小特权的原则。此原则认为用户只应该具有完成其任务所必需的特权,而不应该拥有更多的特权。oracle数据库的安全性可以分为如下两类:•系统安全性•数据安全性1.系统安全性系统安全性是指在系统级控制数据库的存取和使用的机制,包含:⑴有效的用户名/口令的组合。⑵一个用户是否授权可连接数据库。⑶用户对象可用的磁盘空间的数量。⑷用户可执行哪些系统操作。2.数据安全性数据安全性是指在实体级控制数据库存取和使用的机制,包括:用户可以存取的方案对象和在该方案对象上可以进行哪些操作等。Oracle利用下列机制管理数据库安全性:•数据库用户和模式•权限•角色•存储设置和空间份额•用户与模式在Oracle中,数据库用户和模式是安全的最基本的单元。术语“用户”和“模式”经常互换使用,然而它们是有区别的:–数据库模式定义为数据库对象的集合。–模式的名称就是拥有或控制这些数据库对象集合的用户名称。•所有的数据库对象,包括表、视图、索引、触发器、Java存储过程、PL/SQL程序包、函数等,都归Oracle数据库中的某一个用户所有。甚至Oracle的数据字典、系统目录也是名称为sys的模式的一部分。•在Oracle数据库中,可以存在没有拥有任何数据库对象的用户(不是模式),但是不会没有命名的模式或数据库对象集合。12.1用户管理•Oracle管理主要用户用户就是一个方案,它是一组数据库对象的所有者。用户是计算机的合法操作者,数据库用户就是数据库的合法操作者。Oracle有如下的几个主要用户:SYS,SYSTEM,SCOTT。这些用户以及口令和说明如表12-1所示。表12-1Oracle的主要用户用户名口令登录身份及说明SYSChange_on_install(在安装过程中可以自己修改)SYSDBA或SYSOPER,但不能以NORMAL登录,可作为默认的系统管理员SYSTEMManager(在安装过程中可以自己修改)SYSDBA或NORMAL,但不能以SYSOPER登录,可作为默认的系统管理员SCOTTTiger(在安装过程中可以自己修改)NORMAL,普通用户用户的创建1.创建用户使用SQL语句创建新数据库用户的语法格式如下:CREATEUSER用户名IDENTIFIEDBY口令[DEFAULTTABLESPACE默认表空间][TEMPORARYTABLESPACE临时表空间][QUOTA[数值K|M]|[UMLIMITED]ON表空间名][PROFILE概要文件名][PASSWORDEXPIRE][ACCOUNTLOCK]|[ACCOUNTUNLOCK]例:CREATEUSERlotusIDENTIFIEDBYl123DEFAULTTABLESPACEusersQUOTA100MONusersACCOUNTUNLOCK;用户帐号状态用户的帐号有两种状态,DBA可以通过设置状态的方法使账户可用或不可用。一.帐号锁定锁定帐号可以使某个帐号不可用。二.账户解锁该状态下,帐号可以正常登陆。2.修改用户帐号修改用户账号的语法格式如下所示:ALTERUSER用户名IDENTIFIEDBY口令[DEFAULTTABLESPACE默认表空间][TEMPORARYTABLESPACE临时表空间][QUOTA[数值K|M]|[UNLIMITED]ON表空间名][PROFILE概要文件名][PASSWORDEXPIRE][ACCOUNTLOCK]|[ACCOUNTUNLOCK]•作为一个DBA,在管理数据库时,用户可能会有各种原因来改变用户帐户。•这些有关帐户管理的工作如下:–重置密码;–锁定帐户和解除帐户锁定;–修改用户的默认表空间或临时表空间;–修改表空间配额。例:锁定用户ALTERUSERlotusACCOUNTLOCK;解除锁定ALTERUSERlotusACCOUNTUNLOCK;修改用户密码ALTERUSERlotusIDENTIFIEDBYlotus;3.删除用户使用DROPUSER命令可以从数据库中删除一个用户,参数为CASCADE,表示在删除用户之前,先删除其所拥有的所有实体。例:Createtablelotus.aa(aanumber);Dropuserlotus;Dropuserlotuscascade;12.2权限管理权限(privilege)是Oracle数据库定义好的执行某些操作的能力。在Oracle数据库中是利用权限进行管理的。这些权限可以分成两类:•系统权限:是指在系统级控制数据库的存取和使用的机制。Oracle有100多种不同的系统权限,表12-2给出了常用的系统权限。每一种系统权限允许用户执行一种特殊的数据库操作或一类数据库操作。表12-2常用的系统权限权限分类作用CREATESESSION创建会话权限,允许用户登录(连接到)数据库CREATETABLE允许用户创建表CREATEVIEW允许用户创建视图CREATEPROCEDURE允许用户创建过程函数和包CREATETRIGGER允许用户创建触发器CREATESYNONYM允许用户创建同义词CREATEUSER生成用户CREATEROLE生成角色•对象权限:是在数据库对象(如:指定的表、视图、序列、过程、函数或包)上执行特殊动作的权利。对于不同类型的对象,有不同类型的对象权限。如表12-3所示。表12-3常用的对象权限对象权限表视图序列过程ALTEROKOKDELETEOKOKEXECUTEOKINDEXOKINSERTOKOKREFERENCESOKSELECTOKOKOKUPDATEOKOK授予权限1.授予系统权限授权语句如下:GRANT{system_privilege|role}[,{system_privilege|role}]…TO{user|role|PUBLIC}[,{user|role|PUBLIC}]…[WITHADMINOPTION]其中:(1)system_privilege:要授予的系统权限。(2)role:被授权的角色名字。(3)PUBLIC:把系统权限授予所有用户。(4)WITHADMINOPTION:可以把被授予的权限再进一步授予其他用户或角色。例:GRANTcreatesessionTOtestWITHADMINOPTION;GRANTcreatetableTOtest;将createview权限授予数据库中所有用户GRANTcreateviewTOpublic;2.授对象权限语句如下:GRANT{object_privilege[(column_list)][,object_privilege[(column_list)]]…|ALL[PRIVILEGES]}ON[schema.]objectTO{user|role|PUBLIC}[,{user|role|PUBLIC}]…[WITHGRANTOPTION]其中:(1)object_privilege:要授予的对象权限。(2)column_list:表或者视图的列名(只有授权INSERT,REFERENCES,UPDATE的时候才使用)。(3)ALL:授予对象的所有权限,并且有WITHGRANTOPTION权限。(4)ONobject:对象名字。(5)WITHGRANTOPTION:可以把对象权限授予其他的用户或者角色。例:GRANTSELECT,UPDATEONempTOtestWITHGRANTOPTION;GRANTALLONDEPTTOTEST:3.取消权限使用REVOKE语句可以回收己经授予用户(或角色)的系统权限、对象权限与角色,执行回收权限操作的用户同时必须具有授予相同权限的能力。例:取消用户test的CREATETABLE权限。REVOKECREATETABLEFROMtest;说明:取消其他用户的权限时必须拥有系统管理员DBA权限。例:回收已经授予用户test的emp表上的SELECT和UPDATE对象权限:•REVOKESELECT,UPDATEONEMPFROMtest;角色管理•在许多情况下,用户的工作往往都是分类的,因此就可以将用户分为不同的种类,每一种用户的权限都是相同的,即扮演了相同的角色。因此Oracle借用了角色这种概念来实现这种权限管理的方法,达到简化权限管理的目的。•角色就是一组相关权限的集合,是对权限进行集中管理(授予、回收)的一种方法。即将不同权限集中在一起就形成了角色。使用角色可以大大降低用户权限的维护负担。•数据库管理员只需创建特定的数据库角色,使其反映组织或应用的安全权限,就可以将这些角色赋予用户,实际是把角色所拥有的权限分配给用户。不使用角色分配权限权限用户Manager使用角色分配权限ORACEL利用角色更容易地进行权限管理。有下列优点:(1)减少权限管理,不要显式地将同一权限组授权给几个用户,只需将这权限组授给角色,然后将角色授权给每一用户。(2)动态权限管理,如果一组权限需要改变,只需修改角色的权限,所有授给该角色的全部用户的安全域将自动地反映对角色所作的修改。(3)权限的选择可用性,授权给用户的角色可选择地使其可用或不可用。(4)应用安全性,角色使用可由口令保护,应用可提供正确的口令使用角色,如不知其口令,不能使用角色。预定义角色•在创建数据库时,Oracle数据库会自动创建一些常用的角色,即预定义角色。这些角色已经由Oracle数据库授予了相应的系统权限。DBA可以直接将这些预定义的角色授予用户,完成简单的权限管理工作。下面是比较传统的三个预定义角色。•CONNECT授予最终用户的典型权利,最基本的•RESOURCE授予开发人员的权限CREATETRIGGERCREATESEQUENCECREATETYPECREATEPROCEDURECREATECLUSTERCREATEOPERATORCREATEINDEXTYPECREATETABLE•DBA拥有系统的所有系统级权限。对于数据库管理员应该授予DBA角色。对于数据库开发用户,只需要授予CONNECT和RESOURCE两个角色。可以通过数据字典DBA_SYS_PRIVS查询所有预定义角色的系统权限。创建自定义角色•Oracle允许用户按实际需要自定义各种角色,以便将其授予不同类型的用户,增强权限管理的灵活性和方便性。创建角色的语句格式如下:CREATEROLE角色名[IDENTIFIEDBYpassword]其中任性的IDENTIFIEDBYpassword要求用户在启用这个角色之前先确认自己的身份。该角色在默认情况下被关闭,为了打开此角色需要使用如下语句:SETROLErole_nameIDENTIFIEDBYpassword;例:CREATEROLEaccount_role;注意:新创建的角色并不具有任何权限,这时的角色是没有什么用处的。因此,创建角色之后,通常要立即给它授予系统权限或对象权限。•将权限授予角色Grantconnecttoaccount_role;Grantcreatetabletoaccount_role;Grantselectonscott.emptoaccount_role;•将角色授予用户Grantresourcetotest;Grantaccount_roletoora_test1;•回收角色中的某一权限Revokecreatetablefromaccount_role;•回收用户的某一角色Revokeaccount_rolefromora_test1;角色删除•由于角色可以重复修改和设置,随着角色的增多,需要删除一些不必要的角色。删除角色可以通过DROP语句来实现,使这个角色的权限集合无效,拥有此角色的用户都不能使用这些
本文标题:第12章 用户管理和安全
链接地址:https://www.777doc.com/doc-3383704 .html