用户管理和安全.ppt

上传人:牧羊曲112 文档编号:5797599 上传时间:2023-08-21 格式:PPT 页数:45 大小:391.50KB
返回 下载 相关 举报
用户管理和安全.ppt_第1页
第1页 / 共45页
用户管理和安全.ppt_第2页
第2页 / 共45页
用户管理和安全.ppt_第3页
第3页 / 共45页
用户管理和安全.ppt_第4页
第4页 / 共45页
用户管理和安全.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《用户管理和安全.ppt》由会员分享,可在线阅读,更多相关《用户管理和安全.ppt(45页珍藏版)》请在三一办公上搜索。

1、第十二章 管理安全性用户与权限管理,引言,数据库安全性问题一直是人们关注的焦点,数据库数据的丢失以及数据库被非法用户的侵入对于任何一个应用系统来说都是至关重要的问题。确保信息安全的重要基础在于数据库的安全性能。,安全性,Oracle数据库作为大型分布式数据库,其安全性一直是设计的重要目标。作为Oracle安全模型基础的安全原理是基于最小特权的原则。此原则认为用户只应该具有完成其任务所必需的特权,而不应该拥有更多的特权。oracle数据库的安全性可以分为如下两类:系统安全性数据安全性,1.系统安全性 系统安全性是指在系统级控制数据库的存取和使用的机制,包含:有效的用户名/口令的组合。一个用户是否

2、授权可连接数据库。用户对象可用的磁盘空间的数量。用户可执行哪些系统操作。,2.数据安全性 数据安全性是指在实体级控制数据库存取和使用的机制,包括:用户可以存取的方案对象和在该方案对象上可以进行哪些操作等。,Oracle利用下列机制管理数据库安全性:数据库用户和模式权限角色存储设置和空间份额,用户与模式 在Oracle中,数据库用户和模式是安全的最基本的单元。术语“用户”和“模式”经常互换使用,然而它们是有区别的:数据库模式定义为数据库对象的集合。模式的名称就是拥有或控制这些数据库对象集合的用户名称。,所有的数据库对象,包括表、视图、索引、触发器、Java存储过程、PL/SQL程序包、函数等,都

3、归Oracle数据库中的某一个用户所有。甚至Oracle的数据字典、系统目录也是名称为sys的模式的一部分。在Oracle数据库中,可以存在没有拥有任何数据库对象的用户(不是模式),但是不会没有命名的模式或数据库对象集合。,12.1 用户管理,Oracle 管理主要用户 用户就是一个方案,它是一组数据库对象的所有者。用户是计算机的合法操作者,数据库用户就是数据库的合法操作者。Oracle有如下的几个主要用户:SYS,SYSTEM,SCOTT。这些用户以及口令和说明如表12-1所示。,表12-1 Oracle的主要用户,用户的创建,1创建用户使用SQL 语句创建新数据库用户的语法格式如下:CRE

4、ATE USER 用户名 IDENTIFIED BY 口令DEFAULT TABLESPACE 默认表空间TEMPORARY TABLESPACE 临时表空间QUOTA数值K|M|UMLIMITED ON 表空间名PROFILE 概要文件名PASSWORD EXPIREACCOUNT LOCK|ACCOUNT UNLOCK,例:CREATE USER lotus IDENTIFIED BY l123 DEFAULT TABLESPACE users QUOTA 100 M ON users ACCOUNT UNLOCK;,用户帐号状态,用户的帐号有两种状态,DBA可以通过设置状态的方法使账户可

5、用或不可用。一帐号锁定 锁定帐号可以使某个帐号不可用。二账户解锁 该状态下,帐号可以正常登陆。,2.修改用户帐号,修改用户账号的语法格式如下所示:ALTER USER 用户名 IDENTIFIED BY口令DEFAULT TABLESPACE 默认表空间TEMPORARY TABLESPACE 临时表空间QUOTA数值K|M|UNLIMITED ON 表空间名PROFILE 概要文件名PASSWORD EXPIREACCOUNT LOCK|ACCOUNT UNLOCK,作为一个DBA,在管理数据库时,用户可能会有各种原因来改变用户帐户。这些有关帐户管理的工作如下:重置密码;锁定帐户和解除帐户锁

