当前位置:文档之家› 数据库的安全性与完整性

数据库的安全性与完整性

数据库的安全性与完整性
数据库的安全性与完整性

4 数据库的安全性与完整性

数据库在各种信息系统中得到广泛的应用,数据在信息系统中的价值越来越重要,数据库系统的安全与保护成为一个越来越值得重要关注的方面。

数据库系统中的数据由DBMS统一管理与控制,为了保证数据库中数据的安全、完整和正确有效,要求对数据库实施保护,使其免受某些因素对其中数据造成的破坏。

一般说来,对数据库的破坏来自以下4个方面:

(1)非法用户

非法用户是指那些未经授权而恶意访问、修改甚至破坏数据库的用户,包括那些超越权限来访问数据库的用户。一般说来,非法用户对数据库的危害是相当严重的。

(2)非法数据

非法数据是指那些不符合规定或语义要求的数据,一般由用户的误操作引起。

(3)各种故障

各种故障指的是各种硬件故障(如磁盘介质)、系统软件与应用软件的错误、用户的失误等。

(4)多用户的并发访问

数据库是共享资源,允许多个用户并发访问(Concurrent Access),由此会出现多个用户同时存取同一个数据的情况。如果对这种并发访问不加控制,各个用户就可能存取到不正确的数据,从而破坏数据库的一致性。

针对以上4种对数据库破坏的可能情况,数据库管理系统(DBMS)核心已采取相应措施对数据库实施保护,具体如下:

(1)利用权限机制,只允许有合法权限的用户存取所允许的数据,这就是本章4.1节“数据库安全性”应解决的问题。

(2)利用完整性约束,防止非法数据进入数据库,这是本章4.2节“数据库完整性”应解决的问题。

(3)提供故障恢复(Recovery)能力,以保证各种故障发生后,能将数据库中的数据从错误状态恢复到一致状态,此即本章4.3节“故障恢复技术”的内容。

(4)提供并发控制(Concurrent Control)机制,控制多个用户对同一数据的并发操作,以保证多个用户并发访问的顺利进行,此即本章4.4节“并发控制”的内容。

4.1 数据库安全性

4.1.1 数据库安全性问题的概述

1.数据库安全问题的产生

数据库的安全性是指在信息系统的不同层次保护数据库,防止未授权的数据访问,避免数据的泄漏、不合法的修改或对数据的破坏。安全性问题不是数据库系统所独有的,它来自各个方面,其中既有数据库本身的安全机制如用户认证、存取权限、视图隔离、跟踪与审查、数据加密、数据完整性控制、数据访问的并发控制、数据库的备份和恢复等方面,也涉及到计算机硬件系统、计算机网络系统、操作系统、组件、Web服务、客户端应用程序、网络浏览器等。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出,每一个方面产生的安全问题都可能导致数据库数据的泄露、意外修改、丢失等后果。

