您好,欢迎访问三七文档
Oracle安全性管理用户与权限管理概述对于任意一个多用户计算机系统来说,访问和访问安全都是至关重要的。既要允许很多用户访问计算机系统,又要防止未授权的用户访问。Oracle数据库的安全性可以被分成3个层次:系统安全性数据安全性网络安全性用户管理用户与方案在Oracle中,数据库用户和方案是安全的最基本的单元。术语“用户”和“方案”经常互换使用,然而它们是有区别的:数据库方案定义为数据库对象的集合。方案的名称就是拥有或控制这些数据库对象集合的用户名称所有的数据库对象,包括表、视图、索引、触发器、Java存储过程、PL/SQL程序包、函数等,都归Oracle数据库中的某一个用户所有。甚至Oracle的数据字典、系统目录也是名称为sys的方案的一部分。用户管理默认的数据库用户每个Oracle数据库都有两个默认的数据库用户帐号SYS和SYSTEMSYS帐号拥有数据字典的基本表和视图.SYSTEM帐号一般用于创建显示管理信息的表和视图,或被Oracle数据库选项和工具使用的内部表和试图,不要在SYSTEM方案中存储并不用于数据库管理的表.用户管理建立用户帐号CREATEUSERusernameIDENTIFIEDBYpassword[DEFAULTTABLESPACEdefault_tablespace][TEMPORARYTABLESPACEtemp_tablespace][QUOTA[数值K|M]|[UNLIMITED]ON默认表空间][QUOTA[数值K|M]|[UNLIMITED]ON其他表空间][PASSWORDEXPIRE][ACCOUNT{LOCK|UNLOCK}]CREATEUSERMichaelIDENTIFIEDBYlincolnCONNECTsys/passwordASsysdbaCREATETABLESPACEmytbs01DATAFILE'e:\mytbs01_1.dbf'SIZE5MAUTOEXTENDONNEXT3MMAXSIZEUNLIMITED;CREATEUSERmyuser1IDENTIFIEDBYwelcomeDEFAULTTABLESPACEmytbs01TEMPORARYTABLESPACEtempQUOTA2MONmytbs01PASSWORDEXPIRE;用户管理修改用户帐号口令删除用户帐号ALTERUSERMichaelIDENTIFIEDBYsaraDROPUSERMichael如果将Cascade关键字用于dropuser命令的末尾,则在从数据库中删除用户之前,删除用户的所有对象。该关键字不仅可以删除所有的用户对象,而且还可以删除其他用户模式中对已删除对象表进行引用的约束,使其他用户所拥有的引用了已删除对象的对象无效。用户管理用户的默认表空间与临时表空间ALTERUSERusernameDEFAULTTABLESPACEdefault_tablespaceTEMPORARYTABLESPACEtemp_tablespace如果不进行指定,则用户的默认表空间为USERS表空间;默认的临时表空间是TEMP表空间,如果没有创建TEMP表空间,则SYSTEM表空间为用户临时表空间用户管理锁定和解锁用户帐号被锁定的帐号不能进行数据库访问操作ALTERUSERusernameACCOUNT{LOCK|UNLOCK}为什么要锁定用户帐号而不是将其删除?用户管理修改用户的磁盘空间配额ALTERUSERusernameDEFAULTTABLESPACEdefault_tablespaceQUOTAnnondefault_tablespaceDBA可以通过动态性能视图来查看用户在数据库中的活动信息,限制用户对系统资源的使用,以保证数据库的运行安全.Selectsid,serial#,logon_time,username,machinefromv$session;权限管理除非用户具有执行特定的数据库操作权限,否则,用户既不能与数据库服务器连接,也不能做任何事情例如:除非用户具有CREATESESSION系统权限,否则用户不能与Oracle数据库连接除非用户具有CREATETABLE系统权限,否则用户不能在自己的模式中创建表权限管理在Oracle数据库中,有两类权限:对象权限和系统权限。对象级别权限:指在对象级控制数据库的存取和使用的机制,即访问其他用户的方案对象的能力.例如,用户可以存取哪个用户方案中的哪个对象,是否能对该对象查询,插入或更新等.系统权限:指在系统级控制数据库的存取和使用的机制,即执行某种SQL语句的能力.例如:是否能启动,停止数据库,是否能连接到数据库,是否能创建,删除,更改方案对象.DBMS通过权限实现数据库安全保护的过程是:DBA或对象的创建者通过SQL语言的GRANT和REVOKE语句,把授予(回收)权限的定义告知DBMS.DBMS把授予(回收)权限的结果存入(取出)数据字典.当用户提出操作请求时,DBMS根据数据字典中保留的权限定义进行检查,以决定是否可以执行该操作请求.权限可以通过两种方式授予用户:直接授予:直接将权限授予用户;间接授予:先将权限授予角色,然后将角色授予用户.权限管理数据库权限的类型--系统权限系统权限(SystemPrivilege)向用户提供了执行某一种或某一类型的数据库操作的能力,有近100种系统权限。基本的系统权限如表14-1权限管理系统权限的授予和撤销—一般由DBA完成REVOKE{sys_priv_1[,sys_priv_2]...|ALL[PRIVILEGES]}FROM{user_1[,user_2]...|PUBLIC};GRANT{sys_priv_1[,sys_priv_2]...|ALL[PRIVILEGES]}TO{user_1[,user_2]...|PUBLIC}[WITHADMINOPTION];查看系统权限SELECT*FROMUSER_SYS_PRIVSSELECT*FROMDBA_SYS_PRIVS权限管理使用系统权限时,需要注意以下几点:一般情况下,都应该将CREATESESSION权限授予用户用户需要CREATETABLE权限来在自己的模式中创建、修改、删除或查询任何表如果要删除其他模式中的表,用户必须具有DROPANYTABLE系统权限CREATEANYPROCEDURE允许用户创建、修改、删除或执行任何存储过程、程序包和函数开发人员一般需要几个系统权限,包括CREATETABLE,CREATEVIEW,CREATETYPE等,以创建支持前台应用程序的数据库模式权限管理数据库权限的类型--对象权限对象权限控制用户是否能在特定数据库对象(如表、视图或存储过程)上执行特定类型的操作对象权限适用对象允许的操作SELECT表、视图、序列查询UPDATE表、视图或其中的字段更新DELETE表和视图删除行INSERT表、视图或其中的字段插入行EXECUTE存储过程,存储函数与程序包执行PL/SQL存储对象READ目录读取目录INDEX表在表上建立索引REFERENCES表或其中字段在其他表中创建的外键能引用表或表中的字段ALTER表或序列修改表或序列的结构权限管理对象权限的授予和撤销REVOKE{obj_priv_1[,obj_priv_2]...|ALL[PRIVILEGES]}ON{[schema.]object[(column1[,column2])]}FROM{user_1[,user_2]...|PUBLIC}GRANT{obj_priv_1[,obj_priv_2]...|ALL[PRIVILEGES]}ON{[schema.]object[(column1[,column2])]}TO{user_1[,user_2]...|PUBLIC}[WITHGRANTOPTION]查看对象权限colGRANTEEformata15colOWNERformata10colGRANTORformata10colPRIVILEGEformata10select*fromuser_tab_privs;select*fromdba_tab_privs;得到基本表的权限状况其中:GRANTEE表示接受对象权限的用户OWNER表示表的拥有者GRANTOR为授权用户PRIVILEGE表示对象权限GRANTABLE表示该用户是否能向其他用户授予对象权限权限管理使用对象权限时需要注意以下几个问题(选学):如果一个视图引用了其他模式中的表或视图,则该视图的拥有者必须以WITHGRANTOPTION方式获得这些表或视图的权限,才能将该视图的对象权限授予其他用户SELECT对象权限只能授予整个表而不能授予表中的字段角色与权限管理数据库角色就是权限的命名集合。使用角色可以大大降低用户权限的维护负担。角色可以是对象权限或系统权限的命名集合。数据库管理员只需创建特定的数据库角色,使其反映组织或应用的安全权限,就可以将这些角色赋予用户。系统内置角色CONNECT,RESOURCE,DBA等角色与权限管理利用角色进行权限管理权限1权限2权限3角色1角色2用户1用户2用户3角色与权限管理创建角色如:Createrolepublic_role创建一个公用角色删除角色CREATEROLErole_name;DROPROLErole;对角色授权将系统权限授予角色将对象权限授予角色GRANT{sys_priv_1[,sys_priv_2]...|ALL[PRIVILEGES]}TOrole_1[,role_2]...[WITHADMINOPTION]GRANT{obj_priv_1[,obj_priv_2]...|ALL[PRIVILEGES]}ON{[schema.]object[(column1[,column2])]|DIRECTORYdir}TO{role_1[,role_2]...|PUBLIC}[WITHGRANTOPTION]Grantcreatesessiontopublic_rolewithadminoption;Connectscott/tiger;Grantselect,insert,updateondepttopublic_role;connectsys/pwd@bvtc4assysdba;Grantpublic_roletomyuser1;Connectmyuser1/welcomeselect*fromscott.dept;角色与权限管理撤销角色的系统权限撤销角色的对象权限REVOKE{sys_priv_1[,sys_priv_2]...|ALL[PRIVILEGES]}FROM{role_1[,role_2]...};REVOKE{obj_priv_1[,obj_priv_2]...|ALL[PRIVILEGES]}ON{[schema.]object[(column1[,column2])]|DIRECTORYdir}FROM{user_1[,user_2]...}角色与权限管理将角色授予用户或其他角色撤销授予用户或其他角色的角色GRANTrole_1[,role_2]...TO{user_1[,user_2]...|PUBLIC|role_1[,role_2]}[WITHADMINOPTION];REVOKErole_1[,role_2]...FROM{user_1[,user_2]...|PUBLIC|role_1[,role_2]};查看角色信息可以通过数据字典视图USER_TAB_PRIVS查看角色拥有的权限如:select*fromUSER_TAB_PRIVSwheregrantee='PUBLIC_ROLE';Oracle中的数据字典概述数据字典用于存放有关数据库描述信息的数据。比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等。当用户在对数据库中的数据进
本文标题:安全性管理
链接地址:https://www.777doc.com/doc-1257289 .html