1、1第9章 用户和安全管理 主讲人:朱亚兴主讲人:朱亚兴 安全管理对于数据库系统来讲至关重要。数据库安全是一个极为突出的问题,数据库数据的丢失以及数据库被非法用户侵入或者被非授权用户访问和篡改对于任何一个应用系统来说都会造成危害。2工作情境:工作情境:为了保证Oracle系统数据的安全性,采取了哪些安全机制?任务分析3Oracle用户q 用户是数据库的使用者和管理者。q Oracle系统中,用户是允许访问数据库系统的有效帐户,是可以对数据库资源进行访问的实体。q Oracle数据库通过创建用户帐户并为此帐户授予相应的数据库权限等安全参数,用户才能够访问数据库和进行相应的操作。q 用户管理是Ora
2、cle数据库安全管理的核心和基础。任务分解4n 任务1:创建新用户。n 任务2:修改、删除和查看用户信息。n 任务3:对用户授予和回收系统权限。n 任务4:对用户授予和回收对象权限。n 任务5:创建角色和对角色授权。n 任务6:管理角色。n 任务7:管理概要文件。5任务1 任务1.创建新用户。6创建用户管理决策 q创建用户 数据库管理员对用户进行下列决策:(1)指定数据库用户的身份认证方式。(2)设置用户的默认表空间和临时表空间。(3)指定表空间配额(4)设置用户资源限制的环境文件(5)设置账户状态7利用OEM创建用户 8使用SQL语句创建新用户语法格式:语法格式:9创建用户例 【例9.1】创
3、建用户hr_user,口令为hr_user,默认表空间是 HRM,大小是20MB,临时表空间是temp。创建一个数据库用户必须具有DBA权限的用户来执行。connect system/password;使用如下SQL语句。CREATE USER hr_user IDENTIFIED BY hr_user DEFAULT TABLESPACE HRMTEMPORARY TABLESPACE tempQUOTA 20M ON HRM;10用户管理:授权 CREATE SESSION系统权限允许用户在数据库上建立会话过程,这是用户帐号必须具有的最低权限。【例9.2】为用户hr_user授予权限CRE
4、ATE SESSION。授权。GRANT CREATE SESSION TO hr_user;以新用户连接。CONNECT hr_user/hr_user;实训1掌握创建数据库用户的方法。完成了任务完成了任务1,请尝试实训请尝试实训112任务2 任务2.修改、删除和查看用户信息。13利用OEM修改用户14使用SQL语句修改用户信息【例9.3】修改用户hr_user 的认证方式、默认表空间、空间配额。ALTER USER hr_user IDENTIFIED BY hr_user QUOTA 25M ON hrm;【例9.4】更改用户hr_user的默认表空间。ALTER USER hr_use
5、r DEFAULT TABLESPACE usertab Temporary TABLESPACE temp;【例9.5】修改用户hr_user的口令 ALTER USER hr_user Identified by hr_user3;15 使用SQL语句修改用户信息【例9.6】修改用户的状态,锁定hr_user帐户以及解除锁定。修改数据库用户必须具有ALTER USER权限的用户来执行。使用ALTER USER命令锁定账号。ALTER USER hr_user ACCOUNT LOCK;使用原数据库用户账号连接数据库。使用具有ALTER USER权限的用户重新连接。使用ALTER USER命
6、令解除账号锁定。ALTER USER hr_user ACCOUNT UNLOCK;再次使用原数据库用户账号连接数据库。16使用SQL语句修改用户信息【例9.7】修改用户hr_user的密码为立即失效。使用具有ALTER USER权限的用户重新连接。使用ALTER USER命令修改密码为立即实效。alter user hr_user password expire;再次使用原数据库用户账号连接数据库。使用原数据库用户账号和更改后的新密码连接数据库。讨论讨论:如果用:如果用户忘记密码?户忘记密码?17利用OEM删除用户18利用SQL命令删除用户 【例9.8】删除用户hr_user,并且同时删除其
7、拥有的表、索引等数据库对象。DROP USER hr_user CASCADE;19查看用户信息 n 数据字典视图:20使用SQL语句查看用户信息【例9.9】查看用户HR_USER的名称、用户标识、锁定日期、账号状态、默认表空间信息。select username,user_id,lock_date,account_status,default_tablespace from DBA_USERS where username=HR_USER;实训2掌握修改数据库用户的方法。完成了任务完成了任务2,请尝试实训请尝试实训2任务3任务3.对用户授予和回收系统权限。创建完用户后,他不能做任创建完用户后
8、,他不能做任何事情,还必须进行授权。何事情,还必须进行授权。这个任务需要学习权限管理这个任务需要学习权限管理的相关知识。的相关知识。23权限管理 q系统权限 p:271-274。带ANY权限和不带ANY权限。q系统权限允许用户执行一种特殊的数据库操作或一类数据库操作。24OEM授权 25利用SQL命令授予系统权限语法:26利用SQL命令级联授权27利用SQL命令回收系统权限语法:28回收级联授权的系统权限 DBAGRANTREVOKEUSERAUSERBUSERAUSERBDBA回收级联授权的系统权限实训3掌握对用户授予和回收系统权限的方法。完成了任务完成了任务3,请尝试实训请尝试实训3任务4
9、任务4.对用户授予和回收对象权限。对象权限是指访问其他用户模式对象的权力。对象权限的设置实际上是对象的所有者给其他用户提供操作该对象的某种权力的一种方法。32对象权限 qOracle数据库中总共有9种不同的对象权限。P:279q常用的对象权限包括对某个数据库对象中数据的查询、插入、修改、删除等权限。q对于表TABLE对象而言,ALL表示ALTER、DELETE、INDEX、SELECT、INSERT、UPDATE、REFERENCES权限 q对于PROCEDURE存储过程,ALL表示EXECUTE权限。33OEM授予对象权限 34利用SQL命令授予对象权限 q ALL或ALL PRIVILEG
10、ES将某个对象的所有对象权限全部授予指定的用户。q PUBLIC,授予数据库的所有用户。q WITH GRANT OPTION表示被授权的用户、角色可以将相应的对象权限授予其他用户 SQL GRANT ALL ON EMP TO HR_USER;SQL GRANT ALL ON EMP TO PUBLIC;语法:35利用SQL命令回收对象权限 q语法36级联授予对象权限 37级联回收对象权限 回收级联授予的对象权限39查询系统权限与系统权限有关的表与视图40查询对象权限与对象权限有关的表与视图实训4掌握对用户授予和回收对象权限的方法。完成了任务完成了任务4,请尝试实训请尝试实训4任务5任务5.
11、创建角色和对角色授权。42什么是角色?创建一个新角色。对角色进行授权管理。将此角色授予用户。43角色管理 q角色:介于权限和用户之间,是一组系统权限和对象权限的集合。q引入角色优点:减少权限管理的工作量。实现动态权限管理。权限的选择具有可用性和灵活性。应用安全性。q系统预定义角色q自定义角色 44角色管理 q系统预定义角色CONNECT:连接到数据库,最终用户角色.RESOURCE:申请资源创建对象,开发人员角色.DBA:具有全部系统权限,可以创建用户.IMP_FULL_DATABASE:装入全部数据库内容.EXP_FULL_DATABASE:卸出全部数据库内容.DELE_CATALOG_RO
12、LE:能删除审计表中记录.SELECT_CATALOG_ROLE:查询数据字典.EXECUTE_CATALOG_ROLE:执行过程和函数.45查询角色与授权【例9.24】查询当前数据库的所有预定义角色。select*from dba_roles;【例9.25】为用户HR_USER授予CONNECT和RESOURCE角色。grant connect,resource to hr_user;46在OEM中创建角色47利用SQL命令创建角色和授权语法:实训5掌握创建角色和对角色授权的方法。完成了任务完成了任务5,请尝试实训请尝试实训5任务6任务6.管理角色。49如何管理角色呢?50利用OEM管理角色
13、51利用SQL命令管理角色 语法:ALTER ROLE role_name NOT IDENTIFIED IDENTIFIED BY password【例9.28】取消角色manager的口令。ALTER ROLE manager not identified;【例9.29】回收己经授予用户teacher的OPT_ROLE角色:REVOKE OPT_ROLE FROM teacher;【例9.30】删除角色managerDROP ROLE manager;52角色的激活或屏蔽 语法:ALTER USER user_name DEFAULT ROLE ROLE_NAME|ALL EXCEPT R
14、OLE_NAME|none;【例9.31】将用户某些角色设置为默认角色。ALTER USER hr_user DEFAULT ROLE CONNECT,HR_ROLE;【例9.32】屏蔽用户的所有角色。ALTER USER hr_user DEFAULT ROLE NONE;或者,可以用下面的SET语句。SET ROLE none;【例9.33】激活用户的所有角色。ALTER USER hr_user DEFAULT ROLE ALL;或者,可以用下面的SET语句。SET ROLE ALL;53查询角色信息 DBA_ROLES视图:查看当前数据库中存在的所有角色。SESSION_ROLES视图
15、:用户当前启用的角色。ROLE_ROLE_PRIVS视图:查看角色与权限授予情况,以及是否有传递权限情况。DBA_ROLE_PRIVS视图:用户(或角色)与角色之间的授予关系。USER_ROLE_PRIVS视图:查看用户授予的角色。ROLE_SYS_PRIVS视图:查看系统权限授予情况。DBA_SYS_PRIVS视图:查看每种角色拥有的权利。54查询角色信息【例9.34】查询用户HR_USER 所具有的角色。使用HR_USER用户连接数据库。CONN HR_USER/HR_USER 通过数据字典USER_ROLE_PRIVS查询所具有的角色。select USERNAME,GRANTED_RO
16、LE,ADMIN_OPTION from user_role_privs;55查询角色信息【例9.35】查询哪些角色已经授予哪些用户。使用sys用户连接数据库。通过数据字典DBA_ROLE_PRIVS查询哪些角色已经授予哪些用户。select GRANTEE,GRANTED_ROLE,ADMIN_OPTION From dba_role_privs;【例9.36】查询CONNECT和RESOURCE角色授予了哪些权限 使用sys用户连接数据库。conn sys/password as sysdba;通过数据字典ROLE_SYS_PRIVS查询哪些角色已经授予哪些用户。select role,p
17、rivilege from ROLE_SYS_PRIVS where role in(CONNECT,RESOURCE);实训6掌握管理角色的方法。完成了任务完成了任务6,请尝试实训请尝试实训6任务7任务7.管理概要文件。什么是概要文件?58概要文件内容q 概要文件内容:是数据库和系统资源限制的集合 实例为用户分配一些系统资源,如CPU 的使用、分配SGA 的空间大小、连接数据库的会话数、用户口令期限等。q 概要文件作用:限制资源使用管理用户账号口令59概要文件作用q 限制资源使用 每个会话或每个语句的CPU时间(以百分之一秒计)。每个会话或每个语句的逻辑磁盘I/O。每个用户的并发数据库会话。
18、每个会话的最大连接时间和空闲时间。可供多进程服务器会话使用的最大的服务器内存。q 管理账户口令策略 帐户的锁定 口令的过期时间 口令的复杂度 允许用户口令可以持续使用的时间 指定用户在能够重复使用一个旧口令前必须经过的天数。60利用OEM创建和管理概要文件 q 在【企业管理器】中创建概要文件 q 概要文件的修改q 将概要文件分配给用户 q 概要文件的删除 61利用SQL命令创建和管理概要文件 q 创建概要文件CREATE PROFILE profile_name LIMITresource_parameters|password_parameters说明:profile_name将要创建的概要
19、文件的名字resource_parameters:对一个用户指定资源限制的参数password_parameters:口令参数 q 修改概要文件q 将概要文件分配给用户 q 删除概要文件62查询概要文件信息 q 与概要文件相关的表和视图:USER_PASSWORD_LIMITS USER_RESOURCE_LIMITS DBA_PROFILES实训7掌握管理概要文件的方法。完成了任务完成了任务7,请尝试实训请尝试实训7小结q Oracle通过使用用户管理、权限与角色、概要文件等措施来保护数据库的安全。Oracle用户管理的机制是Oracle系统安全性的一个重要方面。q 权限是执行一种特殊类型的SQL语句或存取另一用户的对象的权力。Oracle将权限分为有两类:系统权限和对象权限。q 角色是一组系统权限和对象权限的集合,角色使得授予权限变得简单。q 一个角色可授予系统权限或对象权限,任何角色可授权给任何数据库用户。q 概要文件是Oracle安全策略的重要组成部分。概要文件用来限制由用户使用的系统和数据库资源,并管理口令限制。谢 谢!65