例如,操作系统漏洞导致数据库数据泄漏。微软公司发布的安全公告声明了一个缓冲区溢出漏洞(https://www.doczj.com/doc/444030294.html,/china/security/),Windows NT、Windows 2000、Windows 2003等操作系统都受到影响。有人针对该漏洞开发出了溢出程序,通过计算机网络可以对存在该漏洞的计算机进行攻击,并得到操作系统管理员权限。如果该计算机运行了数据库系统,则可轻易获取数据库系统数据。特别是Microsoft SQL Server的用户认证是和Windows集成的,更容易导致数据泄漏或更严重的问题。

又如,没有进行有效的用户权限控制引起的数据泄露。Browser/Server结构的网络环境下数据库或其他的两层或三层结构的数据库应用系统中,一些客户端应用程序总是使用数据库管理员权限与数据库服务器进行连接(如Microsoft SQL Server的管理员SA),在客户端功能控制不合理的情况下,可能使操作人员访问到超出其访问权限的数据。

在安全问题上,DBMS应与操作系统达到某种意向,理清关系,分工协作,以加强DBMS的安全性。数据库系统安全保护措施是否有效是数据库系统的主要指标之一。

为了保护数据库,防止恶意的滥用,可以从低到高的五个级别上设置各种安全措施。

(1)环境级:计算机系统的机房和设备应加以保护,防止有人进行物理破坏。

(2)职员级:工作人员应清正廉洁,正确授予用户访问数据库的权限。

(3)OS级:应防止未经授权的用户从OS处着手访问数据库。

(4)网络级:由于大多数DBS都允许用户通过网络进行远程访问,因此网络软件内部的安全性至关重要。

(5)DBS级:DBS的职责是检查用户的身份是否合法及使用数据库的权限是否正确。

本章只讨论与数据库系统中的数据保护密切相关的内容。

2.数据库的安全标准

目前,国际上及我国均颁布有关数据库安全的等级标准。最早的标准是美国国防部(DOD)1985年颁布的《可信计算机系统评估标准》(Computer System Evaluation Criteria,TCSEC)。1991年美国国家计算机安全中心(NCSC)颁布了《可信计算机系统评估标准关于可信数据库系统的解释》(Trusted Datebase Interpreation,TDI),将TCSEC扩展到数据库管理系统。1996年国际标准化组织ISO又颁布了《信息技术安全技术——信息技术安全性评估准则》(Information Technology Security Techniques——Evaluation Criteria For It Secruity)。我国政府于1999年颁布了《计算机信息系统评估准则》。目前国际上广泛采用的是美国标准TCSEC(TDI),在此标准中将数据库安全划分为4大类,由低到高依次为D、C、B、A。其中C级由低到高分为C1和C2,B级由低到高分为B1、B2和B3。每级都包括其下级的所有特性,各级指标如下:

(1)D级标准:为无安全保护的系统

(2)C1级标准:只提供非常初级的自主安全保护。能实现对用户和数据的分离,进行自主存取控制(DAC),保护或限制用户权限的传播。

(3)C2级标准:提供受控的存取保护,即将C1级的DAC进一步细化,以个人身份注册负责,并实施审计和资源隔离。很多商业产品已得到该级别的认证。

(4)B1级标准:标记安全保护。对系统的数据加以标记,并对标记的主体和客体实施强制存取控制(MAC)以及审计等安全机制。

一个数据库系统凡符合B1级标准者称之为安全数据库系统或可信数据库系统。

(5)B2级标准:结构化保护。建立形式化的安全策略模型并对系统内的所有主体和客体实施DAC和MAC。

(6)B3级标准:安全域。满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程。

(7)A级标准:验证设计,即提供B3级保护的同时给出系统的形式化设计说明和验证,以确信各安全保护真正实现。

我国的国家标准的基本结构与TCSEC相似。我国标准分为5级,从第1级到第5级依次与TCSEC标准的C级(C1、C2)及B级(B1B2B3)一致。

4.1.2 数据库的安全性机制

在一般计算机系统中,安全措施是一级一级层层设置的,如图6-1所示。

用户标识和鉴别存取控制操作系统安全保护数据密码存储

在图6.1的安全模型中,用户要进入计算机系统,系统首先根据输入的用户标识进行用户身份鉴定,只有合法的用户才准许进入计算机系统。对已经进入系统的用户,DBMS要进行存取控制,只允许用户执行合法操作。操作系统一级也会有自己的保护措施。数据最后还可以以密码形式存储在数据库中。在本节中对数据库的一些逻辑安全机制进行介绍,包括用户认证、存取权限,视图隔离、数据加密、跟踪与审查等内容作介绍。

1.用户认证

数据库系统不允许一个未经授权的用户对数据库进行操作。用户标识与鉴别,即用户认证,是系统提供的最外层安全保护措施。其方法是由系统提供一定的方式让用户标识自己的名字或身份,每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供机器使用权。对于获得上机权的用户若要使用数据库时,数据库管理系统还要进行用户标识和鉴定。

用户标识和鉴定的方法有很多种,而且在一个系统中往往多种方法并用,以得到更强的安全性。常用的方法是用户名和口令。

通过用户名和口令来鉴定用户的方法简单易行,但其可靠程度极差,容易被他人猜出或测得。因此,设置口令法对安全强度要求比较高的系统不适用。近年来,一些更加有效的身份认证技术迅速发展起来。例如使用某种计算机过程和函数、智能卡技术,物理特征(指纹、声音、手图等)认证技术等具有高强度的身份认证技术日益成熟,并取得了不少应用成果,为将来达到更高的安全强度要求打下了坚实的理论基础。

2.存取控制

数据库安全性所关心的主要是DBMS的存取控制机制。数据库安全最重要的一点就是确保只授权给有资格的用户访问数据库的权限,同时令所有未被授权的人员无法接近数据,这主要通过数据库系统的存取控制机制实现。存取控制是数据库系统内部对已经进入系统的用户的访问控制,是安全数据保护的前沿屏障,是数据库安全系统中的核心技术,也是最有效的安全手段。

在存取控制技术中,DBMS所管理的全体实体分为主体和客体两类。主体(Subject)是系统中的活动实体,包括DBMS所管理的实际用户,也包括代表用

户的各种进程。客体(Object)是存储信息的被动实体,是受主体操作的,包括文件、基本表、索引和视图等。

数据库存取控制机制包括两个部分:

一是定义用户权限,并将用户权限登记到数据字典中。用户权限是指不同的用户对不同的数据对象允许执行的操作权限。系统必须提供适当的语言定义用户权限,这些定义经过编译后存放在数据字典中,被称作系统的安全规则或授权规则。

二是合法性权限检查。当用户发出存取数据库的操作请求后(请求一般应包括操作类型、操作对象、操作用户等信息),数据库管理系统查找数据字典,根据安全规则进行合法权限检查,若用户的操作请求超出了定义权限,系统将拒绝执行此操作。

存取控制包括自主型存取控制(DAC)和强制型存取控制(MAC)两种类型。

(1)自主存取控制(Discretionary Access Control,DAC)

自主型存取控制是用户访问数据库的一种常用安全控制方法,较为适合于单机方式下的安全控制,大型数据库管理系统几乎都支持自主存取控制。在自主型存取控制中,用户对于不同的数据对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。用户权限由数据对象和操作类型这两个因素决定。定义一个用户的存取权限就是要定义这个用户在哪些数据对象上进行哪些类型的操作。在数据库系统中,定义存取权限称为授权。

自主型存取控制的安全控制机制是一种存取矩阵的模型,此模型由主体、客体与存/取操作构成,矩阵的列表示主体,矩阵的行表示客体,而矩阵中的元素表示存/取操作(如读、写、修改和删除等),如图6-2所示。

图6-2 授权存/取矩阵模型

在这种存取控制模型中,系统根据对用户的授权构成授权存取矩阵,每个用户对每个信息资源对象都要给定某个级别的存取权限,例如读、写等。当用户申请以某种方式存取某个资源时,系统就根据用户的请求与系统授权存取矩阵进行匹配比较,通过则允许满足该用户的请求,提供可靠的数据存取方式,否则,拒绝该用户的访问请求。

目前的SQL标准也对自主存取控制提供支持,主要是通过SQL的GRANT 语句和REVOKE语句来是实现权限的授予和收回,这部分内容将在下节中作祥细介绍。

自主存取控制能够通过授权机制有效地控制其他用户对敏感数据的存取,但是由于用户对数据的存取权限是“自主”的,用户可以自由地决定将数据的存取权限授予别的用户,而无需系统的确认。这样,系统的授权存取矩阵就可以被直接或间接地进行修改,可能导致数据的“无意泄漏”,给数据库系统造成不安全因素。要解决这一问题,就需要对系统控制下的所有主体、客体实施强制型存取控制策略。

(2)强制存取控制(Mandatory Access Control,MAC)

所谓MAC是指系统为保证更高程度的安全性,按照TCSEC(TDI)标准中安全策略的要求,所采取的强制存取检查手段,较为适用于网络环境,对网络中的数据库安全实体作统一的、强制性的访问管理。

强制型存取控制系统主要通过对主体和客体的已分配的安全属性进行匹配判断,决定主体是否有权对客体进行进一步的访问操作。对于主体和客体,DBMS 为它们的每个实例指派一个敏感度标记(Label)。敏感度标记被分成若干级别,例如绝密、机密、可信、公开等。主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级。在强制存取控制下,每一个数据对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。而且,该授权状态一般情况下不能被改变,这是强制型存取控制模型与自主型存取控制模型实质性的区别。一般用户或程序不能修改系统安全授权状态,只有特定的系统权限管理员才能要根据系统实际的需要来有效地修改系统的授权状态,以保证数据库系统的安全性能。

强制存取控制策略是基于以下两个规则:

●仅当主体的许可证级别大于或等于客体的密级时,主体对客体具有读权限。

●仅当客体的密级大于或等于主体的许可证级别时,主体对客体具有写权限。

这两种规则的共同点在于它们均禁止了拥有高许可证级别的主体更新低密级的数据对象,从而防止了敏感数据的泄漏。

强制安全存取控制模型的不足之处是可能给用户使用自己的数据时带来诸多的不便,其原因是这些限制过于严格,但是对于任何一个严肃的安全系统而言,强制安全存取控制是必要的,可以避免和防止大多数有意无意对数据库的侵害。

较高安全性级别提供的安全保护要包含较低级别的所有保护,因此在实现强制存取控制时要首先实现自主存取控制,即自主存取控制与强制存取控制共同构成DBMS的安全机制。系统首先进行自主存取控制检查,对通过检查的允许存取的主体与客体再由系统进行强制存取控制的检查,只有通过检查的数据对象方可存取。

3.视图隔离

视图是数据库系统提供给用户以多种角度观察数据库中数据的重要机制,是从一个或几个基表(或视图)导出的表,它与基表不同,是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。

从某种意义上讲,视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。进行存取权限控制时,可以为不同的用户定义不同的视图,把访问数据的对象限制在一定的范围内,也就是说,通过视图机制要把保密的数据对无权存取的用户隐藏起来,从而对数据提供一定程度的安全保护。

需要指出的是,视图机制最主要的功能在于提供数据独立性,在实际应用中,常常将视图机制与存取控制机制结合起来使用,首先用视图机制屏蔽一部分保密数据,再在视图上进一步定义存取权限。通过定义不同的视图及有选择地授予视图上的权限,可以将用户、组或角色限制在不同的数据子集内。

4.数据加密

前面介绍的几种数据库安全措施,都是防止从数据库系统中窃取保密数据。但数据存储在存盘、磁带等介质上,还常常通过通信线路进行传输,为了防止数据在这些过程中被窃取,较好的方法是对数据进行加密。对于高度敏感性数据,例如财务数据、军事数据、国家机密,除了上述安全措施外,还可以采用数据加密技术。

加密的基本思想是根据一定的算法将原始数据(术语为明文)变换为不可直接识别的格式(术语为密文),从而使得不知道解密算法的人无法获知数据的内容。数据解密是加密的逆过程,即将密文数据转变成可见的明文数据。

一个密码系统包含明文集合、密文集合、密钥集合和算法,其中密钥和算法构成了密码系统的基本单元。算法是一些公式、法则或程序,它规定明文与密文之间的变换方法,密钥可以看作算法中的参数。如图6-3所示。

加密方法可分为对称加密与非对称加密两种。

所谓对称加密,其加密所用的密钥与解密所用的密钥相同。典型的代表是DES(Data Encryption Standard,数据加密标准)。所谓非对称加密,其加密所用的

密钥与解密所用的密钥不相同,其中加密的密钥可以公开,而解密的密钥不可以公开。

数据加密和解密是相当费时的操作,其运行程序会占有大量系统资源,因此数据加密功能通常是可选特征,允许用户自由选择,一般只对机密数据加密。

5.审计

审计功能是DBMS达到C2级以上安全级别必不可少的指标。这是数据库系统的最后一道安全防线。

审计功能把用户对数据库的所有操作自动记录下来,存放在日志文件中。DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法访问数据库的人、时间、地点以及所有访问数据库的对象和所执行的动作。

有两种审计方式,即用户审计和系统审计。

(1)用户审计:DBMS的审计系统记下所有对表或视图进行访问的企图(包括成功的和不成功的)及每次操作的用户名、时间、操作代码等信息。这些信息一般都被记录在数据字典(系统表)之中,利用这些信息用户可以进行审计分析。

(2)系统审计:由系统管理员进行,其审计内容主要是系统一级命令以及数据库客体的使用情况。

审计通常是很费时间和空间的,所以DBMS往往将其作为可选特征,一般主要用于安全性要求较高的部门。

4.1.3 SQL Server的安全性策略

如果一个用户要访问SQL Server 数据库中的数据,必须经过三个认证过程。第一个认证过程是身份验证,需通过登录帐户来标识用户。身份验证只验证用户是否具有连接到SQL Server数据库服务器的资格。第二个认证过程是当用户访问数据库时,必须具有对具体数据库的访问权,即验证用户是否是数据库的合法用户。第三个认证过程是当用户操作数据库中的数据对象时,必须具有相应的操作权,即验证用户是否具有操作权限。

SQL Server的安全性管理包括了用户身份认证、存取控制、视图隔离、数据加密、跟踪与审计等几个方面,下面分别作简要介绍。

1.用户身份认证

SQL Server 的用户有两种类型:

(1)Windows 授权用户:来自于Windows的用户或组。

(2)SQL授权用户:来自于非Windows的用户,称其为SQL用户。

Microsoft SQL Server 为不同的用户类型提供了不同的安全认证模式。

(1)Windows身份验证模式

Windows身份验证模式使用户得以通过Microsoft Windows NT 4.0 或Windows 2000用户帐户进行连接SQL Server。用户必须首先登录到Windows中,然后再登录到SQL Server。用户登录到SQL Server时,只需选择Windows身份验证模式,无需再提供登录帐户和密码,系统会从用户登录到Windows时提供的用户名和密码中查找用户的登录信息,以判断其是否为SQL Server的合法用户。

对于SQL Server来说,一般推荐使用Windows身份验证模式。因为这种安全模式能够与Windows操作系统的安全系统集成在一起,用户的网络安全特性在网络登录时建立,并通过Windows域控制器进行验证,从而提供更多的安全功能。但Windows验证模式只能用在Windows NT 4.0 或Windows 2000服务器版操作系统的服务器上,在Windows 98等个人操作系统上,不能使用Windows身份验证模式,只能使用混合验证模式。

(2)混合验证模式

混合验证模式表示SQL Server接受Windows授权用户和SQL授权用户。如果不是Windows操作系统的用户或者是Windows 98操作系统的用户使用SQL Server,则应该选择混合验证模式。

如果在混合模式下选择使用SQL授权用户登录SQL Server,则用户必须提供登录名和密码,SQL Server使用这两部分内容来验证用户,SQL Server通过检查是否已设置SQL Server登录帐户,以及指定的密码是否与记录的密码匹配,进行身份验证。另外,因为在Windows98上不支持Windows身份验证模式,因此,SQL Server在Windows98上运行时应使用混合模式,且只支持SQL Server身份验证。

SQL Server在安装时,会自动创建一个DB服务器的登录用户sa,即系统管理员,用以创建其他登录用户和授权。

数据库服务器登录用户的创建,可利用存储过程来进行,命令如下:

sp_addlogin[@loginame=] '登录名'

[,[@passwd=] '口令']

[,[@defdb=] '默认数据库名']

2.SQL Server数据库用户

SQL Server在安装时,自动创建了一个默认数据库用户,即guest。一个登录用户在被设定为某个数据库用户之前,可用guest用户身份访问数据库,只不过其权限非常有限。

SQL Server可用以下命令授权登录用户成为数据库用户,该命令必须在所要访问的数据库下执行:

sp_adduser [@loginame=] '登录名'

[,[@name_in_db=] '访问数据库时用的名字']

3.存取控制

当用户成为数据库中的合法用户后,他除了可以查询系统表之外,并不具有操作数据库中对象的任何权限,因此,需给数据库中的用户授予操作数据库对象的权限。

SQL Server对权限的管理包含如下三个内容:

●授予权限:允许用户或角色具有某种操作权。

●收回权限:删除以前在当前数据库内的用户上授予或拒绝的权限。

●拒绝权限:拒绝给当前数据库内的安全帐户授予权限并防止安全帐户通过其组或角色成员继承权限。

在SQL Server2000中,权限分为对象权限、语句权限和隐含权限三种。

(1)对象权限

对象权限是指用户对数据库中的表、视图等对象的操作权,相当于数据操作语言的语句权限,例如是否运行查询、增加和修改数据等。

表、视图的权限包括SELECT、INSERT、DELETE、UPDATE。列的权限包括SELECT和UPDATE。存储过程的权限包括EXECUTE。

●授权语句:

GRANT 对象权限名[,…] ON {表名| 视图名| 存储过程名} TO {数据库用户名| 用户角色名}[,…] [WITH GRANT OPTION]

可选项[WITH GRANT OPTION]表示获得权限的用户还能获得传递权限,把获得的权限传授给其他用户。

例如:

GRANT SELECT,INSERT ON Student TO user1 WITH GRANT OPTION

该语句把对Student表的查询权和插入权授予给用户user1,user1同时获得将这些权限转授给别的用户的权限。

GRANT UPDATE(Name) ON Student TO user1

该语句把对Student表的姓名属性的修改权授予给用户user1。

●收回权限语句:

REVOKE 对象权限名[,…] ON {表名| 视图名| 存储过程名} FROM {数据库用户名|用户角色名}[,…] [RESTRICT | CASCADE]

可选项[RESTRICT | CASCADE]中,CASCADE表示回收权限时要引起连锁回收。即从用户Ui回收权限时,要把用户Ui转授出去的同样的权限同时回收。RESTRICT表示,当不存在连锁回收时,才能回收权限,否则系统拒绝回收。

例如:REVOKE INSERT ON Student FROM user1 CASCADE

该语句表示从用户user1处收回对Student表的插入权,若user1已把获得的对Student表的插入权转授给其他用户,则连锁收回。

REVOKE INSERT ON Student FROM user1 RESTRICT

该语句表示若user1已把获得的对Student表的插入权转授给其他用户,则上述收回语句执行失败,否则收回成功。

●拒绝权限语句:

DENY 对象权限名[,…] ON {表名| 视图名| 存储过程名} TO {数据库用户名|用户角色名}[,…]

例如:DENY UPDATE ON Student TO user1

该语句表示拒绝用户user1对Student表进行修改

(2)语句权限

语句权限是指创建数据库或数据库中的项目的权限,相当于数据定义语言的语句权限。

语句权限包括CREATE DATABASE、CREATE TABLE、CREATE VIEW、CREATE DEFAULT、CREATE RULE、CREATE FUNCTION、CREATE PROCEDURE、BACKUP DATABASE、BACKUP LOG。

●授予权限语句:

GRANT 语句权限名[,…] TO {数据库用户名|用户角色名}[,…]

例如,授予用户user1创建数据库表的权限

GRANT CREATE TABLE TO user1

●收回权限语句:

REVOKE 语句权限名[,…] FROM {数据库用户名|用户角色名}[,…] 例如,收回用户user1创建数据库表的权限

REVOKE CREATE TABLE FROM user1

●拒绝权限语句:

DENY 语句权限名[,…] TO {数据库用户名|用户角色名}[,…]

例如,拒绝用户user1创建视图的权限

DENY CREATE VIEW TO user1

(3)隐含权限

隐含权限是指由SQL Server预定义的服务器角色、数据库角色、数据库拥有者和数据库对象拥有者所具有的权限。隐含权限是由系统预先定义好的,相当于内置权限,不需要再明确地授予这些权限。例如,数据库拥有者自动地拥有对数据库进行一切操作的权限。

在数据库中,为了便于管理用户及权限,可以将一组具有相同权限的用户组织在一起,这一组具有相同权限的用户称为角色(Role)。在SQL Server 2000中,角色分为系统角色和用户自定义的角色,系统角色又分为服务器级系统角色和数据库级系统角色。服务器级系统角色是为整个服务器设置的,数据库级系统角色是为具体的数据库设置的。服务器级系统角色包括sysadmin(系统管理)、securityadmin(安全管理)、serveradmin(服务器管理)、setupadmin(启动管理)、processadmin(进程管理)、diskadmin(磁盘管理)、dbcreator(数据库创建)、bulkadmin(备份管理)。数据库级系统角色包括public和dbo。public角色只具备最基本的访问数据库的权限。dbo为数据库拥有者,即创建该数据库的用户,拥有对该数据库或对象的所有操作权限。

用户自定义的角色也属于数据库一级的角色。用户可以根据实际情况定义自己的一系列角色,并给每个角色授予合适的权限,对角色的权限的管理同数据库用户相同。有了角色,就不用直接管理每个具体的数据库用户的权限,而只需将数据库用户放置到合适的角色中即可。当工作职能发生变化时,只要更改角色的权限即可,而无需更改角色中的成员的权限。只要权限没有被拒绝过,角色中的成员的权限是角色的权限加上它们自己所具有的权限。如果某个权限在角色中是拒绝的,则角色中的成员就不能再拥有此权限,即使为此成员授予了此权限。

用户角色的创建,可利用存储过程来进行:

sp_addrole[@rolename=] '新角色名'

[,[@ownername=] '该角色所有者']

4.视图

SQL Server广泛使用视图机制进行安全性控制,限制用户的访问范围与访问权限。通过定义不同的视图及有选择地授予视图上的权限,可以将用户、组或角色限制在不同的数据子集内。无论在基础表(一个或多个)上的权限集合有多大,都必须授予、拒绝或收回访问视图中数据子集的权限。

例如,用户user1只能检索Student表中计算机系的学生的信息,可以先建立视图CS_Student,再给user1授予对CS_Student的查询权。

CREATE VIEW CS_Student

AS

SELECT * FROM Student WHERE 系='计算机系';

GRANT SELECT ON CS_Student TO user1;

5.数据加密

Microsoft SQL Server的加密机制可以对SQL Sercer中存储的登录和应用程序角色密码、作为网络数据包而在客户端和服务器端之间发送的数据、存储过程定义、函数定义、视图定义、触发器定义、默认值定义、规则定义等数据库对象进行加密。

SQL Server系统表中存储的登录和应用程序角色密码总是被加密。这可防止用户(包括系统管理员)查看任何密码,包括自己的密码。此外,在网络上发送应用程序角色密码之前,当应用程序角色激活时,就可以对其进行加密。

SQL Server允许对客户端和服务器端之间发送的数据进行加密,这样可确保任何在网络上截取数据包的应用程序或用户无法查看保密或敏感数据。SQL Server 可以使用安全套接字层(SSL)加密在应用程序计算机与SQL Server 实例之间传输的所有数据。SSL加密在超级套接字Net-Library(Dbnetlib.dll和Ssnetlib.dll)内执行并应用于SQL Server 2000所支持的所有计算机间协议。启用加密会降低Net-Library的性能。

6.审计

Microsoft SQL Server 2000提供审核功能,用以跟踪和记录每个SQL Server 实例上已发生的活动(如成功和失败的记录)。SQLServer2000还提供管理审核记录的接口,即SQL事件探查器。只有sysadmin固定安全角色的成员才能启用或修改审核,而且审核的每次修改都是可审核的事件。

可以通过SQL事件探查器审核导致事件发生的用户、发出请求的计算机名、事件的时间、类型、所访问的数据库对象、SQL语句的文本、事件的成功与否等信息。

4.2 数据库完整性

在第三章中,读者已对关系模型上的完整性约束有了一个全面、完整的了解。本节将从较高层次来对数据库完整性的分类、定义和验证,作一般性的讲解,这对进一步掌握关系模型的完整性约束,具有指导性作用。

4.2.1 数据库完整性的概述

数据库的安全性和完整性是数据库安全保护的两个不同的方面。数据库的安全性保护数据库以防止不合法用户故意造成的破坏,数据库的完整性保护数据库以防止合法用户无意中造成的破坏。从数据库的安全保护角度来讲,完整性和安全性是密切相关的。

数据库的完整性的基本含义是指数据库中数据的正确性、有效性和相容性,其主要目的是防止错误的数据进入数据库。正确性是指数据的合法性,例如数值型数据只能含有数字而不能含有字母。有效性是指数据是否属于所定义域的有效范围。相容性是指表示同一事实的两个数据应当一致,不一致即是不相容。

数据库系统是对现实系统的模拟,现实系统中存在各种各样的规章制度,以保证系统正常、有序地运行。许多规章制度可转化为对数据的约束,例如,单位人事制度中对职工的退休年龄会有规定,也可能一个部门的主管不能在其他部门

任职、职工工资只能涨不能降等。对数据库中的数据设置某些约束机制,这些添加在数据上的语义约束条件称为数据库完整性约束条件,简称“数据库的完整性”,系统将其作为模式的一部分“定义”于DBMS中。DBMS必须提供一种机制来检查数据库中数据的完整性,看其是否满足语义规定的条件,这种机制称为“完整性检查”。为此,数据库管理系统的完整性控制机制应具有三个方面的功能,来防止合法用户在使用数据库时,向数据库注入不合法或不合语义的数据:

●定义功能,提供定义完整性约束条件的机制。

●验证功能,检查用户发出的操作请求是否违背了完整性约束条件。

●处理功能,如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。

本节将讨论数据库完整性约束的分类、完整性约束的定义、完整性约束的验证以及SQL Server中的完整性约束机制。

4.2.2 数据库完整性的分类

数据完整性检查是围绕完整性约束条件进行的,因此完整性约束条件是完整性控制机制的核心。

数据库完整性约束分为两种:静态完整性约束和动态完整性约束。完整性约束条件涉及到三类作用对象,即属性级、元组级和关系级。这三类对象的状态可以是静态的,也可以是动态的。结合这两种状态,一般将这些约束条件分为静态属性级约束、静态元组级约束、静态关系级约束、动态属性级约束、动态元组级约束、动态关系级约束等6种约束。

1.静态完整性约束(状态约束)

静态完整性约束(Static Integrity Constraints),简称静态约束,是指数据库每一确定状态时的数据对象所应满足的约束条件,它是反映数据库状态合理性的约束,是最重要的一类完整性约束,也称“状态约束”。

在某一时刻,数据库中的所有数据实例构成了数据库的一个状态,数据库的任何一个状态都必须满足静态约束。每当数据库被修改时,DBMS都要进行静态约束的检查,以保证静态约束始终被满足。

静态约束又分为3种类型:隐式约束、固有约束和显式约束。

(1)隐式约束

隐式约束(Implicit Constraints)是指隐含于数据模型中的完整性约束,由数据模型上的完整性约束完成约束的定义和验证。隐式约束一般由数据库的数据定义语言(DDL)语句说明,并存于数据目录中,例如实体完整性约束、参照完整性约束和用户自定义完整性约束,其具体内容已在3.6节作了详细介绍。

(2)固有约束

固有约束(Inherent Constraints)是指数据模型固有的约束。例如,关系的属性是原子的,满足第一范式的约束。固有约束在DBMS实现时已经考虑,不必特别说明。

(3)显示约束

隐式约束和固有约束是最基本的约束,但概括不了所有的约束。数据完整性约束是多种多样的,且依赖于数据的语义和应用,需要根据应用需求显式地定义或说明,这种约束称为数据库完整性的“显示约束”(Explicit Constraints)。

隐式约束、固有约束和显示约束这三种静态约束作用于关系数据模型中的属性、元组、关系,相应有静态属性级约束、静态元组级约束和静态关系级约束。

(1)静态属性级约束

静态属性级约束是对属性值域的说明,是最常用也是最容易实现的一类完整性约束,包括以下几个方面:

●对数据类型的约束(包括数据的类型、长度、单位、精度等)。例如,学号必须为字符型,长度为8。

●对数据格式的约束。例如,规定学号的前两位表示入学年份,中间两位表示系的编号,后四位表示顺序编号。出生日期的格式为YY.MM.DD。

●对取值范围或取值集合的约束。例如,规定学生的成绩取值范围为0~100,性别的取值集合为[男,女],大学本科学生年龄的取值范围为14~29。

●对空值的约束。空值表示未定义或未知的值,它与零值和空格不同。有的属性允许空值,有的不允许取空值。例如学生学号不能取空值,成绩可以为空值。

●其他约束。例如关于列的排序说明,组合列等。

(2)静态元组级约束

一个元组是由若干个列值组成的,静态元组级约束是对元组中各个属性值之间关系的约束。如订货关系中包含订货数量与发货数量这两个属性,其中发货量不得超出订货量;又如教师关系中包含职称、工资等属性,规定教授的工资不低于1000元。

(3)静态关系级约束

静态关系级约束是一个关系中各个元组之间或者若干个关系之间常常存在的各种联系的约束。常见的静态关系级约束有:

●实体完整性约束。

●参照完整性约束。

实体完整性约束和参照完整性约束是关系模型的两个极其重要的约束,称为关系的两个不变性。

●函数依赖约束。大部分函数依赖约束都在关系模式中定义。

●统计依赖约束。统计依赖约束指的是字段值与关系中多个元组的统计值之间的约束关系,如规定总经理的工资不得高于职工的平均工资的4倍,不得低于本部门职工平均工资的3倍,其中,本部门职工的平均工资是一个统计值。

2.动态完整性约束(变迁约束)

动态完整性约束(Dynamic Integrity Constraints),简称动态约束,不是对数据库状态的约束,而是指数据库从一个正确状态向另一个正确状态的转化过程中新、旧值之间所应满足的约束条件,反映数据库状态变迁的约束,故也称“变迁约束”。例如在更新职工表时,工资、工龄这些属性值一般只会增加,不会减少,该约束表示任何修改工资、工龄的操作只有新值大于旧值时才被接受,该约束既不作用于修改前的状态,也不作用于修改后的状态,而是规定了状态变迁时必须遵循的约束。动态约束一般也是显式说明的。

动态约束作用于关系数据模型的属性、元组、关系,相应有动态属性级约束、动态元组级约束和动态关系级约束。

(1)动态属性级约束

动态属性级约束是修改定义或属性值时应该满足的约束条件。其中包括:

●修改定义时的约束。例如,将原来允许空值的属性修改为不允许空值时,如果该属性当前已经存在空值,则规定拒绝修改。

●修改属性值时的约束。修改属性值有时需要参考该属性的原有值,并且新值和原有值之间需要满足某种约束条件。例如,职工工资调整不得低于其原有工资,学生年龄只能增长等。

(2)动态元组级约束

动态元组约束是指修改某个元组的值时要参照该元组的原有值,并且新值和原有值间应当满足某种约束条件。例如,职工工资调整不得低于其原有工资+工龄×1.5等。

(3)动态关系级约束

动态关系级约束就是加在关系变化前后状态上的限制条件。例如,事务的一致性,原子性等约束。动态关系级约束实现起来开销较大。

4.2.3 数据库完整性的定义与验证

如前所述,要实现由现实系统转换而来的数据库的完整性约束,需先定义约束,并存储于DBMS的约束库中,一旦数据库中的数据要发生变化,则DBMS 将根据约束库中的约束,对数据库的完整性进行“验证”。

1.固有约束与隐式约束

固有约束是数据模型所固有的,在DBMS实现时已经考虑,不必额外作说明和定义,只需在数据库设计时遵从这一约束即可。固有约束的验证由DBMS自动完成。例如,对关系模型来说,数据库设计时要使关系的属性不可再分,满足原子性。

隐式约束需利用数据库的数据定义语言(DDL)显式定义说明,将约束存储在约束库中,当数据库被更新时,由数据库管理系统进行完整性约束验证。。例

如,对关系模型来说,利用SQL定义语言,定义相应的实体完整性约束、参照完整性约束、CHECK约束、唯一约束等。

2.显式约束

显式约束的定义方法有过程化定义、断言定义方法、触发器定义方法等,过程与触发器的定义已在第三章中作介绍,下面作一简单小结。

过程化定义方法利用过程(或函数)来定义和验证约束。由程序员将约束编写成过程,加入到每个更新数据库的事务中,用以检验数据库更新有否违反规定的约束,如果违反约束条件,则相应的数据更新事务将被异常中止。例如,要定义和验证完整性约束“雇员的工资不能高于其部门经理的工资”,可以在每个有关的数据库更新事务(如修改雇员工资、任命部门经理、修改部门经理的工资)中,增加验证“雇员工资不能高于其部门经理工资”的过程,用该过程判断数据库的更新有否违反该约束条件,如果违反约束条件,则相应的数据库更新事务将被退回。

过程化定义的约束,DBMS只提供定义途径,不负责约束的验证,过程的定义和验证由程序员在一个过程中由通用程序设计语言编制。这种方法既为程序员编制高效率的完整性验证程序提供了有利的条件,同时也给程序员带来了很大的负担。

断言定义方法使用一种约束定义语言来定义显式约束,是一种形式化方法。一个断言就是一个谓词,表达了数据库在任何时候都应该满足的一个条件。约束递归语言通常是关系演算语言的变种。显式约束的断言定义方法把约束集合和完整性验证子系统严格分开。约束集合存储在约束库中,完整性验证子系统存取约束库中的约束,将其应用到相应的数据库更新事务中,验证该事务是否违背完整性约束。如发现更新事务违反约束,即退回该事务,否则,允许更新事务的进行。

创建断言的语句格式为:

CREAT ASSERTION <约束名> CHECK (<条件表达式>)

要删除断言,用DROP ASSERTION语句来实现,语法如下:

DROP ASSERTION <约束名>

触发器是当特定的事件(如对一个表的插入、删除、修改)发生时,对规则的条件进行检查,如果条件成立,执行规则中的动作,否则不执行该动作。其验证由数据库管理系统负责。

3.动态约束的定义

动态约束的定义,可以利用DBMS为显式约束定义提供的过程化定义方法和触发器定义方法,开发人员通过比较变化前后的数据,决定是否允许数据状态的改变。动态约束的验证过程遵循显式约束的验证过程。

例如,对于“员工的工资只能增加”这类约束,开发人员通过比较变化前后的工资额,来验证是否违反了该动态约束。

4.2.4 SQL Server的完整性策略

上面介绍了完整性控制的一般方法,不同的数据库产品对完整性的支持策略和支持程度不同,在实际的数据库应用开发时,一定要查阅所用的数据库管理系统在关于数据库完整性方面的支持情况。本节主要介绍SQL Server的完整性控制策略,如表6-1所示。

数据库安全性习题解答和解析

第九章数据库安全性习题解答和解析 1. 1.什么是数据库的安全性? 答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。 2. 2.数据库安全性和计算机系统的安全性有什么关系? 答:安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。 系统安全保护措施是否有效是数据库系统的主要指标之一。数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的。 3.试述可信计算机系统评测标准的情况,试述TDI/TCSEC标准的基本内容。 答:各个国家在计算机安全技术方面都建立了一套可信标准。目前各国引用或制定的一系列安全标准中,最重要的是美国国防部(DoD)正式颁布的《DoD可信计算机系统评估标准》(Trusted Computer System Evaluation Criteria,简称 TCSEC,又称桔皮书)。(详细介绍参见《概论》9.1.2)。 TDI/TCSEC标准是将TCSEC扩展到数据库管理系统,即《可信计算机系统评估标准关于可信数据库系统的解释》(Trusted Database Interpretation 简称TDI, 又称紫皮书)。在TDI中定义了数据库管理系统的设计与实现中需满足和用以进行安全性级别评估的标准。 TDI与TCSEC一样,从安全策略、责任、保证和文档四个方面来描述安全性级别划分的指标。每个方面又细分为若干项。这些指标的具体内容,参见《概论》9.1.2。 4.试述TCSEC(TDI)将系统安全级别划分为4组7个等级的基本内容。 答:根据计算机系统对安全性各项指标的支持情况,TCSEC(TDI)将系统划分为四组(division)7个等级,依次是D、C(C1,C2)、B(B1,B2,B3)、A(A1),按系统可靠或可信程度逐渐增高。 这些安全级别之间具有一种偏序向下兼容的关系,即较高安全性级别提供的安全保护包含较低级别的所有保护要求,同时提供更多或更完善的保护能力。各个等级的基本内容为:D级 D级是最低级别。一切不符合更高标准的系统,统统归于D组。 C1级只提供了非常初级的自主安全保护。能够实现对用户和数据的分离,进行自主

数据库安全性和完整性实验

实验9:数据库安全性实验 一、实验目的 加深对数据库安全性的理解,并掌握SQL Server中有关用户、角色及操作权限的管理方法。 二、实验内容 1.数据库的安全性实验。在SQL Server企业管理器中,设置SQL Server 的安全认证模式,实现对SQL Server的用户和角色的管理,设置和管理 数据操作权限。 三、实验原理和步骤 1.设置SQL Server的安全认证模式,选择混合模式。 右键服务器属性-安全性:选择SQL Server和Windows身份验证模式。 重启服务,生效。 2.账号: sa账号登录 3.登录帐号的管理

1)将Windows帐号添加到SQL Server 2005中 创建操作系统用户- 4.数据库用户的管理 1)dbo用户; 查看banking数据库的dbo用户,查看用户权限。 2)U1用户; 创建banking数据库的U1用户,查看用户权限。 5.权限管理 1)赋予所创建的U1用户db_datareader角色,查看用户权限 2)赋予所创建的U1用户db_datawriter角色,查看用户权限 3)赋予所创建的U1用户db_owner角色,查看用户权限 4)两种方法赋予所创建的U1用户对banking数据库表customer的select 权限,验证并写出sql语句 5)两种方法赋予所创建的U1用户对banking数据库表branch的select 和对branch_name修改的权限,验证并写出sql语句 6)把对loan表的update权限授予所创建的U1用户用户,并允许将此 权限再授予其他用户,验证并写出sql语句 7)两种方法回收所创建的U1用户对banking数据库表customer的select 权限,验证并写出sql语句 8)两种方法回收所有用户对banking数据库表loan的update权限,验 证并写出sql语句 四、实验报告要求 要求写出如下设计报告: 1.用Transact-SQL写出实验操作的语句 2.实验步骤和实验结果。 3.实验中的问题和提高。 4.SQL Server中有的安全性功能。 五、注意事项 1.用户、角色和权限的职能,以及它们之间的关系。

