Oracle数据库的用户和权限管理_第1页
Oracle数据库的用户和权限管理_第2页
Oracle数据库的用户和权限管理_第3页
Oracle数据库的用户和权限管理_第4页
Oracle数据库的用户和权限管理_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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用户环境文件 1. 用户鉴别 为了防止非授权的数据库用户的使用 , 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 创建用户 使用 CREATE USER语句可以创建一个新的数据库用户,执行该语句的用户必须具有 CREATE USER系统权限。 在创建用户时必须指定用户的认证方式。一般会通过Oracle数据库对用户身份进行验证,即采用数据库认证方式。在这种情况下,创建用户时必须为新用户指定一个口令,口令以加密方式保存在数据库中。当用户连接数据库时,Oracle从数据库中提取口令来对用户的身份进行验证。 使用 IDENTIFIED BY子句为用户设置口令 , 这时用户将通过数据库来进行身份认证 。 如果要通过操作系统来对用户进行身份认证 , 则必须使用 IDENTIFIED EXTERNAL BY子句 。 使用 DEFAULT TABLESPACE子句为用户指定默认表空间 。 如果没有指定默认表空间 , Oracle会把 SYSTEM表空间作为用户的默认表空间 。 为用户指定了默认表空间之后 , 还必须使用 QUOTA子句来为用户在默认表空间中分配的空间配额 。 此外 , 常用的一些子句有: TEMPORARY TABLESPACE子句:为用户指定临时表空间 。 PROFILE子句:为用户指定一个概要文件 。 如果没有为用户显式地指定概要文件 , Oracle将自动为他指定 DEFAULT概要文件 。 DEFAULT ROLE子句:为用户指定默认的角色 。 PASSWORD EXPIRE子句:设置用户口令的初始状态为过期 。 ACCOUNT LOCK子句:设置用户账户的初始状态为锁定 , 缺省为: ACCOUNT UNLOCK。 在建立新用户之后 , 通常会需要使用 GRANT语句为他授予 CREATE SESSION系统权限 , 使他具有连接到数据库中的能力 。 或为新用户直接授予 Oracle中预定义的 CONNECT角色 。 5.1.3 修改用户 在创建用户之后,可以使用 ALTER USER语句对用户进行修改,执行该语句的用户必须具有 ALTER USER系统权限。 例如:利用下面的语句可以修改用户 chenjie的认证方式、默认表空间、空间配额: ALTER USER chenjie IDENTIFIED BY chenjie_pw QUATA 10M ON mbl_tbs; ALTER USER语句最常用的情况是用来修改用户自己 的 口 令 , 任 何 用 户 都 可 以 使 用 ALTER USER IDENTIFIED BY语句来修改自己的口令 , 而不需要具有任何其他权限 。 但是如果要修改其他用户的口令 , 则必须具有 ALTER USER系统权限 。 DBA还会经常使用 ALTER USER语句锁定或解锁用户账户 。 例如: ALTER USER chenjie ACCOUNT LOCK; ALTER USER chenjie ACCOUNT UNLOCK; 5.1.4 删除用户 使用 DROP USER语句可以删除已有的用户,执行该语句的用户必须具有 DROP USER系统权限。 如果用户当前正连接到数据库中,则不能删除这个用户。要删除已连接的用户,首先必须使用ALTER SYSTEMKILL SESSION 语句终止他的会话,然后再使用 DROP USER语句将其删除。 如果要删除的用户模式中包含有模式对象,必须在 DROP USER子句中指定 CASCADE关键字,否则Oracle将返回错误信息。例如:利用下面的语句将删除用户 chenjie,并且同时删除他所拥有的所有表、索引等模式对象: DROP USER chenjie CASCADE; 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) 应用安全性 , 角色使用可由口令保护 , 应用可提供正确的口令使用角色 , 如不知其口令 , 不能使用角色 。 使用 CREATE ROLE语句可以创建一个新的角色,执行该语句的用户必须具有 CREATE ROLE系统权限。 在角色刚刚创建时,它并不具有任何权限,这时的角色是没有用处的。因此,在创建角色之后,通常会立即为它授予权限。例如:利用下面的语句创建了一个名为 OPT_ROLE的角色,并且为它授予了一些对象权限和系统权限: CREATE ROLE OPT_ROLE; GRANT SELECT ON sal_history TO OPT_ROLE; GRANT INSERT,UPDATE ON mount_entry TO OPT_ROLE; GRANT CREATE VIEW TO OPT_ROLE; 5.2.2 创建角色 在创建角色时必须为角色命名,新建角色的名称不能与任何数据库用户或其他角色的名称相同。 与用户类似,角色也需要进行认证。在执行 CREATE ROLE语句创建角色时,默认地将使用 NOT IDENTIFIED子句,即在激活和禁用角色时不需要进行认证。如果需要确保角色的安全性,可以在创建角色时使用 IDENTIFIED子句来设置角色的认证方式。与用户类似,角色也可以使用两种方式进行认证。 使用 ALTER ROLE语句可以改变角色的口令或认证方式。例如:利用下面的语句来修改 OPT_ROLE角色的口令(假设角色使用的是数据库认证方式): ALTER ROLE OPT_ROLE IDENTIFIED BY accts*new; 1授予系统权限 2授予对象权限 5.2.3 授予权限或角色 3授予角色 1.授予系统权限 在 GRANT关键字之后指定系统权限的名称 , 然后在 TO关键字之后指定接受权限的用户名 , 即可将系统权限授予指定的用户 。 例如:利用下面的语句可以相关权限授予用户 chenjie: GRANT CREATE USER,ALTER USER,DROP USER TO chenjie WITH ADMIN OPTION; 2 授予对象权限 Oracle对象权限 指用户在指定的表上进行特殊操作的权利 。 在 GRANT关键字之后指定对象权限的名称 , 然后在 ON关键字后指定对象名称 , 最后在 TO关键字之后指定接受权限的用户名 , 即可将指定对象的对象权限授予指定的用户 。 使用一条 GRANT语句可以同时授予用户多个对象权限 ,各个权限名称之间用逗号分隔 。 有三类对象权限可以授予表或视图中的字段 , 它们是分别是 INSERT, UPDATE和 REFERENCES对象权限 。 例如:利用下面的语句可以将 CUSTOMER表的 SELECT和INSERT, UPDATE对象权限授予用户 chenqian: GRANT SELECT,INSERT(CUSTOMER_ID,CUSTOMER_name), UPDATE(desc) ON CUSTOMER TO chenqian WITH ADMIN OPTION; 在授予对象权限时 , 可以使用一次关键字 ALL或 ALL PRIVILEGES将某个对象的所有对象权限全部授予指定的用户 。 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角色授予用户 chenjie: GRANT DBA TO chenjie WITH GRANT OPTION; 在同一条 GRANT语句中 , 可以同时为用户授予系统权限和角色 。 如果在为某个用户授予角色时使用了 WITH ADMIN OPTION选项 , 该用户将具有如下权利: ( 1) 将这个角色授予其他用户 , 使用或不使用 WITH ADMIN OPTION选项 。 ( 2) 从任何具有这个角色的用户那里回收该角色 。 ( 3) 删除或修改这个角色 。 注意: 不能使用一条 GRANT语句同时为用户授予对象权限和角色 。 使用 REVOKE语句可以回收己经授予用户(或角色)的系统权限、对象权限与角色,执行回收权限操作的用户同时必须具有授予相同权限的能力。 例如:利用下面的语句可以回收已经授予用户 chenqian的 SELECT和 UPDATE对象权限: REVOKE SELECT,UPDATE ON CUSTOMER FROM chenqian; 利用下面的语句可以回收已经授予用户 chenjie的 CREATE ANY TABLE系统权限: REVOKE CREATE ANY TABLE FROM chenjie; 利用下面的语句可以回收己经授予用户 chenjie的 OPT_ROLE角色: REVOKE OPT_ROLE FROM chenjie; 5.2.4 回收权限或角色 在回收对象权限时,可以使用关键字 ALL或 ALL PRIVILEGES将某个对象的所有对象权限全部回收。 例如:利用下面的语句可以回收己经授予用户 chenqian的CUSTOMER表的所有对象权限: REVOKE ALL ON CUSTOMER FROM chenjie; 一个用户可以同时被授予多个角色,但是并不是所有的这些角色都同时起作用。角色可以处于两种状态:激活状态或禁用状态,禁用状态的角色所具有权限并不生效。 当用户连接到数据库中时,只有他的默认角色( Default Role)处于激活状态。在 ALTER USER角色中使用 DEFAULT ROLE子句可以改变用户的默认角色。 例如:如果要将用户所拥有的一个角色设置为默认角色,可以使用下面的语句: ALTER USER chenjie DEFAULT ROLE connect,OPT_ROLE; 5.2.5 激活和禁用角色 在用户会话的过程中,还可以使用 SET ROLE语句来激活或禁用他所拥有的角色。用户所同时激活的最大角色数目由初始化参数 ENABLED ROLES决定(默认值为 30)。如果角色在创建时使用了 IDENTIFIED BY子句,则在使用 SET ROLE语句激活角色时也需要在 IDENTIFIED BY子句中提供口令。 如果要激活用户所拥有的所有角色,可以使用下面的语句: SET ROLE ALL; 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来决定资源限制的状态。如果 RESOURCE LIMIT参数设置为 TRUE,启动数据库后资源限制将处于激活状态;反之如果 RESOURCE LIMIT参数设置为 FALSE,启动数据库后资源限制将处于禁用状态。默认情况下,RESOURCE_LIMIT参数为 FALSE。 在数据库启动之后(处于打开状态),可以使用 ALTER SYSTEM语句来改变资源限制的状态

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论