6、定;修改用户的默认表空间或临时表空间;修改表空间配额。,例:锁定用户ALTER USER lotus ACCOUNT LOCK;解除锁定ALTER USER lotus ACCOUNT UNLOCK;修改用户密码ALTER USER lotus IDENTIFIED BY lotus;,3.删除用户,使用DROP USER命令可以从数据库中删除一个用户,参数为CASCADE,表示在删除用户之前,先删除其所拥有的所有实体。例:,Create table lotus.aa(aa number);Drop user lotus;Drop user lotus cascade;,12.2 权限管理,权

7、限(privilege)是Oracle数据库定义好的执行某些操作的能力。在Oracle数据库中是利用权限进行管理的。这些权限可以分成两类:系统权限:是指在系统级控制数据库的存取和使用的机制。Oracle有100多种不同的系统权限,表12-2给出了常用的系统权限。每一种系统权限允许用户执行一种特殊的数据库操作或一类数据库操作。,表12-2 常用的系统权限,对象权限:是在数据库对象(如:指定的表、视图、序列、过程、函数或包)上执行特殊动作的权利。对于不同类型的对象,有不同类型的对象权限。如表12-3所示。,表12-3 常用的对象权限,授予权限,1授予系统权限授权语句如下:GRANT system_

8、privilege|role,system_privilege|role TO user|role|PUBLIC,user|role|PUBLIC WITH ADMIN OPTION,其中:(1)system_privilege:要授予的系统权限。(2)role:被授权的角色名字。(3)PUBLIC:把系统权限授予所有用户。(4)WITH ADMIN OPTION:可以把被授予的权限再进一步授予其他用户或角色。,例:GRANT create session TO test WITH ADMIN OPTION;GRANT create table TO test;将create view 权限授

9、予数据库中所有用户GRANT create view TO public;,2授对象权限语句如下:GRANT object_privilege(column_list),object_privilege(column_list)|ALL PRIVILEGES ONschema.object TO user|role|PUBLIC,user|role|PUBLIC WITH GRANT OPTION,其中:(1)object_privilege:要授予的对象权限。(2)column_list:表或者视图的列名(只有授权 INSERT,REFERENCES,UPDATE的时候才使用)。(3)ALL

10、:授予对象的所有权限,并且有 WITH GRANT OPTION权限。(4)ON object:对象名字。(5)WITH GRANT OPTION:可以把对象权限授予其他的用户或者角色。,例:GRANT SELECT,UPDATE ON emp TO test WITH GRANT OPTION;GRANT ALL ON DEPT TO TEST:,3.取消权限,使用REVOKE语句可以回收己经授予用户(或角色)的系统权限、对象权限与角色,执行回收权限操作的用户同时必须具有授予相同权限的能力。例:取消用户test的 CREATE TABLE 权限。REVOKE CREATE TABLE FRO

11、M test;说明:取消其他用户的权限时必须拥有系统管理员DBA 权限。,例:回收已经授予用户test的emp表上的SELECT和UPDATE对象权限:REVOKE SELECT,UPDATE ON EMP FROM test;,角色管理,在许多情况下,用户的工作往往都是分类的,因此就可以将用户分为不同的种类,每一种用户的权限都是相同的,即扮演了相同的角色。因此Oracle借用了角色这种概念来实现这种权限管理的方法,达到简化权限管理的目的。角色就是一组相关权限的集合,是对权限进行集中管理(授予、回收)的一种方法。即将不同权限集中在一起就形成了角色。使用角色可以大大降低用户权限的维护负担。数据库

12、管理员只需创建特定的数据库角色,使其反映组织或应用的安全权限,就可以将这些角色赋予用户,实际是把角色所拥有的权限分配给用户。,不使用角色分配权限,权限,用户,Manager,使用角色分配权限,ORACEL利用角色更容易地进行权限管理。有下列优点:(1)减少权限管理,不要显式地将同一权限组授权给几个用户,只需将这权限组授给角色,然后将角色授权给每一用户。(2)动态权限管理,如果一组权限需要改变,只需修改角色的权限,所有授给该角色的全部用户的安全域将自动地反映对角色所作的修改。(3)权限的选择可用性,授权给用户的角色可选择地使其可用或不可用。(4)应用安全性,角色使用可由口令保护,应用可提供正确的