数据库原理实验报告-实验三-数据完整性与安全性控制

一、实验内容、步骤以及结果 1.利用图形用户界面对实验一中所创建的Student库的S表中,增加以下的约束和索引。 (18分,每小题3分) (1)非空约束:为出生日期添加非空约束。 非空约束:取消表S中sbirth的勾。可能需要重建表。 (2)主键约束:将学号(sno)设置为主键,主键名为pk_sno。 设主键:单击数据库Student-->单击表-->单击S-->右击sno-->选择‘修改’命 令-->对话框中右击sno-->选择‘设置主键’-->修改主键名为‘pk_sno’ -->保 存 (3)唯一约束:为姓名(sname)添加唯一约束(唯一键),约束名为uk_sname。 唯一约束:单击数据库Student-->单击表-->单击S-->右击sname-->选择‘修改’命令→右击sname-->选择‘索引和键’命令-->打开‘索引和键’框图-->添加--> 是否唯一改为‘是’-->名称改为‘us_sname’ -->关闭。

(4)缺省约束:为性别(ssex)添加默认值,其值为“男”。 设默认约束:单击数据库Student→单击表→单击S→右击sno→选择‘修改’命令→单击cno-->在默认值栏输入‘男’→保存

(5)CHECK约束:为SC表的成绩(grade)添加CHECK约束,约束名为ck_grade,其检查 条件为:成绩应该在0-100之间。

