登陆注册
31848700000017

第17章 数据库的保护(1)

8.1 数据库的安全性管理

数据库的保护就是要排除和防止各种对数据库的干扰和破坏,确保数据安全、可靠及在数据库遭到破坏后尽快恢复正常。对数据库的保护主要通过安全性控制、完整性控制、并发控制和数据库恢复技术四个方面实现的。本章首先介绍实现这四种保护措施的原理和方法,然后介绍Oracle系统是如何实现这四种保护措施的。

数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改和破坏。

安全性问题是所有计算机系统都有的问题,只是在数据库系统中由于大量数据集中存放,而且是多用户共享,使安全性问题更为突出。因此,系统安全保护措施是否有效是数据库系统主要的性能指标之一。

8.1.1 安全性管理的方法和原理

在计算机系统中,一般安全措施是分级设置的。

在用户进入计算机系统时,首先由操作系统一级实施保护,必须对进入操作系统的操作系统用户进行身份鉴定,只有合法的操作系统用户才准许进入操作系统。对进入操作系统的用户,希望操作数据库数据时,DBMS还要进行数据库用户的身份鉴定,只有合法的数据库用户才准许进入数据库系统。然后还需要对数据库用户进行存取权限的控制,检查数据库用户是否拥有存取权限,只允许数据库用户执行权限范围内的合法操作。最后数据存储到数据库中还可以采用加密存储。

安全性控制的一般方法有:用户标识和鉴别、存取权限控制、审计、数据加密和视图等几种。

8.1.1.1 用户标识和鉴别

用户标识和鉴别是系统提供的最外层安全保护措施。其方法是由系统提供让用户标识自己的名字或身份的方法。每次用户要进入系统时,系统对用户身份进行核实,经过鉴定后才提供操作系统和数据库的使用权。

(1)提供用户名和口令

常用的用户标识和鉴别方法是使用用户名和口令。为保密起见,用户在终端上输入的口令不显示在屏幕上。当用户登录操作系统时,系统要求用户提供操作系统的用户名和口令,若正确,则可进入操作系统;若不正确,则不能进入操作系统。当进入操作系统后,使用数据库的工具登录数据库时,数据库系统要求用户提供数据库的用户名和口令,若正确,则登录数据库;若不正确,则拒绝登录数据库。

以上的方法简单易行,但用户名和口令容易被人窃取,因此还可以用更复杂的方法。

(2)系统提供一个随机数

系统提供了一个随机数,用户根据预先约定好的某一过程或者函数进行计算,系统根据用户计算结果是否正确进一步鉴定用户身份。

用户标识和鉴别可以重复多次。

8.1.1.2 存取权限控制

在数据库系统中,安全最重要的一点是确保只授权给有资格的用户访问数据库的权限,令所有未被授权的用户无法接近数据,这主要通过数据库系统的存取控制机制实现的。

存取控制机制主要包括两部分:定义用户权限和检查用户权限。

(1)定义用户权限

用户权限是指不同的用户对不同的数据对象允许执行的操作权限。定义用户权限时必须指定两个内容:一是要存取的数据对象,二是对此对象进行的操作,保证用户只能存取他有权存取的数据。在数据库系统中对存取权限的定义称为“授权”(Authorization),这些授权的定义经过编译后存放在数据库的数据字典中,被称作安全规则。

关系数据库系统中,DBA可以把建立和修改基本表的权限授予用户,用户可利用这种权限来建立和修改基本表、索引、视图等对象。数据对象的创建者自动获得对该数据对象的所有操作权限。

SQL除了数据定义和数据操作功能以外,还提供了数据控制功能,授权和回收就是通过其提供的GRANT和REVOKE语句来实现的。

例8-1 student表的创建者将该表上的查询权限和插入权限授予给用户user1,并允许user1用户又将student表的查询和插入权限授予别人。

SQL>GRANT select,insert

ON student

TO user1

WITH GRANT OPTION

例8-2 student表的创建者将该表上的查询权限和插入权限从用户user1身上回收。

SQL>REVOKE select,insert

ON student

FROM user1

(2)合法权限检查

每当用户发出存取数据库的操作请求时,DBMS查询数据字典,根据事先定义好的存取权限进行合法权限检查。若用户的操作超过了定义的权限,系统拒绝执行此操作。

用户的权限定义和合法权限检查机制一起组成了DBMS的安全子系统。

8.1.1.3 审计

任何系统的安全性措施不可能是完美无缺的,企图盗窃、破坏数据者总是想方设法逃避控制。所以,对敏感的数据、重要的操作,可以通过审计来进行跟踪检查。

审计功能把用户对数据库的所有操作自动记录下来放入审计日志(audit log)中。DBA利用审计日志,就能重现导致数据库现有状况的一系列事件,以找出非法存取数据的人、时间和内容。

审计通常是很费时间和空间的,所以DBMS往往将其作为可选特征,允许DBA根据应用对安全性的要求,灵活地打开或关闭审计功能。审计功能一般用于安全性要求较高的部门。

8.1.1.4 数据加密