13、口令使用角色,如不知其口令,不能使用角色。,预定义角色,在创建数据库时,Oracle数据库会自动创建一些常用的角色,即预定义角色。这些角色已经由Oracle数据库授予了相应的系统权限。DBA 可以直接将这些预定义的角色授予用户,完成简单的权限管理工作。,下面是比较传统的三个预定义角色。CONNECT授予最终用户的典型权利,最基本的 RESOURCE 授予开发人员的权限CREATE TRIGGER CREATE SEQUENCE CREATE TYPE CREATE PROCEDURE CREATE CLUSTER CREATE OPERATOR CREATE INDEXTYPE CREATE

14、TABLE,DBA 拥有系统的所有系统级权限。对于数据库管理员应该授予DBA角色。对于数据库开发用户,只需要授予CONNECT和RESOURCE两个角色。可以通过数据字典DBA_SYS_PRIVS查询所有预定义角色的系统权限。,创建自定义角色,Oracle允许用户按实际需要自定义各种角色,以便将其授予不同类型的用户,增强权限管理的灵活性和方便性。创建角色的语句格式如下:CREATE ROLE 角色名 IDENTIFIED BY password其中任性的IDENTIFIED BY password要求用户在启用这个角色之前先确认自己的身份。该角色在默认情况下被关闭,为了打开此角色需要使用如下语

15、句:SET ROLE role_name IDENTIFIED BY password;,例:CREATE ROLE account_role;注意:新创建的角色并不具有任何权限,这时的角色是没有什么用处的。因此,创建角色之后,通常要立即给它授予系统权限或对象权限。将权限授予角色Grant connect to account_role;Grant create table to account_role;Grant select on scott.emp to account_role;,将角色授予用户Grant resource to test;Grant account_role to

16、ora_test1;回收角色中的某一权限Revoke create table from account_role;回收用户的某一角色Revoke account_role from ora_test1;,角色删除,由于角色可以重复修改和设置,随着角色的增多,需要删除一些不必要的角色。删除角色可以通过DROP语句来实现,使这个角色的权限集合无效,拥有此角色的用户都不能使用这些权限。例:Drop role account_role;,获取角色有关的信息,从如下的数据字典中获取有关角色的信息:DBA_ROLES:数据库中所有的角色。DBA_SYS_PRIVS:拥有系统权限的用户和角色。ROLE_S

17、YS_PRIVS:拥有系统权限的角色。ROLE_TAB_PRIVS:拥有对象权限的角色 USER_ROLE_PRIVS用户拥有的角色,PL/SQL与角色,默认情况下,PL/SQL函数、过程、程序包都要使用“定义者”的命名空间和权限执行。需要注意的是,这些已编译的“PL/SQL程序”对象要使用直接赋予设计用户的权限执行,而不使用用户通过数据库角色得到的对象权限来执行。当然,这将使让作为特定数据库用户在SQL*Plus中测试特定DML语句的开发人员混淆,他们将发现PL/SQL过程中的相同语句不能够编译。大多数情况下,造成这种问题的原因是由于对象权限是通过角色授予,而不是直接授予设计用户的。,PL/

18、SQL与角色,通常情况下,应用开发的安全方法是不直接将表和视图上的权限赋予数据库用户,只能够通过PL/SQL过程、函数或程序包访问附属的表和视图,而执行这些已编译对象的权限要通过数据库角色提供。这种方式的最大优点是:除了通过公开的方法之外,终端用户不能直接操作应用程序中的表和视图。如果将安全直接绑定到用户应用中,而不是数据库中,就意味着安全实现只能够适用于用户应用。然而,如果用户只能够提供通过PL/SQL过程、函数和程序包修改用户应用的表和视图的能力,那么就要为访问Oracle数据库的所有应用维护数据库对象的安全。,小结,用户管理权限的基本作用系统权限(with admin option)对象

19、权限(with grant option)角色(with admin option)PL/SQL与角色,上机练习,1、创建一个用户账号test,密码为test,默认的表空间为users,默认的临时表空间为temp,在users上的限额为100M。2、将用户账号test锁定;然后再进行解锁。3、修改用户账号test的密码为aaa。4、将系统权限create session、create table授予test;然后回收test的create table权限。5、将scott方案下的emp表上的insert,update,delete对象权限授予test;然后回收test的emp表上的delete对象权限。6、将connect,resource角色授予test;然后回收test的resource角色。7、自定义角色role_test,使其具有角色connect和create view的系统权限。然后将此角色授予test;最后回收test的role_test角色。8、删除自定义角色role_test.9、删除用户账号test.,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号