(6)外键约束:为SC表添加外键约束,将sno,cno设置为外键,其引用表分别是S表 和C表,外键名称分别为fk_sno,fk_cno。 2.在图形用户界面中删除以上小题中已经创建的各种约束,用SQL语言分别重新创建第1题中的(2)-(6)小题.(15分,每小题3分,提示:alter table add constraint) 删除约束:单击数据库Student-->表-->单击S-->展开键、约束。一一删除即可。

数据库的安全性实验报告

西安邮电大学 (计算机学院) 课内实验报告 实验:数据库的安全性实验 课程:数据库原理及应用B 班级:网络1203 学号: 学生姓名: 任课教师:孟彩霞

一、实验目的 (1)理解SQL Server验证用户身份的过程,掌握设置身份验证模式的方法(2)理解登录帐号的概念,掌握混合认证模式下登录帐号的建立与取消方法 (3)掌握混合认证模式下数据库用户的建立与取消方法 (4)掌握数据库用户权限的设置方法 (5)理解角色的概念,掌握管理角色技术 二、实验内容 (1)在企业管理器中打开“SQL Server属性(配置)”对话框,设置身份验证模式为“SQL Server”和“Windows”模式(即混合模式)。 (2)创建、管理数据库服务器的登录账号。 (3)创建、管理数据库用户。 (4)管理用户权限。 (5)创建、管理数据库角色。 三、实验环境 Windows7 SQL SERVER 2012 四、实验前准备 课本 上机使用代码 五、实验步骤 1.在企业管理器中打开“SQL Server属性(配置)”对话框,设置身份验证模式为“SQL Server”和“Windows”模式(即混合模式)。 2.创建、管理数据库服务器的登录账号。用T-SQL语句创建、查看、删除登录账号。 创建一个名为Student、密码为111、使用的默认数据库为JWGL的登录账号。 EXEC sp_addlogin ‘student’,’111’,’JWGL’查看登录账号EXEC sp_helplogins 删除登录账号为EXEC sp_droplogins ‘student’ 3.创建、管理数据库用户。 用T-SQL语句创建、查看、删除数据库用户。 为数据库JWGL创建一个用户user1,该用户登录SQL Server服务器的账号为wang,登录密码为secret,相应的程序代码为: EXEC sp_addlogin ‘wang’, ‘secret’, ‘JWGL’ GO EXEC sp_grantdbaccess ‘wang’, ‘user1’查看数据库用户为EXEC sp_helpuser 删除数据库中的“wang”用户为EXEC sp_revokedbaccess ‘wang’ 4.管理用户权限。 使用T-SQL语句完成第3章习题12中(1)~(3)的用户管理和用户权限管理。企业管理器: (1)允许用户李明对Orders表进行插入、删除操作。 GRANT INSERT ,DELETE ON Orders TO ‘李明’

