资源描述:
Oracle的用户和权限管理,本章学习目标数据库安全性问题一直是人们关注的焦点,数据库数据的丢失以及数据库被非法用户的侵入对于任何一个应用系统来说都是至关重要的问题。确保信息安全的重要基础在于数据库的安全性能。,第五章Oracle的用户和权限管理,本章内容安排,5.1用户管理,5.2权限和角色,5.3概要文件,,5.1.2创建用户,5.1.3修改用户,5.1.4删除用户,5.1.1数据库的存取控制,5.1用户管理,,1.用户鉴别,2.用户的表空间设置和定额,5.1.1数据库的存取控制,3.用户资源限制和环境文件,4.用户环境文件,,用户鉴别为了防止非授权的数据库用户的使用,Oracle提供三种确认方法操作系统确认、Oracle数据库确认网络服务确认。由操作系统鉴定用户的优点是1)用户能更快,更方便地联入数据库。2)通过操作系统对用户身份确认进行集中控制如果操作系统与数据库用户信息一致,那么Oracle无须存储和管理用户名以及密码。3)用户进入数据库和操作系统审计信息一致。,,,2.用户的表空间设置和定额关于表空间的使用有几种设置选择用户的缺省表空间用户的临时表空间数据库表空间的空间使用定额,,3.用户资源限制和环境文件用户可用的各种系统资源总量的限制是用户安全域的部分。利用显式地设置资源限制,安全管理员可防止用户无控制地消耗宝贵的系统资源。资源限制是由环境文件管理。一个环境文件是命名的一组赋给用户的资源限制。另外Oracle为安全管理员在数据库提供是否对环境文件资源限制的选择。Oracle可限制几种类型的系统资源的使用,每种资源可在会话级、调用级或两者上控制。,,在会话级每一次用户连接到一数据库,建立一会话。每一个会话在执行SQL语句的计算机上耗费CPU时间和内存量进行限制。在调用级在SQL语句执行时,处理该语句有几步,为了防止过多地调用系统,Oracle在调用级可设置几种资源限制。,,有下列资源限制(1)为了防止无控制地使用CPU时间,Oracle可限制每次Oracle调用的CPU时间和在一次会话期间Oracle调用所使用的CPU的时间,以0.01秒为单位。(2)为了防止过多的I/O,Oracle可限制每次调用和每次会话的逻辑数据块读的数目。(3)Oracle在会话级还提供其它几种资源限制。每个用户的并行会话数的限制。会话空闲时间的限制,如果一次会话的Oracle调用之间时间达到该空闲时间,当前事务被回滚,会话被中止,会话资源返回给系统。每次会话可消逝时间的限制,如果一次会话期间超过可消逝时间的限制,当前事务被回滚,会话被删除,该会话的资源被释放。每次会话的专用SGA空间量的限制。,,4.用户环境文件用户环境文件是指定资源限制的命名集,可赋给Oracle数据库的有效的用户。利用用户环境文件可容易地管理资源限制。在许多情况中决定用户的环境文件的合适资源限制的最好的方法是收集每种资源使用的历史信息。,,5.1.2创建用户,使用CREATEUSER语句可以创建一个新的数据库用户,执行该语句的用户必须具有CREATEUSER系统权限。在创建用户时必须指定用户的认证方式。一般会通过Oracle数据库对用户身份进行验证,即采用数据库认证方式。在这种情况下,创建用户时必须为新用户指定一个口令,口令以加密方式保存在数据库中。当用户连接数据库时,Oracle从数据库中提取口令来对用户的身份进行验证。,,,使用IDENTIFIEDBY子句为用户设置口令,这时用户将通过数据库来进行身份认证。如果要通过操作系统来对用户进行身份认证,则必须使用IDENTIFIEDEXTERNALBY子句。使用DEFAULTTABLESPACE子句为用户指定默认表空间。如果没有指定默认表空间,Oracle会把SYSTEM表空间作为用户的默认表空间。为用户指定了默认表空间之后,还必须使用QUOTA子句来为用户在默认表空间中分配的空间配额。,,,此外,常用的一些子句有①TEMPORARYTABLESPACE子句为用户指定临时表空间。②PROFILE子句为用户指定一个概要文件。如果没有为用户显式地指定概要文件,Oracle将自动为他指定DEFAULT概要文件。③DEFAULTROLE子句为用户指定默认的角色。④PASSWORDEXPIRE子句设置用户口令的初始状态为过期。⑤ACCOUNTLOCK子句设置用户账户的初始状态为锁定,缺省为ACCOUNTUNLOCK。在建立新用户之后,通常会需要使用GRANT语句为他授予CREATESESSION系统权限,使他具有连接到数据库中的能力。或为新用户直接授予Oracle中预定义的CONNECT角色。,,5.1.3修改用户,在创建用户之后,可以使用ALTERUSER语句对用户进行修改,执行该语句的用户必须具有ALTERUSER系统权限。例如利用下面的语句可以修改用户chenjie的认证方式、默认表空间、空间配额ALTERUSERchenjieIDENTIFIEDBYchenjie_pwQUATA10MONmbl_tbs;,,,ALTERUSER语句最常用的情况是用来修改用户自己的口令,任何用户都可以使用ALTERUSERIDENTIFIEDBY语句来修改自己的口令,而不需要具有任何其他权限。但是如果要修改其他用户的口令,则必须具有ALTERUSER系统权限。,,,DBA还会经常使用ALTERUSER语句锁定或解锁用户账户。例如ALTERUSERchenjieACCOUNTLOCK;ALTERUSERchenjieACCOUNTUNLOCK;,,5.1.4删除用户,使用DROPUSER语句可以删除已有的用户,执行该语句的用户必须具有DROPUSER系统权限。如果用户当前正连接到数据库中,则不能删除这个用户。要删除已连接的用户,首先必须使用ALTERSYSTEMKILLSESSION语句终止他的会话,然后再使用DROPUSER语句将其删除。,,如果要删除的用户模式中包含有模式对象,必须在DROPUSER子句中指定CASCADE关键字,否则Oracle将返回错误信息。例如利用下面的语句将删除用户chenjie,并且同时删除他所拥有的所有表、索引等模式对象DROPUSERchenjieCASCADE;,5.2.2创建角色,5.2.3授予权限或角色,5.2.4回收权限或角色,5.2.1基本概念,5.2权限和角色,5.2.5激活和禁用角色,,1.权限,2.角色,5.2.1基本概念,,1.权限权限是执行一种特殊类型的SQL语句或存取另一用户的对象的权力。有两类权限系统权限和对象权限。1)系统权限是执行一处特殊动作或者在对象类型上执行一种特殊动作的权利。系统权限可授权给用户或角色,一般,系统权限只授予管理人员和应用开发人员,终端用户不需要这些相关功能。2)对象权限在指定的表、视图、序列、过程、函数或包上执行特殊动作的权利。,,2.角色为相关权限的命名组,可授权给用户和角色。数据库角色包含下列功能(1)一个角色可授予系统权限或对象权限。(2)一个角色可授权给其它角色,但不能循环授权。(3)任何角色可授权给任何数据库用户。(4)授权给用户的每一角色可以是可用的或者不可用的。一个用户的安全域仅包含当前对该用户可用的全部角色的权限。(5)一个间接授权角色对用户可显式地使其可用或不可用。在一个数据库中,每一个角色名必须唯一。角色名与用户不同,角色不包含在任何模式中,所以建立角色的用户被删除时不影响该角色。,,一般,建立角色服务有两个目的为数据库应用管理权限和为用户组管理权限。相应的角色称为应用角色和用户角色。应用角色是授予的运行数据库应用所需的全部权限。用户角色是为具有公开权限需求的一组数据库用户而建立的。用户权限管理是受应用角色或权限授权给用户角色所控制,然后将用户角色授权给相应的用户。,,ORACEL利用角色更容易地进行权限管理。有下列优点(1)减少权限管理,不要显式地将同一权限组授权给几个用户,只需将这权限组授给角色,然后将角色授权给每一用户。(2)动态权限管理,如果一组权限需要改变,只需修改角色的权限,所有授给该角色的全部用户的安全域将自动地反映对角色所作的修改。(3)权限的选择可用性,授权给用户的角色可选择地使其可用或不可用。(4)应用可知性,当用户经用户名执行应用时,该数据库应用可查询字典,将自动地选择使角色可用或不可用。(5)应用安全性,角色使用可由口令保护,应用可提供正确的口令使用角色,如不知其口令,不能使用角色。,使用CREATEROLE语句可以创建一个新的角色,执行该语句的用户必须具有CREATEROLE系统权限。在角色刚刚创建时,它并不具有任何权限,这时的角色是没有用处的。因此,在创建角色之后,通常会立即为它授予权限。例如利用下面的语句创建了一个名为OPT_ROLE的角色,并且为它授予了一些对象权限和系统权限CREATEROLEOPT_ROLE;GRANTSELECTONsal_historyTOOPT_ROLE;GRANTINSERT,UPDATEONmount_entryTOOPT_ROLE;GRANTCREATEVIEWTOOPT_ROLE;,5.2.2创建角色,在创建角色时必须为角色命名,新建角色的名称不能与任何数据库用户或其他角色的名称相同。与用户类似,角色也需要进行认证。在执行CREATEROLE语句创建角色时,默认地将使用NOTIDENTIFIED子句,即在激活和禁用角色时不需要进行认证。如果需要确保角色的安全性,可以在创建角色时使用IDENTIFIED子句来设置角色的认证方式。与用户类似,角色也可以使用两种方式进行认证。使用ALTERROLE语句可以改变角色的口令或认证方式。例如利用下面的语句来修改OPT_ROLE角色的口令(假设角色使用的是数据库认证方式)ALTERROLEOPT_ROLEIDENTIFIEDBYaccts*new;,,1.授予系统权限,2.授予对象权限,5.2.3授予权限或角色,3.授予角色,,1.授予系统权限在GRANT关键字之后指定系统权限的名称,然后在TO关键字之后指定接受权限的用户名,即可将系统权限授予指定的用户。例如利用下面的语句可以相关权限授予用户chenjieGRANTCREATEUSER,ALTERUSER,DROPUSERTOchenjieWITHADMINOPTION;,,2.授予对象权限Oracle对象权限指用户在指定的表上进行特殊操作的权利。在GRANT关键字之后指定对象权限的名称,然后在ON关键字后指定对象名称,最后在TO关键字之后指定接受权限的用户名,即可将指定对象的对象权限授予指定的用户。使用一条GRANT语句可以同时授予用户多个对象权限,各个权限名称之间用逗号分隔。有三类对象权限可以授予表或视图中的字段,它们是分别是INSERT,UPDATE和REFERENCES对象权限。,,例如利用下面的语句可以将CUSTOMER表的SELECT和INSERT,UPDATE对象权限授予用户chenqianGRANTSELECT,INSERTCUSTOMER_ID,CUSTOMER_name,UPDATEdescONCUSTOMERTOchenqianWITHADMINOPTION;在授予对象权限时,可以使用一次关键字ALL或ALLPRIVILEGES将某个对象的所有对象权限全部授予指定的用户。,,3.授予角色在GRANT关键字之后指定角色的名称,然后在TO关键字之后指定用户名,即可将角色授予指定的用户。Oracle数据库系统预先定义了CONNECT、RESOURCE、DBA、EXP_FULL_DATABASE、IMP_FULL_DATABASE五个角色。CONNECT具有创建表、视图、序列等权限;RESOURCE具有创建过程、触发器、表、序列等权限、DBA具有全部系统权限;EXP_FULL_DATABASE、IMP_FULL_DATABASE具有卸出与装入数据库的权限。通过查询sys.dba_sys_privs可以了解每种角色拥有的权限。,,例如利用下面的语句可以将DBA角色授予用户chenjieGRANTDBATOchenjieWITHGRANTOPTION;在同一条GRANT语句中,可以同时为用户授予系统权限和角色。如果在为某个用户授予角色时使用了WITHADMINOPTION选项,该用户将具有如下权利(1)将这个角色授予其他用户,使用或不使用WITHADMINOPTION选项。(2)从任何具有这个角色的用户那里回收该角色。(3)删除或修改这个角色。注意不能使用一条GRANT语句同时为用户授予对象权限和角色。,使用REVOKE语句可以回收己经授予用户(或角色)的系统权限、对象权限与角色,执行回收权限操作的用户同时必须具有授予相同权限的能力。例如利用下面的语句可以回收已经授予用户chenqian的SELECT和UPDATE对象权限REVOKESELECT,UPDATEONCUSTOMERFROMchenqian;利用下面的语句可以回收已经授予用户chenjie的CREATEANYTABLE系统权限REVOKECREATEANYTABLEFROMchenjie;利用下面的语句可以回收己经授予用户chenjie的OPT_ROLE角色REVOKEOPT_ROLEFROMchenjie;,5.2.4回收权限或角色,在回收对象权限时,可以使用关键字ALL或ALLPRIVILEGES将某个对象的所有对象权限全部回收。例如利用下面的语句可以回收己经授予用户chenqian的CUSTOMER表的所有对象权限REVOKEALLONCUSTOMERFROMchenjie;,一个用户可以同时被授予多个角色,但是并不是所有的这些角色都同时起作用。角色可以处于两种状态激活状态或禁用状态,禁用状态的角色所具有权限并不生效。当用户连接到数据库中时,只有他的默认角色(DefaultRole)处于激活状态。在ALTERUSER角色中使用DEFAULTROLE子句可以改变用户的默认角色。例如如果要将用户所拥有的一个角色设置为默认角色,可以使用下面的语句ALTERUSERchenjieDEFAULTROLEconnect,OPT_ROLE;,5.2.5激活和禁用角色,在用户会话的过程中,还可以使用SETROLE语句来激活或禁用他所拥有的角色。用户所同时激活的最大角色数目由初始化参数ENABLEDROLES决定(默认值为30)。如果角色在创建时使用了IDENTIFIEDBY子句,则在使用SETROLE语句激活角色时也需要在IDENTIFIEDBY子句中提供口令。如果要激活用户所拥有的所有角色,可以使用下面的语句SETROLEALL;,5.3.2激活和禁用资源限制,5.3.3管理概要文件,5.3.1概要文件中的参数,5.3概要文件,,1.资源限制参数,2.口令策略参数,5.3.1概要文件中的参数,,1.资源限制参数资源参数的值可以是一个整数,也可以是UNLIMITED或DEFAULT即使用默认概要文件中的参数设置。大部分资源限制都可以在两个级别进行会话级或调用级。会话级资源限制是对用户在一个会话过程中所能使用的资源进行的限制,而调用级资源限制是对一条SQL语句在执行过程中所能使用的资源进行的限制。当会话或一条SQL语句占用的资源超过概要文件中的限制时,Oracle将中止并回退当前的操作,然后向用户返回错误信息。这时用户仍然有机会提交或回退当前的事务。如果受到的是会话级限制,在提交或回退事务后用户会话被中止(断开连接),但是如果受到的是调用级限制,用户会话还能够继续进行,只是当前执行的SQL语句被终止。,,以下为概要文件中使用的各种资源参数①SESSIONS_PER_USER该参数限制每个用户所允许建立的最大并发会话数目。达到这个限制时,用户不能再建立任何数据库连接。②CPU_PER_SESSION该参数限制每个会话所能使用的CPU时间。③CPU_PER_CALL该参数限制每条SQL语句所能使用的CPU时间。④LAGICAL_READS_PER_SESSION该参数限制每个会话所能读取的数据块数目,包括从内存中读取的数据块和从硬盘中读取的数据块。,,⑤LAGICAL_READS_PER_CALL该参数限制每条SQL语句所能读取的数据块数目,包括从内存中读取的数据块和从硬盘中读取的数据块。⑥CONNECT_TIME该参数限制每个会话能连接到数据库的最长时间。当连接时间达到该参数的限制时,.用户会话将自动断开。⑦IDLE_TIME该参数限制每个会话所允许的最大连续空闲时间。如果一个会话持续的空闲时间达到该参数的限制,该会话将自动断开。⑧COMPOSITE_LIMIT该参数用于设置“组合资源限制”。⑨PRIVATE_SGA在共享服务器操作模式下,执行SQL语句和PL/SQL语句时,Oracle将在SGA中创建私有SQL区。该参数限制在SGA中为每个会话所能分配的最大私有SQL区大小。在专用服务器操作模式下,该参数不起作用。,,2.口令策略参数使用概要文件可以实现如下三种口令策略(1)账户的锁定账户锁定策略是指用户在连续输入多少次错误的口令后,将由Oracle自动锁定用户的账户,并且可以设置账户锁定的时间。(2)口令的过期时间口令过期策略用于强制用户定期修改自己的口令。当口令过期后,Oracle将随时提醒用户修改口令。如果用户仍然不修改自己的口令,Oracle将使他的口令失效。,,(3)口令的复杂度在概要文件中可以通过指定的函数来强制用户的口令必须具有一定的复杂度。以下为在概要文件中使用的各种口令参数①FAILED_LOGIN_ATTEMPTS该参数指定允许的输入错误口令的次数,超过该次数后用户账户被自动锁定。②PASSWORD_LOCK_TIME该参数指定用户账户由于口令输入错误而被锁定后,持续保持锁定状态的时间。③PASSWORD_LIFE_TIME该参数指定同一个用户口令可以持续使用的时间。如果在达到这个限制之前用户还没有更换另外一个口令,他的口令将失效。这时必须由DBA为他重新设置新的口令。,,④PASSWORD_GRACE_TIME该参数指定用户口令过期的时间。如果在达到这个限制之前用户还没有更换另外一个口令,Oracle将对他提出警告。在口令过期之后,用户在达到PASSWORD_LIFE_TIME参数的限制之前有机会主动修改口令。⑤PASSWORD_REUSE_TIME该参数指定用户在能够重复使用一个口令前必须经过的时间。⑥PASSWORD_REUSE_MAX该参数指定用户在能够重复使用一个口令之前必须对口令进行修改的次数。PASSWORD_REUSE_TIME参数和PASSWORD_REUSE_MAX参数只能设置一个,而另一个参数必须指定为UNLIMITED。⑦PASSWORD_VERIFY_FUNCTION该参数指定用于验证用户口令复杂度的函数。Oracle通过一个内置脚本提供了一个默认函数用于验证用户口令的复杂度,所有指定时间的口令参数都以天为单位。,修改数据库的资源限制状态有两种方式在数据库启动之前,可以通过设置初始化参数RESOURCE_LIMIT来决定资源限制的状态。如果RESOURCELIMIT参数设置为TRUE,启动数据库后资源限制将处于激活状态;反之如果RESOURCELIMIT参数设置为FALSE,启动数据库后资源限制将处于禁用状态。默认情况下,RESOURCE_LIMIT参数为FALSE。在数据库启动之后(处于打开状态),可以使用ALTERSYSTEM语句来改变资源限制的状态,执行该语句的用户必须具有ALTERSYSTEM系统权限。,5.3.2激活和禁用资源限制,例如利用下面的语句可以将资源限制由禁用状态切换到激活状态ALTERSYSTEMSETRESOURCE_LIMITTRUE;如果在数据库中使用了服务器端初始化参数文件(SPFILE),在使用ALTERSYSTEM语句改变资源限制的状态时,可以选择在初始化参数文件中修改记录(默认的ALTERSYSTEM语句将使用SCOPEBOTH子句),这样在下一次启动数据库时修改仍然有效。,,1.创建概要文件,2.修改概要文件,5.3.3管理概要文件,3.删除概要文件,4.指定概要文件,5.设置组合资源限制,,1.创建概要文件使用CREATEPROFILE语句可以创建概要文件,执行该语句的用户必须具有CREATEPROFILE系统权限。DBA可以根据需要使用下面的语句来修改DEFAULT概要文件中的参数设置ALTERPROFILElimit_fileLIMIT...;要修改DEFAULT概要文件,用户必须具有ALTERPROFILE系统权限。任何用户都不能删除DEFAULT概要文件。,,2.修改概要文件概要文件在创建之后,可以使用ALTERPROFILE语句来修改其中的资源参数和口令参数,执行该语句的用户必须具有ALTERPROFILE系统权限。例如利用下面的语句对概要文件ACCOUNTING_USER进行修改ALTERPROFILEACCOUNTING_USERLIMITCPU_PER_CALLDEFAULTLOGICAL_READS_PER_SESSION2000000;,,3.删除概要文件使用DROPPROFILE语句可以删除概要文件,执行该语句的用户必须具有DROPPROFILE系统权限。如果要删除的概要文件已经指定给了用户,则必须在DROPPROFILE语句中使用CASCADE关键字。例如利用下面的语句可以删除ACCOUNTING_USER概要文件DROPPROFILEACCOUNTING_USERCASCADE;如果为用户所指定的概要文件己经被删除,Oracle将自动为用户重新指定DEFAULT概要文件。,,4.指定概要文件在使用CREATEUSER语句创建用户时,可以通过PROFILE子句为新建用户指定概要文件。另外,在使用ALTERUSER语句修改用户时也可以为他指定概要文件。例如利用下面的语句可以将概要文件ACCOUNTINGUSER指定给用户JACKALTERUSERJACKPROFILEACCOUNTING_USER;,,5.设置组合资源限制在创建概要文件时通过COMPOSITELIMIT子句来指定资源总限额。例如利用下面的语句创建的概要文件中将资源总限额设置为20000CREATEPROFILEclerkLIMITCOMPOSITE_LIMIT20000SESSIONS_PER_USER2CPU_PER_CALL1000;注意在一个概要文件中设置的资源总限额和单独资源限制是同时起作用的。当会话所占用的资源达到其中一个限制时,会话将被终止。如果没有在概要文件中显式地设置资源总限额,默认的总限额值为0,这时组合资源限制不会起作用。,
展开阅读全文