另一种安全性方法是使用加密。把数据用密码形式存储在磁盘上,这样企图通过不正常途径,例如不通过DBMS,而是通过自己编写的程序来存取数据者,只能看到一些无法辨认的二进制数。用户要检索数据时,首先要提供密码钥匙,由系统进行译码。

不少数据库产品均提供了这种数据加密的功能。但数据加密和解密操作比较费时,又占大量的系统资源,所以一般DBMS将数据加密功能作为一个可选特征,可根据用户的要求对数据实行加密或不加密存储。

8.1.1.5 视图机制

可以为不同的用户定义不同的视图,把数据对象限制在一定的范围内。可以通过视图将要保密的数据对无权存取这些数据的用户隐藏起来,这样自动地提供了对数据的安全保护。

例8-3 有基本表student、course和sc,其中student表包含了学生的基本信息,包括:学号、姓名、性别、年龄等信息。course表包含了课程的基本信息,包括:课程号、课程名称、学分、任课教师的名字等信息。sc表包含了每个同学的选课记录,包括:学号、课程号、成绩等信息。在这三张表的基础上建立一个视图sgrade,该视图包含学生的姓名、课程名及该课程的成绩。

SQL>CREATE VIEW sgrade

AS SELECT sname,name,grade

FROM student s,course c,sc

WHERE s.snosc.sno and c.cnosc.cno;

将SGRADE视图的查询权限授予user1用户。

SQL>GRANT select

ON sgrade

TO user1;

此时user1用户可以查询sgrade视图,即可以查询三张表中的学生姓名、课程名称、成绩数据。但除了这三个数据外,其他信息user1都无权查询,也看不到。

SELECT*FROM sgrade;

从上述例子可以看到,通过视图隐藏用户无权访问的数据加强安全性,隐藏表之间的联结操作简化用户操作。

8.1.2 Oracle系统的安全措施

Oracle系统的安全措施就是上述保证系统安全性的几种方法的具体体现。但是Oracle系统中的用户可以进行账号锁定和口令过期等设置。权限又分系统权限和对象权限,分别有不同的管理方法,另外引入角色简化权限的管理。审计又可以分为数据库审计和应用审计等。

8.1.2.1 用户的管理

对Oracle进行访问的用户必须是Oracle中建立的一个有效的用户。当安装和建立Oracle数据库时,系统自动建立SYS和SYSTEM用户,其中SYS用户拥有数据字典。在数据库中一个用户可以拥有的对象有表、视图、索引、约束条件、序列生成器、同义词、存储过程、函数、包、数据库触发器、数据库链路、快照等。

1.建立新用户

使用CREATE USER命令可以建立用户,建立后在数据字典中记录了该用户的信息。在建立用户时应该为其指定一个口令,该口令加密后存储在数据库数据字典中。当用户与数据库建立连接时,Oracle验证用户提供的口令与存储在数据字典中的口令是否一致。

建立用户的语法如下:

CREATE USER 用户名

IDENTIFIED BY 口令

[DEFAULT TABLESPACE 表空间名]

[TEMPORARY TABLESPACE 表空间名]

[PASSWORD EXPIRE]

[ACCOUNT{LOCK|UNLOCK}]

其中:只有口令必须指定,其他几项都是可选的。

BY口令用于指定该用户存储在数据字典中的口令,口令不区分大小写。

DEFAULT|TEMPORARY TABLESPACE用于为用户指定默认的表空间和临时表空间。假如没有指定默认表空间,则将SYSTEM表空间作为该用户的默认表空间。假如没有指定临时表空间,则将TEMP表空间作为该用户的临时表空间。

PASSWORD EXPIRE表示刚建立用户的口令已到期。当用户使用SQL*Plus第一次登录到数据库时,强制用户重置口令。

ACCOUNT LOCK|UNLOCK用于显式地锁住用户账号,或不锁住用户账号。当一个账号被锁定并且用户试图连接到数据库时,会显示错误信息。没有指定ACCOUNT从句时,默认是不锁住用户账号。

例8-4 建立一个JOHN用户。该用户的口令没有到期,账号也没有被锁住。

SQL>CREATE USER JOHN

IDENTIFIED BY TIGER

DEFAULT TABLESPACE USERS

TEMPORARY TABLESPACE TEMP

当建立用户后,必须给用户授权,用户才能连接到数据库,并对数据库中的对象进行操作。只有拥有CREATE SESSION权限的用户才能连接到数据库。可用下列语句给JOHN用户授权。关于给用户授予和回收权限的语法在后面讨论。

SQL>GRANT CREATE SESSION TO JOHN

2.修改用户

建立用户时指定的所有特性都可以使用ALTER USER命令加以修改。使用此命令可以修改用户的默认表空间、临时表空间、修改用户的口令和口令期限、可以锁住或解锁用户账号等。修改用户的语法如下:

ALTER USER 用户名

IDENTIFIED BY 口令

[DEFAULT TABLESPACE 表空间名]

[TEMPORARY TABLESPACE 表空间名]

[PASSWORD EXPIRE]

[ACCOUNT{LOCK|UNLOCK}]