实验五 SQL SERVER 完整性与安全性 实验报告

实验五SQL SERVER 完整性与安全性 一、实验目的 掌握SQL SERVER数据访问控制策略和技术,SQL SERVER数据库管理系统使用安全帐户认证控制用户对服务器的连接,使用数据库用户和角色等限制用户对数据库的访问。 二、实验内容 1.在服务器级别上创建三个以SQL Server身份验证的登录名,登录名称自定。 2.分别为三个登录名在“gongcheng”数据库映射三个数据库用户,数据库用户名为Tom,Mary和John,使这三个登录名可以访问“gongcheng”数据库。

3.授予用户John创建表和视图的权限。 grant create table,create view to John 在“gongcheng”下,安全性—John—属性,选择安全对象,搜索特定对象,选择“gongcheng”表,在权限中选择“创建表”和“创建视图”, 如图:

即可赋予John“创建表”和“创建视图”的权限。 4.完成以下授权: (1)把对表S的INSERT权力授予用户Tom,并允许他再将此权限授予其他用户。 grant insert on S to tom with grant option (2)用户Mary对S,P,J三个表有SELECT和INSERT权力 grant select,insert on S to Mary grant select,insert on P to Mary grant select,insert on J to Mary (3)用户Tom对SPJ表有DELETE权力,对QTY字段具有UPDA TE权力。 grant delete,update(qty) on spj to Tom

201509-实验三:数据库的安全性课案

