logging in or signing up Chapter08 aSGuest30347 Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINT lite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 53 Category: Entertainment License: All Rights Reserved Like it (0) Dislike it (0) Added: November 03, 2009 This Presentation is Public Favorites: 0 Presentation Description No description available. Comments Posting comment... Premium member Presentation Transcript 第8章 安全管理 : 第8章 安全管理 内容提要 : 内容提要 本章从数据库用户管理、权限管理及资源限制管理几个方面介绍Oracle数据库的安全性策略。 Slide 3: 数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。Oracle作为一种大型的数据库系统,其安全问题更为突出。为此,Oracle数据库一面要检查用户的合法性,只有合法的用户才能登录到数据库系统;另一方面数据库系的各个用户有着不同的管理和操作权限,登录后只能在自己所拥有权限范围内执行相应的操作。 8.1 用户管理 : 8.1 用户管理 用户是定义在数据库中的一个名称,它是Oracle数据库的基本访问控制机制。当用户 要连接到Oracle数据库以进行数据访问时,必须要提供合法的用户名及其口令,如CONNECT scott/tiger。 Oracle数据库是可以为多个用户共享使用的,一个数据库中通常会包含多个用户。数 据库在新建后通常会自动建好一些用户,其中最重要的有sys和system两个管理员用户及 scott等一些普通用户。 Slide 5: 数据库每个用户都可以拥有自己的对象,一个用户所拥有对象的集合称为一个模式,用户与模式具有一一对应的关系,并且两者名称相同。不同模式中可以具有相同的数据库对象名,即不同用户下的对象名称可以相同。对象的访问格式为[模式名.]对象名,只有访问自己模式对象时,模式名才可以省略。 例如,用户userl和用户user2都建立有名称为t的表。用户userl的表t属于userl模式,user2的表t属于user2模式。用户userl如果要访问自己模式的表t,访问格式t或userl.t都是可以的,但是如果访问user2模式对象t,则必须使用user2.t格式。 Slide 6: 数据库管理员可以定义和创建新的数据库用户,可以为用户更改口令,可以锁定某用户禁止其登录数据库,总之,用户管理工作是数据库管理员的职责之一。 创建用户必须具有CREATE USER系统权限。通常情况下只有数据库管理员或安全管理员才拥有CREATE USER权限。 创建用户时除了指定用户名外,还要指出验证方式、默认使用表空间、空间使用限额、 用户是否被锁定、用于资源限制的概要文件等选项。验证方式包括数据库口令验证、操作 Slide 7: 系统验证。数据库口令验证要求用户登录时必须要提供口令。 例如,创建新用户jwcuser: SQL>CREATE USER]WCUSer IDENTIFIED BY welcomel35 DEFAULT TABLESPACE edu TEMPORARY TABLESPACE temp QUOTA 10M ON edu QUOTA 2M ON users PASSWORD EXPIRE; 该命令创建的用户为jwcuser,采用数据库口令验证,口令为welcomel35;存储对象默认使用edu表空间,临时表空间为temp QUOTA选项指定该用户在某个表空间的最大使用空间(默认情况下,用户在任何表空间上都没有限额),此处意即在edu表空间上最多 可使用10MB空间、在users表空间上使用限额为2MB;PASSWORD EXPIRE选项指示口令过期,这要求用户第一次登录时就要更改口令。 Slide 8: 又如,创建用户rscuser: SQL>CREATE USER rscuser IDENT工F工ED EXTERNALLY DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users; 创建的用户rscuser采用操作系统验证,存储对象默认使用users表空间,且在该表空间上所能使用的存储空间不受限制,临时表空间为temp。 Slide 9: 下面命令所创建的用户为testuser,口令以数字开头(此时需要双引号),所建用户处于锁定状态被禁止登录数据库。 SQL>CREATE USER testuser IDENTIF工ED BY ”123456” ACCOUNT LOCK; 由于没有指明默认表空间,因此将采用SYSTEM作为用户默认的表空间,考虑到系统 性能问题,建议指明一个非系统表空间。 8.1.2 特权用户 : 8.1.2 特权用户 特权用户是指具有特殊权限(SYSDBA或SYSOPER)的数据库用户,这类用户主要用于执行数据库的维护操作,例如,启动和关闭数据库、建立数据库、备份和恢复等任务。 从Oracle9i开始,当建立实例服务时会建立名称为sys的特权用户。另外,当将初始化参数REMOTE-LOGIN_PASSWORDFILE设置为EXCLUSIVE时,还可以将SYSDBA和SYSOPER特权授予其他用户。 需要注意的是,从Oracle9i开始,sys用户或其他欲以特权身份登录的用户登录必须带有As SYSDBA或AS SYSOPER子句,而且特权用户都对应sys用户,图8—1验证了这一点。 Slide 11: 以SYSDBA和SYSOPER登录都可以执行启动和关闭数据库的操作,但是SYSDBA更高,不仅具有SYSOPER的所有权限,并且还具有建立数据库以及执行不完全恢限。 8-1 SYSDBA和SYSOPER权限 : 8-1 SYSDBA和SYSOPER权限 8.1.3 修改用户 : 8.1.3 修改用户 1.更改口令 使用ALTER USER命令可以修改用户的信息,但是需要由DBA或者具有ALTER USER系统权限的用户来完成。用户经常更改登录口令是一个不错的习惯。每个用户都可以使用如下命令修改其自身口令: SQL>ALTER USER testuser IDENTIFIED BY ertghj 当用户遗忘了口令无法登录时,可以由DBA使用上述命令为其重设一个新口令。 Slide 14: 2.更改某个表空间的使用配额 用户在某个表空间的使用配额可能会根据实际情况有所调整。 例如,当用户在一个表上执行INSERT、UPDATE操作时总是出现错误(0RA一01536: space quota exceeded for tablespace·edu’),但SELECT和DELETE操作却没有问题。此时 Slide 15: 可能是由于用户在该表所在的表空问上已经占满了空间配额所致,DBA需要修改以增大表空间配额,使用命令为: SQL>ALTER USER jwcuser QUOTA 15M ON edu; 有时候不希望用户再使用某表空间,可以将其在该表空间上的空间配额改成: SQL>ALTER USER jwcuser QUOTA 0 ON users; 需要注意的是,如果用户jwcuser在users表空间上拥有表t,则该对象仍然保留,只是不会再为该表分配新的空间。 Slide 16: 3.更改用户的状态 不希望某用户使用数据库数据时,可以将此用户进行锁定: SQL>ALTER USER testuser ACCOUNT LOCK; 而解除对testuser用户账户的锁定,使用如下命令: SQL>ALTER USER testuser ACCOUNT UNLOCK; 删除用户之后,Oracle会从数据字典中删除用户及该用户拥有对象的信息。 Slide 17: 例如: SQL>DROP USER testuser; 以上命令会删除用户testuser,但是,如果该用户拥有数据库对象,则删除时必须带有CASCADE选项,否则会显示如下错误信息: ORA一01922:CASCADE must be specified to drop’TESTUSER’ 应该使用如下格式删除命令: SQL>DROP USER testuser CASCADE; 需要注意的是,当前正在连接的用户是不能删除的。 通过数据字典dba_users、dba ts quotas、user_users、user_ts_quotas等可以查询出用户相关信息。 Slide 18: 例如,查询jwcuser用户的默认表空间、临时表空间、账号状态信息。 SQL>SELECT default_tablespace, temporary_tablespace, account_status FROM dba users WHERE username=’JWCUSER’; 又如,iwcuser用户想了解自己能使用的表空间、已使用空间及能使用的最大空间情况, 可执行如下SQL语句: Slide 19: >SELECT tablespace—name ’‘表空间”, blocks n已占用块总数n, max—blocks--可占用的最大块数” FROM user一ts—quotas; 表空间 已占用块总数 可占用的最大块数 SYSTEM 224 0 USERS 344 O TT 40 一1 Slide 20: 其中,max二blocks表示用户数据对象可占用的最大块数,一1表示无限制。 特权用户具有启动、关闭数据库等特权,通过查询动态性能视图v$pwfile_users,可以确定有哪些特权用户及他们有哪些特权。 8.2权限管理 : 8.2权限管理 权限用于限制用户可执行的操作,即限制用户在数据库中或对象上可以做什么,不可以做什么。新建立用户没有任何权限,不能执行任何操作,只有给用户授予了特定权限或角色之后,该用户才能连接到数据库,进而执行相应的SQL语句或进行对象访问操作。 8.2.1 权限类型 : 8.2.1 权限类型 Oracle中权限分为系统权限和对象权限两种类型。 1.系统权限 系统权限是在数据库中执行某种操作,或者针对某一类的对象执行某种操作的权力。 系统权限并不针对某一个特定的对象,而是针对整个数据库范围。比如,在数据库中创建 空间的权力(对应的系统权限名称为CREATE TABLESPACE),或者为其他模式创建表 权力(对应的系统权限名称为CREATEANY TABLE)。 表8.2系统权限举例 : 表8.2系统权限举例 2.对象权限 : 2.对象权限 对象权限是一种对于特定的表、视图、序列、过程、函数或程序包执行特定操作的一种权限或权利。表8—3列出了Oracle所提供的对象权限。 Oracle所提供的对象权限 : Oracle所提供的对象权限 Slide 26: 注意,UPDATE与INSERT权限可以具体限制到某些列上,而SELECT权限只能限制在整个表。 8.2.2 授予权限 : 8.2.2 授予权限 授予权限是通过GRANT命令实现的,但是根据授予的是系统权限还是对象权限GRANT命令语法是有区别的。 1.授予系统权限 : 1.授予系统权限 CREATE SESSl0N是一个用户访问数据库必须至少具有的系统权限,下面的命令将该系统权限授予用户jwcuser: Slide 29: SQL>GRAINT CREATE SESSION TO]wcuser; 又如,将CREATE SESSION与CREATE TABLE两种系统权限同时授予testuser用户: SQL>GRANT CREATE SESSION,CREATE TABLE TO testuser; 再如,将CREATE SESSION系统权限授予所有用户: SQL>GRANT CREATE SESSION TO PUBLIC; Slide 30: 这里的PUBLIC实际上是Oracle自动创建的用户组,每个数据库用户都会自动成为PUBLIC组中的成员。利用PUBLIC用户组可以方便地为数据库中所有的用户授予某些必需的对象权限和系统权限。默认情况下,作为PUBLIC组中的成员,用户可以查询所有以USER_和ALL开头的数据字典视图。 Slide 31: 系统权限授权工作通常由DBA完成,但是授权时可以带有WITHADMIN OPTION选项,使得被授予者可以进一步将此权限授予其他用户。图8—3操作中,首先由DBA用户将CREATE SESSION与CREATE VIEW系统权限授予省级管理员用户gly_hebei,再由省级管理员授予2个地市级管理员gly—sjz、gly_bd." 图8—3系统权限的传递 2.授予对象权限 : 2.授予对象权限 一个对象的拥有者具有该对象的所有权限,他可以将该对象上的权限授予数据库的其他用户。如果他允许被授予者可以再转授此权限给另外的用户,授权时需要带有WITH GRANT OPTION选项。 例如,iwcuser将自己表stud上的查询权限授予用户testuser: SQL>GRANT SELECT ON stud TO testuser; jwcuser将自己表stud上的插入数据权限、结构更改权限授予用户testuser: SQL>GRANT INSERT,ALTER ON stud TO testusel"; Slide 33: jwcuser将自己表course上的所有权限授予用户userl与user2: SQL>GRANT ALL ON course TO userl,user2; 将表temp的列coll和列c012上的更新、插入权限授予用户userl: SQL>GRANT UPDATE(C011,C012),INSERT(c011,C012)0N temp T0 userl; Slide 34: 再如,将包DBMS—OUTPUT上的执行权限授予用户userl,userl还可以转授此权限给其他用户: SQL>CONN/AS SYSDBA SQL>GRANT EXECUTE ON DBMS OUTPUT TO user WITH GRANT OPTION; 这里属于对象权限的传递,用WITH GRANT OPTION选项表示。 8.2.3 回收权限 : 8.2.3 回收权限 回收权限的命令是REVOKE,执行回收权限操作的用户同时必须具有授予相同权限的能力与GRANT命令相类似,回收权限时也会根据是系统权限还是对象权限,语法会有些不同。 Slide 36: 1.系统权限 例如,将CREATE TABLE系统权限从testuser用户收回: SQL>REVOKE CREATE TABLE FROM testusef; 又如,将CREATE、,JEw系统权限从省级管理员用户gly_hebei中收回: SQL>REVOKE CREATE VIEW FROM gly_hebei; ’ 在图8.3所示的例子中,system用户授予了gly_hebei用户CREATE VIEW系统权限及WITH ADMIN OPTION选项,并且gly_hebei用户又将CREATE VIEW系统权限授予了gly—sjz用户,那么当回收了gly—hebei用户的CREATE VIEW系统权限之后,gly—sjz用户的CREATE VIEW系统权限不会被回收,即系统权限不会级联收回。图8—4示意性地给出了授权与回收过程。 2.对象权限 : 2.对象权限 收回对象权限也是通过REVOKE命令完成的。例如,jwcuser要收回另一用户testuser对自己对象stud表上的结构更改权限,可以使用如下命令: SQL>REVOKE ALTER ON stud FROM testuser; 但不像收回系统权限,收回对象权限时会被级联收回。假如DBA将表test上的UPDATE权限授给了gly_hebei,并且带有WITH GRANT OPTION选项,而后gly—hebei又将此权限转授给gly—sjz,如图8—5(a)所示。而当DBA将表test上的UPDATE权限从gly_hebei用户收回时,同时也会收回gly—sjz用户在test表上的 UPDATE权限,如图 8.2.4 查看权限 : 8.2.4 查看权限 1.显示用户所具有的系统权限 DBA通过查询数据字典dba_sys_privs,可以了解指定用户所具有的系统权限以及 WITH ADMIN OPTION选项,如下所示: SQL>SELECT * FROM dba—sys_privs WHERE grantee=’TESTUSER’; Slide 40: 此例查询的仅是用户testuser所具有的系统权限情况,GRANTEE表示权限拥有者,VILEGE表示系统权限名,ADMIN—OPTION表示转授系统权限选项,其中YES意指可以转授,而NO表示不能转授。 有时用户也需要了解自己拥有哪些权限,此时查询user—sys—privs数据字典即可。 2.显示用户所具有的对象权限 : 2.显示用户所具有的对象权限 通过查询dba_tab—privs、user_tab_privs两个数据字典视图,可以获得用户在哪个对象有哪些对象权限信息。 例如,DBA需要了解testuser用户所拥有权限的具体信息,比如在哪些表上有哪些权限,这些表属于哪个用户,被哪个用户授予,这些权限能否转授等信息,相应的命 SQL>SELECT tabie_name,privilege f owner r grantor|grantable FROM dba_tab_privs WHERE grantee:’TESTUSER’; Slide 42: 如果想了解更详细的信息,例如,哪些列上具有UPDATE权限或SELECT权限,则可使用如图8-6所示的命令,查询dba_col_privs获得。 结果显示:testuser用户所拥有的UPDATE权限是在stud表的SIlO列和sname列上。似地,数据字典user—col—privs供用户查询自己在哪个对象的哪个列上有怎样的对象权限。 8.3角色管理 : 8.3角色管理 角色就是一组权限的集合。角色可以被授予用户或其他的角色,把角色分配给用户,就是把角色所拥有的权限分配给了用户。 使用角色可以更容易地进行权限管理,主要体现在如下三个方面。 (1)减少了授权工作:用户可以先将权限授予一个角色,然后再将角色授予每一个用户,而不是将一组相同的权限授予多个用户。 Slide 44: (2)动态权限管理:当一组权限需要改变时,只需要更改角色的权限,则所有被授予了此角色的用户自动地立即获得了修改后的权限。 (3)方便地控制角色的可用性:角色可以临时禁用和启用,从而使权限变得可用和不可用。 Slide 45: 1.创建角色 角色不属于任何用户,也不在任何模式下。但是创建角色的用户需要有CREATEROI.E系统权限。 例如,创建角色fdy,命令如下: SQIj>CREATE ROLE fdy: 角色建立之后,它不具有任何权限,为了使角色发挥作用,要给它授予相应权限,权限可以是系统权限也可以是对象权限。给角色授权与给用户授权的方法完全相同。下面的 语句给角色fdy授予连接到数据库、建立视图、查询表stud的权限: SQL一>GRANT CREATE SESS工0N,CREATE V工EW TO FDY: SQL一>GRANT SELECT ON stud TO fd3’: 同样地,也可以将权限从角色收回,如下语句是将建立视图的系统权限从角色:fdy中收回: Slide 46: sql>REVOKE CREATE VI EW FROM fdy· 又如,创建安全性更高的带有口令验证的角色bzr,命令为: SQL>CREATE ROLE bzr IDENTIFIED BY teachers; 2.分配角色 分配角色就是指将角色分配给某用户。在建立了角色并为其授予了权限之后,只有将该角色分配给用户,该角色才能起作用。分配角色与授予系统权限的命令完全相同。示例如下: SQL>GRANT fdy TO testuser; SQL>GRANT fdy TO jwcuser; 同样地,回收角色采用REVOKE命令,示例如下: SQL>REVOKE fdy FROM testuser; 3.控制角色的可用性 : 3.控制角色的可用性 默认情况下,用户登录时自动启用分配给该用户的所有角色。但是,有时可能需要临时关闭一些权限,或者希望登录时只自动启用一部分角色,要灵活地控制一个用户在一个时刻所拥有的权限,则可以使用默认角色、禁用角色、启用角色等相关操作。 (1)默认角色。默认角色是用户登录时自动启用的角色的子集。使用ALTER USER命令给用户指定默认角色。 Slide 48: 例如,将fdy与bzr两个角色作为用户testuser的默认角色: SQL>ALTER USER testuser DEFAULT ROLE fdy,bzr; 又如,指定除了fdy角色以外的所有角色都成为testuser用户的默认角色: sQL>ALTER USER testuser DEFAULT ROLE ALL EXCEPT fdy; 再如,testuser用户没有任何默认角色: SQL>ALTER USER testuser DEFAULT ROLE none; 需要注意的是,只有授予给用户的角色才能被指定为用户的默认角色,即必须先将此角色授予用户,此角色才能成为用户的默认角色。 Slide 49: (2)禁用和启用角色。禁用角色会使用户不能使用与该角色相关的权限,相反,启用角色用户则会具有该角色的权限。SET ROLE命令用于角色的禁用和启用。 例如,启用没有口令验证的角色fdy: SQL>SET ROLE fdy; 而要启用带口令验证的角色bzr: SQL>SET ROLE bzr IDENTIFIED BY teachers j 又如,使除了fdy以外的所有不带口令的角色变得可用: SQL>SET ROLE ALL EXCEPT fdy; 再如,禁用所有角色: SQL>SET ROLE NONE: 4.删除角色 : 4.删除角色 使用DROP ROLE命令可以删除角色。即使一个角色已经被授予一个用户或其他角色,Oracle也允许用户删除该角色。当一个角色被删除时,立即从用户的角色列表中去掉该角色。 例如,删除fdy角色,可以使用DROPROLE命令: SQL>DROP ROLE fdy; 8.3.2使用预定义的角色 : 8.3.2使用预定义的角色 当建立数据库时,Oracle自动定义了多个角色。系统预定义的角色包括如下几个。 (1)CONNECT、RESOURCE、DBA:提供这些角色的目的是为了向后与Oracle服务器的早期版本兼容。 (2)EXP』ULLDATABASE、IMP_FULLDATABASE:导出、导入数据库的权限。 (3)DELETE—CATALOG_ROLE:对于数据字典表的DELETE权限。 (4)EXECUTE_CATALOG_ROLE:对于数据字典程序包的EXECUTE权限。 (5)SELECT-CATALOG_ROLE:对于数据字典表的SELECT权限。 Slide 52: 许多数据字典视图包含了授予用户和角色的权限信息,查询这些视图可以了解当前数据库中已经建立的角色,以及这些角色所拥有的系统权限和对象权限。 例如,查询dba roles视图可以了解当前数据库的所有角色,其中password_required列指出了该角色是否需要口令: SQL>SELECT role,password—required FROM dba_roles; Slide 53: 如下命令可以查得用户jwcuser所具有的角色信息: SQL>SELECT grante(Lrole FROM dba_role privs WHERE grantee=。JWCUSER。; 又如,查询fdy角色所拥有的系统权限、对象权限,分别使用如下两个命令: SQL>SELECT。 FROM role_sys_privs WHERE role=。FDY ; SQL>SELECT * FROM role_tab_privs WHERE role=’FDY’: 再如,查询session_roles视图以获得当前会话启用的角色: SQL>SELECT‘FROM Session r01es: 8.4 PROFILE管理 : 8.4 PROFILE管理 PROFILE也称配置文件或概要文件,是口令限制和资源限制的命名集合。例如,使用PROFILE可以指定口令有效期、进行口令复杂性校验、指定用户连接时问以及最大空闲时间等。数据库每个用户都会对应一个配置文件,PROFILE具有以下一些作用。 Slide 55: (1)限制用户执行某些需要消耗大量资源的SQL操作。 (2)确保在用户会话空闲一段时间后,将用户从数据库注销。 (3)在大而复杂的多用户数据库系统中合理分配资源。 (4)控制用户口令的使用。 当建立数据库时,系统会自动建立DEFAULT配置文件,该文件的所有口令及资源限制选项初始值均为UNLIMITED,即未进行任何口令和资源限制。当建立用户时,如果不指定PROFILE子句,则Oracle会将DEFAULT分配给该用户。根据用户所承担任务的不 同,DBA应该建立不同的PROFILE,并将PROFILE分配给相应的用户。 8.4.2 使用PROFILE : 8.4.2 使用PROFILE 使用PROFILE可以管理口令和进行资源限制。 管理口令有锁定账户、终止口令、口令历史以及口令校验等四种安全保护方式,共包含了7个口令管理选项,如果仅指定某个或某几个选项,那么其他选项将自动使用DEFAULT的相应选项值。 在大而复杂的多用户数据库管理环境中,用户众多,不仅需要管理这些用户的口令,还要对每个用户或会话使用的CPU、内存等系统资源予以限制,以有效地利用系统资源确保系统性能。使用PROFILE进行资源限制,既可以限制整个会话的资源占用,也可以限制调用级(SQL语句)的资源占用。 Slide 57: 需要注意的是,与管理口令不同,如果使用PROFILE管理资源,则必须要激活资源限制,即需要将初始化参数RESOURCE-LIMIT设置为TRUE。 例如,为了加强用户jwcuser的口令安全,要求其登录失败次数限制为3次,如果其连续失败3次,则其账户自动锁定, 锁定7天后解除锁定,而且要求其每10天更改一次口令,一个口令再次使用必须间隔300天;最多允许5名人员同时以jwcuser用户登录,每个会话连接时问不能超过60min,会话空闲时间不能超过5min。 Slide 58: 第一步,需要根据要求建立一个PROFILE,命令如下: SQL>CREATE PROFILE profile_jwcuser LIMIT FAILED_LOGIDLATTEMPTS 3 PASSWORD_LOCK_TIME 7 PASSWORD LIFE TIME 1 0 PASSWORD_REUSE_TIME 3 0 0 SESS工0NS PER USER 5 CONNECT TIME 60 IDLE TIME 5; Slide 59: 第二步,因为有资源限制选项,需要设置资源限制参数,命令为: SQL>ALTER SYSTEM SET RESOURCE-LIMIT=true; 第三步,将新建立的配置文件profilejwcuser分配给用户jwcuser。为用户分配PROFILE。既可以在建立用户时使用PROFILE子句,也可以在建立用户之后使用ALTER USER语句修改: SQL>ALTER USER Jwcuser PROFILE profile.jwcuser; 8.4.3 修改与删除PROFILE : 8.4.3 修改与删除PROFILE 当口令和资源限制无法满足目前的实际需求时,就需要修改口令及资源限制。修改口令及资源限制由ALTER PROFILE命令完成,使用该命令要求用户必须具有ALTER PROFILE系统权限。修改PROFILE的示例如下: SQL>ALTER PROFILE profile_jWCUSer LIMIT SESSIONS_PER—USER 3 FAILED_LOGIN_ATTEMPTS 5; Slide 61: 删除PROFILE使用DROP PROFILE命令完成,只是如果PROFILE已经被分配给某个用户,那么删除PROFILE时还必须带有CASCADE选项。 例如,要求删除profile__]wcuser,由于该PROFILE已经分配给了用户jwcuser,可使用如下命令删除: SQL>DROP PROFILE profile_jwcuser CASCADE ; .删除PROFILE后系统会自动将DEFAULT分配给该用户。 以上对PROFILE的修改、删除只对新会话起作用,对已经存在的会话不会产生影响。 8.4.4 查看PROFILE : 8.4.4 查看PROFILE 1.查看用户的PROFILE 通过查询数据字典dba_users,可以获得用户的详细信息,包括用户名称、PROFILE等。 SQL>SELECT profile FROM dba users WHERE username=’JWCUSER’; Slide 63: 2.查看PROFILE的口令和资源限制选项 当建立或修改PROFILE时,Oracle会将PROFILE选项及值存放到数据字典profiles中。在确定了用户的PROFILE之后,通过查询数据字典可以获得用户的口令及资源限制信息,如下所示: ‘ Slide 64: SQL>SELECT resource_name,1lmlt FROM dba_proflles WHERE profile=‘PROFILE_JWCUSER。AND resource_type=’KERNEL。: 数据字典dba_profiles包含如下4个列。 (1)profile:PROFILE名称。 (2)resource—name~PROFILE选项名。 (3)resource—type:PASSWORD表示口令管理选项,而KERNAL则表示资源限制选项。 (4)limit:PROFILE选项值。 小 结 : 小 结 本章主要讨论了数据库的安全管理内容,包括如何创建用户与更改用户属性、如何管限、角色的概念及如何通过角色管理权限,并简要介绍Oracle使用PROFILE管理口令限制资源使用的方法和内容。 Slide 66: 选择题 1.PROFILE资源文件不能用于限制( )。 A.使用的CPU时间 B.连接到数据库的总时间 C.一个会话处于不活动的最长时问 D.读块的时间 2.当建立一个新用户并且没有指定一个PROFILE时,( )。 A.Oracle提示用户指定一个资源文件 B.没有给用户分配资源文件 C.给用户分配了DEFAULT资源文件 D.Oracle提示用户指定多个资源文件 3.( )数据字典视图显示了一个用户口令的到期日期。 A.dba_profiles B.dba_users C.dba_passwords D.v$session Slide 67: 4.当用户具有哪种权限或角色时可以建立数据库?( ) A.SYSDBA B.SYSOPER C.DBA D.CONNECT 5.在以下哪些对象权限上可以授予列权限?( ) A.SELECT B.UPDATE C.DELETE D.INSERT 6.建立用户时没有指定QUOTA选项,则用户在其默认表空间上可占用的空间() A.无限制 B.为0 C.不超过10MB D.不超过100MB You do not have the permission to view this presentation. In order to view it, please contact the author of the presentation.
Chapter08 aSGuest30347 Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINT lite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 53 Category: Entertainment License: All Rights Reserved Like it (0) Dislike it (0) Added: November 03, 2009 This Presentation is Public Favorites: 0 Presentation Description No description available. Comments Posting comment... Premium member Presentation Transcript 第8章 安全管理 : 第8章 安全管理 内容提要 : 内容提要 本章从数据库用户管理、权限管理及资源限制管理几个方面介绍Oracle数据库的安全性策略。 Slide 3: 数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。Oracle作为一种大型的数据库系统,其安全问题更为突出。为此,Oracle数据库一面要检查用户的合法性,只有合法的用户才能登录到数据库系统;另一方面数据库系的各个用户有着不同的管理和操作权限,登录后只能在自己所拥有权限范围内执行相应的操作。 8.1 用户管理 : 8.1 用户管理 用户是定义在数据库中的一个名称,它是Oracle数据库的基本访问控制机制。当用户 要连接到Oracle数据库以进行数据访问时,必须要提供合法的用户名及其口令,如CONNECT scott/tiger。 Oracle数据库是可以为多个用户共享使用的,一个数据库中通常会包含多个用户。数 据库在新建后通常会自动建好一些用户,其中最重要的有sys和system两个管理员用户及 scott等一些普通用户。 Slide 5: 数据库每个用户都可以拥有自己的对象,一个用户所拥有对象的集合称为一个模式,用户与模式具有一一对应的关系,并且两者名称相同。不同模式中可以具有相同的数据库对象名,即不同用户下的对象名称可以相同。对象的访问格式为[模式名.]对象名,只有访问自己模式对象时,模式名才可以省略。 例如,用户userl和用户user2都建立有名称为t的表。用户userl的表t属于userl模式,user2的表t属于user2模式。用户userl如果要访问自己模式的表t,访问格式t或userl.t都是可以的,但是如果访问user2模式对象t,则必须使用user2.t格式。 Slide 6: 数据库管理员可以定义和创建新的数据库用户,可以为用户更改口令,可以锁定某用户禁止其登录数据库,总之,用户管理工作是数据库管理员的职责之一。 创建用户必须具有CREATE USER系统权限。通常情况下只有数据库管理员或安全管理员才拥有CREATE USER权限。 创建用户时除了指定用户名外,还要指出验证方式、默认使用表空间、空间使用限额、 用户是否被锁定、用于资源限制的概要文件等选项。验证方式包括数据库口令验证、操作 Slide 7: 系统验证。数据库口令验证要求用户登录时必须要提供口令。 例如,创建新用户jwcuser: SQL>CREATE USER]WCUSer IDENTIFIED BY welcomel35 DEFAULT TABLESPACE edu TEMPORARY TABLESPACE temp QUOTA 10M ON edu QUOTA 2M ON users PASSWORD EXPIRE; 该命令创建的用户为jwcuser,采用数据库口令验证,口令为welcomel35;存储对象默认使用edu表空间,临时表空间为temp QUOTA选项指定该用户在某个表空间的最大使用空间(默认情况下,用户在任何表空间上都没有限额),此处意即在edu表空间上最多 可使用10MB空间、在users表空间上使用限额为2MB;PASSWORD EXPIRE选项指示口令过期,这要求用户第一次登录时就要更改口令。 Slide 8: 又如,创建用户rscuser: SQL>CREATE USER rscuser IDENT工F工ED EXTERNALLY DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users; 创建的用户rscuser采用操作系统验证,存储对象默认使用users表空间,且在该表空间上所能使用的存储空间不受限制,临时表空间为temp。 Slide 9: 下面命令所创建的用户为testuser,口令以数字开头(此时需要双引号),所建用户处于锁定状态被禁止登录数据库。 SQL>CREATE USER testuser IDENTIF工ED BY ”123456” ACCOUNT LOCK; 由于没有指明默认表空间,因此将采用SYSTEM作为用户默认的表空间,考虑到系统 性能问题,建议指明一个非系统表空间。 8.1.2 特权用户 : 8.1.2 特权用户 特权用户是指具有特殊权限(SYSDBA或SYSOPER)的数据库用户,这类用户主要用于执行数据库的维护操作,例如,启动和关闭数据库、建立数据库、备份和恢复等任务。 从Oracle9i开始,当建立实例服务时会建立名称为sys的特权用户。另外,当将初始化参数REMOTE-LOGIN_PASSWORDFILE设置为EXCLUSIVE时,还可以将SYSDBA和SYSOPER特权授予其他用户。 需要注意的是,从Oracle9i开始,sys用户或其他欲以特权身份登录的用户登录必须带有As SYSDBA或AS SYSOPER子句,而且特权用户都对应sys用户,图8—1验证了这一点。 Slide 11: 以SYSDBA和SYSOPER登录都可以执行启动和关闭数据库的操作,但是SYSDBA更高,不仅具有SYSOPER的所有权限,并且还具有建立数据库以及执行不完全恢限。 8-1 SYSDBA和SYSOPER权限 : 8-1 SYSDBA和SYSOPER权限 8.1.3 修改用户 : 8.1.3 修改用户 1.更改口令 使用ALTER USER命令可以修改用户的信息,但是需要由DBA或者具有ALTER USER系统权限的用户来完成。用户经常更改登录口令是一个不错的习惯。每个用户都可以使用如下命令修改其自身口令: SQL>ALTER USER testuser IDENTIFIED BY ertghj 当用户遗忘了口令无法登录时,可以由DBA使用上述命令为其重设一个新口令。 Slide 14: 2.更改某个表空间的使用配额 用户在某个表空间的使用配额可能会根据实际情况有所调整。 例如,当用户在一个表上执行INSERT、UPDATE操作时总是出现错误(0RA一01536: space quota exceeded for tablespace·edu’),但SELECT和DELETE操作却没有问题。此时 Slide 15: 可能是由于用户在该表所在的表空问上已经占满了空间配额所致,DBA需要修改以增大表空间配额,使用命令为: SQL>ALTER USER jwcuser QUOTA 15M ON edu; 有时候不希望用户再使用某表空间,可以将其在该表空间上的空间配额改成: SQL>ALTER USER jwcuser QUOTA 0 ON users; 需要注意的是,如果用户jwcuser在users表空间上拥有表t,则该对象仍然保留,只是不会再为该表分配新的空间。 Slide 16: 3.更改用户的状态 不希望某用户使用数据库数据时,可以将此用户进行锁定: SQL>ALTER USER testuser ACCOUNT LOCK; 而解除对testuser用户账户的锁定,使用如下命令: SQL>ALTER USER testuser ACCOUNT UNLOCK; 删除用户之后,Oracle会从数据字典中删除用户及该用户拥有对象的信息。 Slide 17: 例如: SQL>DROP USER testuser; 以上命令会删除用户testuser,但是,如果该用户拥有数据库对象,则删除时必须带有CASCADE选项,否则会显示如下错误信息: ORA一01922:CASCADE must be specified to drop’TESTUSER’ 应该使用如下格式删除命令: SQL>DROP USER testuser CASCADE; 需要注意的是,当前正在连接的用户是不能删除的。 通过数据字典dba_users、dba ts quotas、user_users、user_ts_quotas等可以查询出用户相关信息。 Slide 18: 例如,查询jwcuser用户的默认表空间、临时表空间、账号状态信息。 SQL>SELECT default_tablespace, temporary_tablespace, account_status FROM dba users WHERE username=’JWCUSER’; 又如,iwcuser用户想了解自己能使用的表空间、已使用空间及能使用的最大空间情况, 可执行如下SQL语句: Slide 19: >SELECT tablespace—name ’‘表空间”, blocks n已占用块总数n, max—blocks--可占用的最大块数” FROM user一ts—quotas; 表空间 已占用块总数 可占用的最大块数 SYSTEM 224 0 USERS 344 O TT 40 一1 Slide 20: 其中,max二blocks表示用户数据对象可占用的最大块数,一1表示无限制。 特权用户具有启动、关闭数据库等特权,通过查询动态性能视图v$pwfile_users,可以确定有哪些特权用户及他们有哪些特权。 8.2权限管理 : 8.2权限管理 权限用于限制用户可执行的操作,即限制用户在数据库中或对象上可以做什么,不可以做什么。新建立用户没有任何权限,不能执行任何操作,只有给用户授予了特定权限或角色之后,该用户才能连接到数据库,进而执行相应的SQL语句或进行对象访问操作。 8.2.1 权限类型 : 8.2.1 权限类型 Oracle中权限分为系统权限和对象权限两种类型。 1.系统权限 系统权限是在数据库中执行某种操作,或者针对某一类的对象执行某种操作的权力。 系统权限并不针对某一个特定的对象,而是针对整个数据库范围。比如,在数据库中创建 空间的权力(对应的系统权限名称为CREATE TABLESPACE),或者为其他模式创建表 权力(对应的系统权限名称为CREATEANY TABLE)。 表8.2系统权限举例 : 表8.2系统权限举例 2.对象权限 : 2.对象权限 对象权限是一种对于特定的表、视图、序列、过程、函数或程序包执行特定操作的一种权限或权利。表8—3列出了Oracle所提供的对象权限。 Oracle所提供的对象权限 : Oracle所提供的对象权限 Slide 26: 注意,UPDATE与INSERT权限可以具体限制到某些列上,而SELECT权限只能限制在整个表。 8.2.2 授予权限 : 8.2.2 授予权限 授予权限是通过GRANT命令实现的,但是根据授予的是系统权限还是对象权限GRANT命令语法是有区别的。 1.授予系统权限 : 1.授予系统权限 CREATE SESSl0N是一个用户访问数据库必须至少具有的系统权限,下面的命令将该系统权限授予用户jwcuser: Slide 29: SQL>GRAINT CREATE SESSION TO]wcuser; 又如,将CREATE SESSION与CREATE TABLE两种系统权限同时授予testuser用户: SQL>GRANT CREATE SESSION,CREATE TABLE TO testuser; 再如,将CREATE SESSION系统权限授予所有用户: SQL>GRANT CREATE SESSION TO PUBLIC; Slide 30: 这里的PUBLIC实际上是Oracle自动创建的用户组,每个数据库用户都会自动成为PUBLIC组中的成员。利用PUBLIC用户组可以方便地为数据库中所有的用户授予某些必需的对象权限和系统权限。默认情况下,作为PUBLIC组中的成员,用户可以查询所有以USER_和ALL开头的数据字典视图。 Slide 31: 系统权限授权工作通常由DBA完成,但是授权时可以带有WITHADMIN OPTION选项,使得被授予者可以进一步将此权限授予其他用户。图8—3操作中,首先由DBA用户将CREATE SESSION与CREATE VIEW系统权限授予省级管理员用户gly_hebei,再由省级管理员授予2个地市级管理员gly—sjz、gly_bd." 图8—3系统权限的传递 2.授予对象权限 : 2.授予对象权限 一个对象的拥有者具有该对象的所有权限,他可以将该对象上的权限授予数据库的其他用户。如果他允许被授予者可以再转授此权限给另外的用户,授权时需要带有WITH GRANT OPTION选项。 例如,iwcuser将自己表stud上的查询权限授予用户testuser: SQL>GRANT SELECT ON stud TO testuser; jwcuser将自己表stud上的插入数据权限、结构更改权限授予用户testuser: SQL>GRANT INSERT,ALTER ON stud TO testusel"; Slide 33: jwcuser将自己表course上的所有权限授予用户userl与user2: SQL>GRANT ALL ON course TO userl,user2; 将表temp的列coll和列c012上的更新、插入权限授予用户userl: SQL>GRANT UPDATE(C011,C012),INSERT(c011,C012)0N temp T0 userl; Slide 34: 再如,将包DBMS—OUTPUT上的执行权限授予用户userl,userl还可以转授此权限给其他用户: SQL>CONN/AS SYSDBA SQL>GRANT EXECUTE ON DBMS OUTPUT TO user WITH GRANT OPTION; 这里属于对象权限的传递,用WITH GRANT OPTION选项表示。 8.2.3 回收权限 : 8.2.3 回收权限 回收权限的命令是REVOKE,执行回收权限操作的用户同时必须具有授予相同权限的能力与GRANT命令相类似,回收权限时也会根据是系统权限还是对象权限,语法会有些不同。 Slide 36: 1.系统权限 例如,将CREATE TABLE系统权限从testuser用户收回: SQL>REVOKE CREATE TABLE FROM testusef; 又如,将CREATE、,JEw系统权限从省级管理员用户gly_hebei中收回: SQL>REVOKE CREATE VIEW FROM gly_hebei; ’ 在图8.3所示的例子中,system用户授予了gly_hebei用户CREATE VIEW系统权限及WITH ADMIN OPTION选项,并且gly_hebei用户又将CREATE VIEW系统权限授予了gly—sjz用户,那么当回收了gly—hebei用户的CREATE VIEW系统权限之后,gly—sjz用户的CREATE VIEW系统权限不会被回收,即系统权限不会级联收回。图8—4示意性地给出了授权与回收过程。 2.对象权限 : 2.对象权限 收回对象权限也是通过REVOKE命令完成的。例如,jwcuser要收回另一用户testuser对自己对象stud表上的结构更改权限,可以使用如下命令: SQL>REVOKE ALTER ON stud FROM testuser; 但不像收回系统权限,收回对象权限时会被级联收回。假如DBA将表test上的UPDATE权限授给了gly_hebei,并且带有WITH GRANT OPTION选项,而后gly—hebei又将此权限转授给gly—sjz,如图8—5(a)所示。而当DBA将表test上的UPDATE权限从gly_hebei用户收回时,同时也会收回gly—sjz用户在test表上的 UPDATE权限,如图 8.2.4 查看权限 : 8.2.4 查看权限 1.显示用户所具有的系统权限 DBA通过查询数据字典dba_sys_privs,可以了解指定用户所具有的系统权限以及 WITH ADMIN OPTION选项,如下所示: SQL>SELECT * FROM dba—sys_privs WHERE grantee=’TESTUSER’; Slide 40: 此例查询的仅是用户testuser所具有的系统权限情况,GRANTEE表示权限拥有者,VILEGE表示系统权限名,ADMIN—OPTION表示转授系统权限选项,其中YES意指可以转授,而NO表示不能转授。 有时用户也需要了解自己拥有哪些权限,此时查询user—sys—privs数据字典即可。 2.显示用户所具有的对象权限 : 2.显示用户所具有的对象权限 通过查询dba_tab—privs、user_tab_privs两个数据字典视图,可以获得用户在哪个对象有哪些对象权限信息。 例如,DBA需要了解testuser用户所拥有权限的具体信息,比如在哪些表上有哪些权限,这些表属于哪个用户,被哪个用户授予,这些权限能否转授等信息,相应的命 SQL>SELECT tabie_name,privilege f owner r grantor|grantable FROM dba_tab_privs WHERE grantee:’TESTUSER’; Slide 42: 如果想了解更详细的信息,例如,哪些列上具有UPDATE权限或SELECT权限,则可使用如图8-6所示的命令,查询dba_col_privs获得。 结果显示:testuser用户所拥有的UPDATE权限是在stud表的SIlO列和sname列上。似地,数据字典user—col—privs供用户查询自己在哪个对象的哪个列上有怎样的对象权限。 8.3角色管理 : 8.3角色管理 角色就是一组权限的集合。角色可以被授予用户或其他的角色,把角色分配给用户,就是把角色所拥有的权限分配给了用户。 使用角色可以更容易地进行权限管理,主要体现在如下三个方面。 (1)减少了授权工作:用户可以先将权限授予一个角色,然后再将角色授予每一个用户,而不是将一组相同的权限授予多个用户。 Slide 44: (2)动态权限管理:当一组权限需要改变时,只需要更改角色的权限,则所有被授予了此角色的用户自动地立即获得了修改后的权限。 (3)方便地控制角色的可用性:角色可以临时禁用和启用,从而使权限变得可用和不可用。 Slide 45: 1.创建角色 角色不属于任何用户,也不在任何模式下。但是创建角色的用户需要有CREATEROI.E系统权限。 例如,创建角色fdy,命令如下: SQIj>CREATE ROLE fdy: 角色建立之后,它不具有任何权限,为了使角色发挥作用,要给它授予相应权限,权限可以是系统权限也可以是对象权限。给角色授权与给用户授权的方法完全相同。下面的 语句给角色fdy授予连接到数据库、建立视图、查询表stud的权限: SQL一>GRANT CREATE SESS工0N,CREATE V工EW TO FDY: SQL一>GRANT SELECT ON stud TO fd3’: 同样地,也可以将权限从角色收回,如下语句是将建立视图的系统权限从角色:fdy中收回: Slide 46: sql>REVOKE CREATE VI EW FROM fdy· 又如,创建安全性更高的带有口令验证的角色bzr,命令为: SQL>CREATE ROLE bzr IDENTIFIED BY teachers; 2.分配角色 分配角色就是指将角色分配给某用户。在建立了角色并为其授予了权限之后,只有将该角色分配给用户,该角色才能起作用。分配角色与授予系统权限的命令完全相同。示例如下: SQL>GRANT fdy TO testuser; SQL>GRANT fdy TO jwcuser; 同样地,回收角色采用REVOKE命令,示例如下: SQL>REVOKE fdy FROM testuser; 3.控制角色的可用性 : 3.控制角色的可用性 默认情况下,用户登录时自动启用分配给该用户的所有角色。但是,有时可能需要临时关闭一些权限,或者希望登录时只自动启用一部分角色,要灵活地控制一个用户在一个时刻所拥有的权限,则可以使用默认角色、禁用角色、启用角色等相关操作。 (1)默认角色。默认角色是用户登录时自动启用的角色的子集。使用ALTER USER命令给用户指定默认角色。 Slide 48: 例如,将fdy与bzr两个角色作为用户testuser的默认角色: SQL>ALTER USER testuser DEFAULT ROLE fdy,bzr; 又如,指定除了fdy角色以外的所有角色都成为testuser用户的默认角色: sQL>ALTER USER testuser DEFAULT ROLE ALL EXCEPT fdy; 再如,testuser用户没有任何默认角色: SQL>ALTER USER testuser DEFAULT ROLE none; 需要注意的是,只有授予给用户的角色才能被指定为用户的默认角色,即必须先将此角色授予用户,此角色才能成为用户的默认角色。 Slide 49: (2)禁用和启用角色。禁用角色会使用户不能使用与该角色相关的权限,相反,启用角色用户则会具有该角色的权限。SET ROLE命令用于角色的禁用和启用。 例如,启用没有口令验证的角色fdy: SQL>SET ROLE fdy; 而要启用带口令验证的角色bzr: SQL>SET ROLE bzr IDENTIFIED BY teachers j 又如,使除了fdy以外的所有不带口令的角色变得可用: SQL>SET ROLE ALL EXCEPT fdy; 再如,禁用所有角色: SQL>SET ROLE NONE: 4.删除角色 : 4.删除角色 使用DROP ROLE命令可以删除角色。即使一个角色已经被授予一个用户或其他角色,Oracle也允许用户删除该角色。当一个角色被删除时,立即从用户的角色列表中去掉该角色。 例如,删除fdy角色,可以使用DROPROLE命令: SQL>DROP ROLE fdy; 8.3.2使用预定义的角色 : 8.3.2使用预定义的角色 当建立数据库时,Oracle自动定义了多个角色。系统预定义的角色包括如下几个。 (1)CONNECT、RESOURCE、DBA:提供这些角色的目的是为了向后与Oracle服务器的早期版本兼容。 (2)EXP』ULLDATABASE、IMP_FULLDATABASE:导出、导入数据库的权限。 (3)DELETE—CATALOG_ROLE:对于数据字典表的DELETE权限。 (4)EXECUTE_CATALOG_ROLE:对于数据字典程序包的EXECUTE权限。 (5)SELECT-CATALOG_ROLE:对于数据字典表的SELECT权限。 Slide 52: 许多数据字典视图包含了授予用户和角色的权限信息,查询这些视图可以了解当前数据库中已经建立的角色,以及这些角色所拥有的系统权限和对象权限。 例如,查询dba roles视图可以了解当前数据库的所有角色,其中password_required列指出了该角色是否需要口令: SQL>SELECT role,password—required FROM dba_roles; Slide 53: 如下命令可以查得用户jwcuser所具有的角色信息: SQL>SELECT grante(Lrole FROM dba_role privs WHERE grantee=。JWCUSER。; 又如,查询fdy角色所拥有的系统权限、对象权限,分别使用如下两个命令: SQL>SELECT。 FROM role_sys_privs WHERE role=。FDY ; SQL>SELECT * FROM role_tab_privs WHERE role=’FDY’: 再如,查询session_roles视图以获得当前会话启用的角色: SQL>SELECT‘FROM Session r01es: 8.4 PROFILE管理 : 8.4 PROFILE管理 PROFILE也称配置文件或概要文件,是口令限制和资源限制的命名集合。例如,使用PROFILE可以指定口令有效期、进行口令复杂性校验、指定用户连接时问以及最大空闲时间等。数据库每个用户都会对应一个配置文件,PROFILE具有以下一些作用。 Slide 55: (1)限制用户执行某些需要消耗大量资源的SQL操作。 (2)确保在用户会话空闲一段时间后,将用户从数据库注销。 (3)在大而复杂的多用户数据库系统中合理分配资源。 (4)控制用户口令的使用。 当建立数据库时,系统会自动建立DEFAULT配置文件,该文件的所有口令及资源限制选项初始值均为UNLIMITED,即未进行任何口令和资源限制。当建立用户时,如果不指定PROFILE子句,则Oracle会将DEFAULT分配给该用户。根据用户所承担任务的不 同,DBA应该建立不同的PROFILE,并将PROFILE分配给相应的用户。 8.4.2 使用PROFILE : 8.4.2 使用PROFILE 使用PROFILE可以管理口令和进行资源限制。 管理口令有锁定账户、终止口令、口令历史以及口令校验等四种安全保护方式,共包含了7个口令管理选项,如果仅指定某个或某几个选项,那么其他选项将自动使用DEFAULT的相应选项值。 在大而复杂的多用户数据库管理环境中,用户众多,不仅需要管理这些用户的口令,还要对每个用户或会话使用的CPU、内存等系统资源予以限制,以有效地利用系统资源确保系统性能。使用PROFILE进行资源限制,既可以限制整个会话的资源占用,也可以限制调用级(SQL语句)的资源占用。 Slide 57: 需要注意的是,与管理口令不同,如果使用PROFILE管理资源,则必须要激活资源限制,即需要将初始化参数RESOURCE-LIMIT设置为TRUE。 例如,为了加强用户jwcuser的口令安全,要求其登录失败次数限制为3次,如果其连续失败3次,则其账户自动锁定, 锁定7天后解除锁定,而且要求其每10天更改一次口令,一个口令再次使用必须间隔300天;最多允许5名人员同时以jwcuser用户登录,每个会话连接时问不能超过60min,会话空闲时间不能超过5min。 Slide 58: 第一步,需要根据要求建立一个PROFILE,命令如下: SQL>CREATE PROFILE profile_jwcuser LIMIT FAILED_LOGIDLATTEMPTS 3 PASSWORD_LOCK_TIME 7 PASSWORD LIFE TIME 1 0 PASSWORD_REUSE_TIME 3 0 0 SESS工0NS PER USER 5 CONNECT TIME 60 IDLE TIME 5; Slide 59: 第二步,因为有资源限制选项,需要设置资源限制参数,命令为: SQL>ALTER SYSTEM SET RESOURCE-LIMIT=true; 第三步,将新建立的配置文件profilejwcuser分配给用户jwcuser。为用户分配PROFILE。既可以在建立用户时使用PROFILE子句,也可以在建立用户之后使用ALTER USER语句修改: SQL>ALTER USER Jwcuser PROFILE profile.jwcuser; 8.4.3 修改与删除PROFILE : 8.4.3 修改与删除PROFILE 当口令和资源限制无法满足目前的实际需求时,就需要修改口令及资源限制。修改口令及资源限制由ALTER PROFILE命令完成,使用该命令要求用户必须具有ALTER PROFILE系统权限。修改PROFILE的示例如下: SQL>ALTER PROFILE profile_jWCUSer LIMIT SESSIONS_PER—USER 3 FAILED_LOGIN_ATTEMPTS 5; Slide 61: 删除PROFILE使用DROP PROFILE命令完成,只是如果PROFILE已经被分配给某个用户,那么删除PROFILE时还必须带有CASCADE选项。 例如,要求删除profile__]wcuser,由于该PROFILE已经分配给了用户jwcuser,可使用如下命令删除: SQL>DROP PROFILE profile_jwcuser CASCADE ; .删除PROFILE后系统会自动将DEFAULT分配给该用户。 以上对PROFILE的修改、删除只对新会话起作用,对已经存在的会话不会产生影响。 8.4.4 查看PROFILE : 8.4.4 查看PROFILE 1.查看用户的PROFILE 通过查询数据字典dba_users,可以获得用户的详细信息,包括用户名称、PROFILE等。 SQL>SELECT profile FROM dba users WHERE username=’JWCUSER’; Slide 63: 2.查看PROFILE的口令和资源限制选项 当建立或修改PROFILE时,Oracle会将PROFILE选项及值存放到数据字典profiles中。在确定了用户的PROFILE之后,通过查询数据字典可以获得用户的口令及资源限制信息,如下所示: ‘ Slide 64: SQL>SELECT resource_name,1lmlt FROM dba_proflles WHERE profile=‘PROFILE_JWCUSER。AND resource_type=’KERNEL。: 数据字典dba_profiles包含如下4个列。 (1)profile:PROFILE名称。 (2)resource—name~PROFILE选项名。 (3)resource—type:PASSWORD表示口令管理选项,而KERNAL则表示资源限制选项。 (4)limit:PROFILE选项值。 小 结 : 小 结 本章主要讨论了数据库的安全管理内容,包括如何创建用户与更改用户属性、如何管限、角色的概念及如何通过角色管理权限,并简要介绍Oracle使用PROFILE管理口令限制资源使用的方法和内容。 Slide 66: 选择题 1.PROFILE资源文件不能用于限制( )。 A.使用的CPU时间 B.连接到数据库的总时间 C.一个会话处于不活动的最长时问 D.读块的时间 2.当建立一个新用户并且没有指定一个PROFILE时,( )。 A.Oracle提示用户指定一个资源文件 B.没有给用户分配资源文件 C.给用户分配了DEFAULT资源文件 D.Oracle提示用户指定多个资源文件 3.( )数据字典视图显示了一个用户口令的到期日期。 A.dba_profiles B.dba_users C.dba_passwords D.v$session Slide 67: 4.当用户具有哪种权限或角色时可以建立数据库?( ) A.SYSDBA B.SYSOPER C.DBA D.CONNECT 5.在以下哪些对象权限上可以授予列权限?( ) A.SELECT B.UPDATE C.DELETE D.INSERT 6.建立用户时没有指定QUOTA选项,则用户在其默认表空间上可占用的空间() A.无限制 B.为0 C.不超过10MB D.不超过100MB