注意:该命令中任何没有修改的选项仍然保留原来的值。

同类推荐
  • 网络知识

    网络知识

    一般地说,将分散的多台计算机、终端和外部设备用通信线路互联起来,彼此间实现互相通信,并且计算机的硬件、软件和数据资源大家都可以共同使用,实现资源共享的整个系统就是计算机网络。
  • 云计算、网络安全和网络盗窃:网络世界防盗初学指南

    云计算、网络安全和网络盗窃:网络世界防盗初学指南

    网络犯罪层出不穷,保护自己的安全,防止受到攻击,似乎是一个艰巨的任务。幸运的是,有一些人人都能采取的措施,可以降低成为网络袭击对象的风险。保证基于云计算程序的安全和降低被袭击的风险,关键在于理解云安全的共同责任。云提供商需要全力确保实施尽可能严格的安全策略。
  • 无人机:知道这些就够了

    无人机:知道这些就够了

    不久的将来无人机将像智能手机一样司空见惯,而你对无人机的了解有多少?你知道无人机有哪些用途吗?无人机对你和你的家庭又会产生什么样的影响呢?知道这些就够了。
热门推荐
  • 冷少,你不懂爱

    冷少,你不懂爱

    她26岁有自己的事业,生活过的也很是滋润,有空就到处旅游,唯一不如意的就是家里老妈催婚了。相亲,相亲还是相亲,为什么就找不到知道自己中意的呢?在她快崩溃的时候却意外在姐妹生日会里认识了他,一气之下就和这个认识不久的人领了证,先结婚后恋爱,结婚后的生活会怎么样呢?他们能够幸福吗?
  • 封尘剑客

    封尘剑客

    侯浪孤独的剑客,美酒与美人才是他的最爱,国仇家恨什么的算个鸟啊!
  • 大学生就业与职业生涯规划

    大学生就业与职业生涯规划

    大学生就业与职业生涯规划不可能做到科学和精确,也不能预言将来要发生什么,它是一种用来思考的工具——思考为了取得未来的结果现在该做些什么。本书遵循“以学生为本”的原则,着眼于社会的发展,立足学生的现状,从大学生的自我认知开始,进行个性特征、兴趣爱好、价值观和能力特征等方面的探索,进而了解社会,进行职业探索,明确人生的终极目的,明确阶段的目标,做出人生规划的决策,最后落脚于对成功人生最为关键的几个要素的管理上。未来规划应立足于当前,在青年时期,做好当前管理,让自己实现有价值的人生。
  • 王爷的纨绔王妃

    王爷的纨绔王妃

    她与他是青梅竹马两小无猜,煞是旁人。她是苏府的唯一千金,上面七个哥哥,无一不是把她宠上天。他是明国的王爷,能文能武,唯独对她无尽温柔。
  • 灵气复苏又如何

    灵气复苏又如何

    无数身穿机甲,手里拿着造型奇特的武器。把一名少年包围在中间。这到底是什么鬼啊!陆明真的慌了。这只猫到底把我带到什么地方了!我想回家!
  • 异世风尸游

    异世风尸游

    自古僵尸无外乎金木水火土五行属性,他却不在五行之列。面对陌生的世界他只想快些回到主人的身边,保护主人的安眠。可是天地间的一切都已经在大神通者的掌控之中,他被渐渐的卷入了大神通者之间的游戏中。游戏?进行中……
  • 时光的尘埃

    时光的尘埃

    帕里斯带着前世半部存思秘术穿越而来,却发现这具身体的主人居然被邪术士当作养蛊的器皿……来自欧洲的光明会执事竟与血族伯爵联手寻找中世纪最强女巫的宝藏,埃及帝王谷,阿蒙神庙,几千年来从未被同化的努比亚起源之地……
  • 鳍行翼

    鳍行翼

    2150年,世上突然出现了一种怪物,他们是从动物演变而来,陆地上的叫行鬼,水里的叫鳍鬼,天上的叫翼鬼。有的怪物甚至可以缩小或者变大,以便于随身携带。政府对这种怪物并没有很全面的认识,只知道这些都是一个神秘人及其手下所做的。政府领养了一些孤儿并培养成“猎鬼人”。
  • 赤色战神的无节操系统

    赤色战神的无节操系统

    事情往往会在你做好准备前就落到你头上。与其抱怨不断,不如自己多加努力。坚定了这样的信念,获得新生的杰洛开始了成为“赤色战神”的修行。面对未来的各种险境,他是幸运的,有着系统的帮助,我不是一个人在战斗!但他又是极为不幸的,因为,这是个极其不靠谱的无节操系统。他的成长史,注定会是个血泪史。这是个发生在未来的未来的故事。这是一个非人类和一群类人类之间的故事。这是个发生在人类基本灭绝了的世界中的故事。希望能写出好作品,希望各位看官喜欢。
  • 医中之王

    医中之王

    多年行医,谁知江湖险恶,张晔的一生经历了坎坷无数,逢凶化吉的本领练就了一番,让他来拯救人世间的千千万万吧!