实验三:数据库的安全性 一、实验目的 熟悉通过SQL对数据进行安全性控制。 二、实验平台 SQL Server 2008 三、实验内容和要求 1、掌握Windows登录名和SQL SERVER登录名的建立与删除方法; 2、掌握数据库用户创建与管理的方法; 3、掌握服务器角色的用法; 4、掌握数据库权限授予、拒绝和撤销的方法; 四、实验步骤 (一)授权与回收。 [例1]授权。在SQL Sever 中建立多个用户,给他们赋予不同的权限,然后查看是否真正拥有被授予的权限了。 1)建立用户U1、U2、U3、U4、U5、U6、U7。 2)以系统管理员身份对这7个用户进行授权。 [例1-1]把查询Student 表的权限授给用户U1。 GRANT SELECT ON Student TO U1; [例1-2]把对Student 表和Course 表的全部操作权限授予用户U2 和U3。 GRANT ALL PRIVILEGES ON Student TO U2,U3; GRANT ALL PRIVILEGES ON Course TO U2,U3; [例1-3]把对表SC 的查询权限授予所有用户。 GRANT SELECT ON SC TO PUBLIC; [例1-4]把查询Student 表和修改学生学号的权限授给用户U4。 GRANT UPDATE (Sno) , SELECT ON Student TO U4; [例1-5]把对表SC 的INSERT 权限授予U5,并允许U5 将此权限再授予其他用户。 GRANT INSERT ON SC TO U5

WITH GRANT OPTION; [例1-6]用户U5 将对表SC 的INSERT 权限授予U6,并允许将权限转授给其他用户。 首先应该以U5 的身份重新登录数据库,然后再进行授权。 GRANT INSERT ON SC TO U6 WITH GRANT OPTION; [例1-7]用户U6 将对表SC 的INSERT 权限授予U7。 首先应该以U6 的身份重新登录数据库,然后再进行授权。 GRANT INSERT ON SC TO U7; 3)在授权之后验证用户是否拥有了相应的权限。 在执行完上面七个语句之后,我们可以分别以不同用户的身份登录数据库,进行相关操作,检查系统是否许可。例如: [例1-8]U4 更新Student 表的学生学号。 UPDATE Student SET SNO = ‘95101’ WHERE SNO = ‘95001’; 显示更新 1 条记录,即U4 用户拥有了对Student 表Sno 的更新权限。[例1-9]U7 向SC 表中插入一条数据:(95020,20,88)。 INSERT INTO SC V ALUES(‘95020’,’20’,88); 显示插入 1 条记录,即用户U7 拥有了对SC 表的插入权限。 [例2]回收权限。将[例1]授予的权限部分收回,检查回收后,该用户是否真正丧失了对数据的相应权限。 1)回收权限。 [例2-1]收回用户U4 修改学生学号的权限。 当前用户为SYSTEM,直接执行下列语句: REVOKE UPDATE (SNO) ON Student FROM U4; [例2-2]收回所有用户对表SC 的查询权限。 REVOKE SELECT ON SC FROM PUBLIC; [例2-3]收回用户U5 对SC 表的INSERT 权限。 将权限INSERT 授予给用户U5 时,允许该用户将权限再授予给其他用户;之后,用户U5 将INSERT 权限转授给了U6,U6 又将权限转授给U7。因此,将用户U5 的INSERT 权限收回的时候必须级联收回,不然系统将拒绝执行该命令: REVOKE INSERT ON TABLE SC FROM U5 CASCADE;

数据库安全性练习题和答案

数据库安全性习题 一、选择题 1. 以下()不属于实现数据库系统安全性的主要技术和方法。 A. 存取控制技术 B. 视图技术 C. 审计技术 D. 出入机房登记和加锁 2. SQL中的视图提高了数据库系统的()。 A. 完整性 B. 并发控制 C. 隔离性 D. 安全性 3. SQL语言的GRANT和REVOKE语句主要是用来维护数据库的()。 A. 完整性 B. 可靠性 C. 安全性 D. 一致性 4. 在数据库的安全性控制中,授权的数据对象的(),授权子系统就越灵活。 A. 范围越小 B. 约束越细致 C. 范围越大 D. 约束范围大 三、简答题 1. 什么是数据库的安全性? 答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。 数据库安全性和计算机系统的安全性有什么关系?2.

答:安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。 系统安全保护措施是否有效是数据库系统的主要指标之一。 数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的, 3.试述实现数据库安全性控制的常用方法和技术。 答:实现数据库安全性控制的常用方法和技术有: 1)用(户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。 2)存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如C2级中的自主存取控制(DAC),B1级中的强制存取控制(MAC); 3)视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。 4)审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中, DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。 从而使得对存储和传输的数据进行加密处理,数据加密:5)

数据库安全性与完整性实验

数据库原理及应用 实验报告 题目:数据库安全性与完整性实验 专业:网络工程 班级: 学号: 姓名: 太原工业学院计算机工程系 2016年10 月15日一、实验目的与要求 目的: 使学生加深对数据安全性与完整性实验的理解,并掌握SQL Server中有关用户,角色及操作权限的管理方法,熟悉通过SQL语句副i数据进行完整性控制。 要求: 1.数据库的安全性实验,在SQL Server企业管理器中设置SQL server的安全认证模式,实现对SQL server的用户和角色管理,设置和管理数据操作权限。 2.指出用户和角色的区别 二、实验内容 1.设置SQL server的安全认证模式(windows或SQL server和Windows(s)认证模式)、。 2.登陆的管理 创建一个登录用户 3.数据库用户的管理 登录用户只有成为数据库(Database User)后才能访问数据库。每个数据库的用户信息都存放在系统表Sysusers中,通过查看Sysusers表可以看到该数据库所有用户的情况。SQL Server的数据库中都有两个默认用户:dbo(数据库拥有者用户)和(dba)。通过系统存储过程或企业管理器可以创建新的数据库用户。 4.角色的管理 创建一个角色,使创建的用户成为该角色的成员,并授予一定的操作权限。 5.在学生表中定义主键、外键约束 6.在课程表的“课程名”字段上定义唯一约束 7.在选课表的“成绩”字段上定义check约束,使之必须大于等于0且小于等于100. “课程号”字段只能输入数字字符 8.定义规则,并绑定到学生表的“性别”字段,使之只能取“男、女”值 9.在学生表中增加出生年月字段,定义缺省,并绑定到学生表的出生日期上,使之只能取当前日期。

实验7+数据库的安全管理实验报告

淮海工学院计算机工程学院实验报告书 课程名:《数据库原理及应用》 题目:数据库的安全管理 班级:软件132 学号:2013122907 姓名:孙莹莹 评语: 成绩:指导教师: 批阅时间:年月日

一.目的与要求 1.掌握SQL Server的身份验证模式及其设置; 2.掌握登录账号和用户账号的设置; 3.掌握角色的创建方法; 4.掌握权限设置的一般方法 二.实验内容 在SQL Server管理控制器中完成如下操作: (1)创建一个登录账号XYZ/123(其默认的工作数据库为factory,其“服务器角色”设置为sysadmin;将“映射到此登录名的用户”设置为Factory,并具有public权限; 并设置安全对象LCB-PC服务器具有Connect SQL权限); (2)修改(1)中为factory数据库创建的用户账号XYZ的属性,使XYZ登录账号对factory 数据库具有db_.owner权限。 三.实验步骤、 1.创建登陆账号 (1)启动SQL Server管理控制器,在“对象资源管理器”中展开LCB-PC节点。 (2)展开“安全性”节点,选中“登录名”,单击鼠标右键,在出现的快速菜单中选择“新建登录名”命令,如图1所示。 (3)出现“登录名新建”对话框,其中左侧列表包含有5个选项卡,“常规”选项卡如图2所示。这里,在“登录名”文本框中输入所创建的登录名XYZ,选中“SQL Server 身份验证”模式,在“密码”与“确认密码”输入登录时所用的密码,这里均输入“123”, 不选中“强制实施密码策略”选项。在“默认数据库”与“默认语言”中选择该登录 名登录SQL Server2005后默认使用的数据库与语言。 2.设置服务器角色 (1)用sa登录账号启动SQL Server管理控制器,在“对象资源管理器”中展开LCB-PC 节点。 (2)展开“安全性”节点,展开“服务器角色”节点,下方列出了所有的固定服务器角色,选中服务器角色sysadmin,单击鼠标右键,在出现的快速菜单中选择“属性”命令, 如图3所示。 (3)出现如图4所示的“服务器角色属性-sysadmin”对话框。 (4)单击“添加”按钮,出现如图5所示的“选择登录名”对话框。 (5)单击“浏览”按钮,出现如图6所示的“查找对象”对话框,选中“XYZ”登录名。 (6)单击两次“确定”按钮返回到“服务器角色属性-sysadmin”对话框,从中看到XYZ 登录账号已经作为sysadmin角色成员了。最后单击“确定”按钮设置完毕。 3.设置用户映射 (1)用sa登录账号启动SQL Server管理控制器,在“对象资源管理器”中展开LCB-PC 节点。 (2)展开“登录名”节点,选中“XYZ”,单击鼠标右键,在出现的快速菜单中选择“属性”命令,如图7所示。 (3)出现“登录属性-XYZ”对话框,其中左侧列表包含有5个选项卡,“用户映射”选项卡如图8所示。“映射到此登录名的用户(D):”选择“factory”,“数据库角色成员 身份(R):factory”自动选择为“public”,单击“确定”按钮完成设置。

数据库原理实验报告_实验三_数据完整性与安全性控制

实验内容、步骤以及结果 1.利用图形用户界面对实验一中所创建的Student库的S表中,增加以下的约束和索引。 (18分,每小题3分) (1) 非空约束:为出生日期添加非空约束。 非空约束:取消表S中sbirth的勾。可能需要重建表。 (2) 主键约束:将学号(sno)设置为主键,主键名为pk_sno。 设主键:单击数据库Student-->单击表-->单击S-->右击sno-->选择修改命令-->对话框中右击sno-->选择设置主键'>修改主键名为pk_sno '-->保存

(3)唯一约束:为姓名(sname)添加唯一约束(唯一键),约束名为uk_sname 。 唯一约束:单击数据库Student-->单击表--> 单击S-->右击sname-->选择修改’ 命令T右击 sname-->选择索引和键命令--> 打开索引和键框图--> 添加--> 是否唯一改为是--> 名称改为us sname '-->关闭。

(4)缺省约束:为性别(ssex)添加默认值,其值为男 设默认约束:单击数据库Student宀单击表宀单击右击sno^选择修改命令宀单击cno-->在默认值栏输入男’保存

D62.s1udent - Diagram_0* D62.sludent - dbo.S* SQLQuery5.sql - D... (D62\A^m i n (52J)* 列容 埶据类型 允祥值 Q 5TI0 Ctiar(lO) n sname nvarchar (20) a 卜:S5SX nchai ■⑵ 團 sbirtti date □ adept nv ar char (20) sPhoneNo ctiar(LQ) @] 数捐类型 允傑Mdl 值 曰表设计器 RowGuid E 标识魁 不用于复制 大小 (5) CHECK 约束:为SC 表的成绩(grade)添加CHECK 约束,约束名为ck grade ,其 检查条件为:成绩应该在0-100之间。 ffin har 妊 2 Nnrh 昙否否否二

数据库的安全性保护

数据库的安全性保护 张海飞西北民族大学甘肃省兰州市 730124 摘要:随着计算机特别是计算机网络的发展,数据的共享日益增强,数据的安全保密越来越重要。网络数据库安全性问题一直是围绕着数据库管理的重要问题,数据库数据的丢失以及数据库被非法用户的侵入使得网络数据库安全性的研究尤为重要。数据库管理系统是管理数据的核心,因而其自身必须有一整套完整而有效的安全性机制。实现数据库系统安全性的技术和方法有多种,最重要的是存取控制技术、视图技术和审计技术。 关键字:数据库安全性安全保护网络安全 数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。安全性问题不是数据库系统所独有的,所以的计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。系统安全保护措施是否有效是数据库系统的主要技术指标之一。数据库的安全性和计算机系统的安全性,包括计算机硬件、操作系统、网络系统等的安全性,是紧密联系、相互支持的。 在一般的计算机系统中,安全措施是一级一级层层设置的。在下图所示的安全模型中,用户要求进入计算机系统时,系统首先根据输入的用户标识进行用户身份鉴定,只有合法的用户才准进入计算机系统。对已进入系统的用户,DBMS 还要进行存取控制,只允许用户执行合法操作。 数据库安全性所关心的主要是DBMS的存取控制机制。数据库安全最重要的一点就是确保只授权给有资格的用户访问数据库权限,同时令所有未被授权的人员无法接近数据。这主要通过数据库系统的存取控制机制实现。存取控制机制主要包括:一、定义用户权限,并将用户权限登记到数据字典中;二、合法权限检查。 我们还可以为不同的用户定义不同的视图,把数据对象限制在一定的范围内,即通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。视图机制间接地实现支持存取谓词的用户权限定义。 “审为了使DBMS达到一定的安全级别,还需要在其他方面提供相应的支持,计”功能就是DBMS达到C2以上安全级别比不可少的一项指标。审计常常是很费时间和空间的,所以DBMS往往都将其作为可选特征,允许DBA根据应用对安全性的要求,灵活地打开或关闭审计功能。审计功能一般主要用于安全性要求较高的部门。 既然造成数据库不安全的一个主要原因是因为原始数据以可读(明文)形式存放在数据库中。一旦某一用户非法获取用户名和口令,或者绕过操作系统缄DBMs)的控制入侵到系统中,可以访问和修改数据库中的信息。 另外,数据存储介质(如磁盘、光盘、磁带等)丢失也会导致数据库中的数据泄漏。如果我们对数据库中的数据(明文)进行加密处理,那么上述问题就可以得到解决。即使某一用户非法入侵到系统中或者盗取了数据存储介质,没有相应的

数据库的安全性与完整性

4 数据库的安全性与完整性 数据库在各种信息系统中得到广泛的应用,数据在信息系统中的价值越来越重要,数据库系统的安全与保护成为一个越来越值得重要关注的方面。 数据库系统中的数据由DBMS统一管理与控制,为了保证数据库中数据的安全、完整和正确有效,要求对数据库实施保护,使其免受某些因素对其中数据造成的破坏。 一般说来,对数据库的破坏来自以下4个方面: (1)非法用户 非法用户是指那些未经授权而恶意访问、修改甚至破坏数据库的用户,包括那些超越权限来访问数据库的用户。一般说来,非法用户对数据库的危害是相当严重的。 (2)非法数据 非法数据是指那些不符合规定或语义要求的数据,一般由用户的误操作引起。 (3)各种故障 各种故障指的是各种硬件故障(如磁盘介质)、系统软件与应用软件的错误、用户的失误等。 (4)多用户的并发访问 数据库是共享资源,允许多个用户并发访问(Concurrent Access),由此会出现多个用户同时存取同一个数据的情况。如果对这种并发访问不加控制,各个用户就可能存取到不正确的数据,从而破坏数据库的一致性。 针对以上4种对数据库破坏的可能情况,数据库管理系统(DBMS)核心已采取相应措施对数据库实施保护,具体如下: (1)利用权限机制,只允许有合法权限的用户存取所允许的数据,这就是本章4.1节“数据库安全性”应解决的问题。 (2)利用完整性约束,防止非法数据进入数据库,这是本章4.2节“数据库完整性”应解决的问题。 (3)提供故障恢复(Recovery)能力,以保证各种故障发生后,能将数据库中的数据从错误状态恢复到一致状态,此即本章4.3节“故障恢复技术”的内容。 (4)提供并发控制(Concurrent Control)机制,控制多个用户对同一数据的并发操作,以保证多个用户并发访问的顺利进行,此即本章4.4节“并发控制”的内容。

(安全生产)数据库的安全性与完整性

数据库的安全性和完整性 一、实验目的和要求 1、理解数据库安全性和完整性的概念。 2、掌握SQL Server2000中有关用户、角色及操作权限管理等安全性技术。 3、掌握SQL Server2000中有关约束、规则、默认值的使用等完整性技术。 二、实验内容和步骤 ㈠数据库的安全性 1、SQL Server的安全模式 认证是指来确定登陆SQL SERVER的用户的登陆账号和密码是否正确,以此来验证其是否具有连接SQL SERVER的权限,但是通过认证阶段并不代表能够访问数据,用户只有在获取访问数据库的权限之后才能对服务器上的数据库进行权限许可下的各种操作。 ⑴设置SQL Server的安全认证模式:使用企业管理器来设置,步骤如下: Step1: 展开服务器组,右击需要设置的SQL服务器,在弹出菜单中选择“属性”。 Step2: 在弹出的SQL服务器属性对话框中,选择“安全性”选项卡。 Step3: 选择仅Windows选项(NT/2000验证模式) 或SQL Server和Windows选项(混合模式)。 注:设置改变后,用户必须停止并重新启动SQL Server服务,设置才生效。 如果设置成NT认证模式,则用户在登录时输入一个具体的登陆名时,SQL SERVER将忽略该登录名。 ⑵添加SQL Server账号:若用户没有Windows NT/2000账号,则只能为他建立SQL Server账号。 ①利用企业管理器 Step1: 展开服务器,选择安全性/登录。 Step2: 右击登录文件夹,出现弹出式菜单。 Step3: 在弹出式菜单中选择“新建登录”选项后,就会出现一个登录属性对话框。 step4: 在名称框中输入一个不带反斜杠的用户名,选中SQL Server身份验证单选按钮,并在密码框中输入口令(如下图所示)。

实验四 数据库安全性与完整性控制

实验题目:数据库安全性与完整性控制 目录 一、实验目的 (1) 二、实验内容 (1) 三、实验要点及说明 (1) 四、实现方法 (1) 五、实验结果 (2) 六、源程序清单 (4) 七、思考及总结 (5)

一、实验目的 通过本次实验,提高以下几个方面的能力 1. 创建新用户 2. 通过GRANT语句对新用户进行授权 3. 通过REVOKE语句完成权限的回收 4. 实体完整性的实现 5. 参照完整性实现 二、实验内容 1.完成教材中实例1-8 2.完成教材中相应于完整性的实例。 三、实验要点及说明 1.一定要熟练掌握GRANT语句与REVOKE语句的使用 2.一定要熟练掌握实体完整性与参照完整性控制 3.要读懂出错的提示信息 四、实现方法 未将创建的用户删除,有创建同一个用户。

删除localhost方法 五、实验结果 创建用户成功

登陆用户zhangsan 登陆用户zhangsan2 登陆用户lisi

用户zhangsan和zhangsan2信息显示用户lisi信息显示 分别给用户zhangsan和zhangsan2授权 授权之后查看zhangsan中信息 修改zhangsan2中数据 六、源程序清单 Create user 'zhangsan'@'%' identified by '1'; /*创建用户张三,密码为1*/ Create user 'zhangsan2'@'%' identified by password '*E6CC90B878B948C35E92B003C792C46C58C4AF40'; /*创建用户张三,密文定义密码为1*/

数据库安全性实验

实验6:RDBMS的数据库安全性实验 【实验目的】 1.掌握user的创建与授权(all,select,update和delete等) 2.掌握收回权限 3.熟悉级联授权与级联收回 【实验条件】 1. 具有2台PC,接入LAN网络,1台作为数据库服务器,1台客户机。 2. 服务器端装有MySQL,防火墙允许3306端口,root密码可以远程访问。 【实验过程】 1. 创建账户并授权。 登录root账户后,创建user,5个账户,分别是mag、student1、student2、teacher1和teacher2。>>对mag的创建与授权。 命令:Grant <权限> to [identified by ‘密码’] [ with grant option] 说明:主机可以用本机表示方法:localhost或ip地址127.0.0.1,也可以用IP地址表示LAN 内的主机IP或wan内的主机IP 第一步:创建mag grant all on sc.* to 'mag'@'localhost' IDENTIFIED by 'Abc123' 说明:grant是授权命令的关键字,all是权限(指所有权限,可以换成其他的权限),on sc.*说明授权操作对象是sc数据库的所有内容(所有表,所有视图等),to mag@localhost说明授权给localhost主机上的mag用户(如果mag不存在,则创建mag,如果存在则直接授权给该用户),identified by ‘Abc123’设置mag用户的密码为后面的字符串。 第二步:查看https://www.doczj.com/doc/444030294.html,er表

数据库系统概论第5版课后答案第4章数据库安全性

第4章数据库安全性 1.什么是数据库的安全性? 答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。 2.数据库安全性和计算机系统的安全性有什么关系? 答:安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。系统安全保护措施是否有效是数据库系统的主要指标之一。 数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的。 CC评估保证级(EAL)的划分 4.试述实现数据库安全性控制的常用方法和技术。 答:实现数据库安全性控制的常用方法和技术有:

1)用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用 户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。 2)存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有 未被授权的人员无法存取数据。例如CZ 级中的自主存取控制( DAC ) , Bl 级中的强制存取控制(MAC )。 3)视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐 藏起来,从而自动地对数据提供一定程度的安全保护。 4)审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA 可 以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。 5)数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知 数据的内容。 5.什么是数据库中的自主存取控制方法和强制存取控制方法? 答:自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。 强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。 6.对下列两个关系模式使用GRANT语句完成下列授权功能: 学生(学号,姓名,年龄,性别,家庭住址,班级号) 班级(班级号,班级名,班主任,班长) 1)授予用户U1对两个表的所有权限,并可给其他用户授权。 GRANT ALL PRIVILEGES ON TABLE学生,班级 TO U1 WITH GRANT OPTION ; 2)授予用户U2对学生表具有查看权限,对家庭住址具有更新权限。 GRANT SELECT,UPDATE(家庭住址) ON TABLE学生 TO U2; 3)将对班级表查看权限授予所有用户。 GRANT SELECT ON TABLE 班级 TO PUBLIC; 4)将对学生表的查询、更新权限授予角色R1。 CREATE ROLE R1; GRANT SELECT,UPDATE ON TABLE 学生 TO R1; 5)将角色R1授予用户U1,并且U1可继续授予给其他角色。 GRANT R1 TO U1 WITH ADMIN OPTION;称,MAX(工资),MIN(工资),AVG(工资) FROM 职工,部门 WHERE 职工.部门号=部门.部门号 GROUP BY 职工.部门号; GRANT SELECT ON 部门工资 TO 杨兰; 7.针对习题7 中1)~7)的每一种情况,撤销各用户所授予的权限。 1)REVOKE SELECT ON TABLE职工,部门 FROM 王明; 2)REVOKE INSERT , DELETE ON TABLE职工,部门 FROM 李勇; 3)REOVKE SELECT ON TABLE职工WHEN USER ( ) =NAMEFROM ALI; 4)REVOKE SELECT , UPDATE ON TABLE职工FROM 刘星; 5)REVOKE ALTER TABLE ON TABLE职工,部门FROM 张新; 6)REVOKE ALL PRIVILIGES ON TABLE职工,部门FROM 周平;

数据库实验报告

课程设计报告题目:数据库实验上机实验报告 专业班级:计算机科学与技术1210班 学号:U201215079 姓名:候宝峰 指导教师: 报告日期:2015-06-04 计算机科学与技术学院

目录 一、基本SQL操作(部分选做) (1) 1)数据定义 (1) 2)数据更新 (3) 3)用SQL语句完成下述查询需求: (4) 二、DBMS综合运用(部分选做) (8) 1)学习sqlserver的两种完全备份方式:数据和日志文件的脱机备份、系统的备份功能(选做)。 (8) 2)学习系统的身份、权限配置操作 (9) 3)了解SQLSERVER的存储过程、触发器、函数实现过程 (14) 三、实验总结 (17) 1)实验问题及解决 (17) 2)实验心得 (18)

一、基本SQL操作(部分选做) 1)数据定义 参照下面的内容建立自己实验所需的关系数据 创建三个关系: 商品表【商品名称、商品类型】 GOODS【GNAME char(20),GTYPE char(10)】 主关键字为(商品名称)。商品类型为(电器、文具、服装。。。) 商场【商场名称,所在地区】 PLAZA【PNAME char(20),PAREA c har(20)】 主关键字为商场名称。所在地区为(洪山、汉口、汉阳、武昌。。。) 销售价格表【商品名称、商场名称、当前销售价格、目前举办活动类型】 SALE【GNAME char(20),PNAME char(20),PRICE FLOAT,ATYPE c har(10)】 主关键字为(商品名称、商场名称)。举办活动类型为(送券、打折),也可为空值,表示当前未举办任何活动。表中记录如(‘哈森皮靴’,‘亚贸广场’,200,‘打折’),同一商场针对不同的商品可能采取不同的促销活动。 create table goods(gname char(20) primary key,gtype char(10)); create table plaza(pname char(20) primary key,parea char(20)); create table sale (gname char(20), pname char(20), price FLOAT, atype char(10)check (atype in('送券','打折','')), primary key(gname,pname), foreign key(gname)references goods(gname), foreign key(pname)references plaza(pname));

数据库的完整性和安全性实验报告

信息工程学院实验报告 课程名称:《数据库原理》 实验项目名称:数据库的完整性和安全性 一、实 验 目 的: (1)掌握数据库约束的概念; (2)熟悉SQL SERVER 的完整性约束技术。 (3)了解SQL SERVER 的违反完整性处理措施。 (4)了解登录账户的管理理念与具体方法。 (5)了解数据库用户的管理的要则。 (6)了解用户权限管理的内涵与方法。 二、实 验 设 备 与 器 件 Win7 +Sql server 2008 三、实 验 内 容 与 步 骤 (一)测试完整性 运行附录中的SQL 语句,理解SQL 语句中包含的完整性定义。然后执行下面的SQL 语句,看是否能正常运行,若无法执行,请说明原因。 1.对dept 表进行数据增删改,并检查完整性规则 Dept 已存在的完整性规则如下: dno CHAR(2) PRIMARY KEY dname VARCHAR(20) NOT NULL,UNIQUE (1)增加数据 INSERT INTO dept VALUES('D1','计科系');----正常插入 INSERT INTO dept VALUES('D2','电信系');----正常插入 INSERT INTO dept VALUES(NULL,'机械系'); ----违反dno 主键(NOT NULL )规则 INSERT INTO dept VALUES('D2','机械系'); ----违反dno 主键(UNIQUE ) INSERT INTO dept VALUES('D3',NULL); ----违反dname 的NOT NULL 规则

数据库完整性与安全性实验

1.实验五数据库完整性与安全性实验 1.1 实验目的 1.通过对完整性规则的定义实现,熟悉了解Mysql中完整性保证的规则和实现方法,加深对 数据完整性的理解。 2.通过对安全性相关内容的定义,熟悉了解Mysql中安全性的内容和实现方法,加深对数据 库安全性的理解 1.2 实验内容 1.2.1 完整性实验 (1)分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;(2)分别向学生表、课程表插入具有相同学号和相同课程编号的学生数据和课程数据,验证其实体完整性约束; (3)向学生选课表中插入一条数据,课程编号是课程表中没有的,验证参照完整性约束;(4)删除学生表中的所有数据,验证参照完整性约束; (5)定义存储过程,完成查询某个学生的选课情况,并执行。 (6)定义触发器,当向学生表插入新的一条记录时,将所有学生出生日期加1;并对其进行测试。 (7)用sql完成以上操作。 1.2.2 安全性实验 (1)定义一新的登陆帐号、数据库用户,并授予其访问学生数据库的读权限; (2)分别用sa用户和新定义的用户访问学生数据库,并对其中的学生表数据进行修改;(3)再次用此用户访问学生数据库,并对其中的学生表数据进行修改。 (4)用SQL语句分别完成以上内容。 1.3 实验环境 Window8操作系统 Mysql 8.0版本数据库 Mysql workbench 8.0可视化工具 Mysql命令行编辑器

1.4 实验步骤及结果分析 1.4.1 完整性 1.4.1.1 分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束 1.首先因为在之前创建表的时候定义了主键,因此,我们需要先将所有表的主键撤销掉,然后 重新创建主键。 Mysql语句(删除主键): alter table student drop primary key; alter table course drop primary key; alter table sc drop primary key; 2.重新创建主键 Mysql语句(创建主键): alter table student add primary key(sno); alter table course add primary key(cno); alter table sc add primary key(sno,cno); 3.到此,我们已经重新添加了各表的主键,接下来我们为SC表添加外键。 Mysql语句(创建外键): alter table sc add constraint foreign key(sno) references student(sno); alter table sc add constraint foreign key(cno) references course(cno);

相关主题
文本预览
相关文档 最新文档