版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库安全机制优质资料(可以直接使用,可编辑优质资料,欢迎下载)
数据库安全机制数据库安全机制优质资料(可以直接使用,可编辑优质资料,欢迎下载)数据库安全机制是用于实现数据库的各种安全策略的功能集合,正是由这些安全机制来实现安全模型,进而实现保护数据库系统安全的目标。数据库系统的安全机制如图所示:触发器触发器数据库服务器(RDBMS)授权机制约束机制审计视图操作系统用户身份验证存储过程用户标识与鉴别用户标识是指用户向系统出示自己的身份证明,最简单的方法是输入用户ID和密码。标识机制用于惟一标志进入系统的每个用户的身份,因此必须保证标识的惟一性。鉴别是指系统检查验证用户的身份证明,用于检验用户身份的合法性。标识和鉴别功能保证了只有合法的用户才能存取系统中的资源。由于数据库用户的安全等级是不同的,因此分配给他们的权限也是不一样的,数据库系统必须建立严格的用户认证机制。身份的标识和鉴别是DBMS对访问者授权的前提,并且通过审计机制使DBMS保留追究用户行为责任的能力。功能完善的标识与鉴别机制也是访问控制机制有效实施的基础,特别是在一个开放的多用户系统的网络环境中,识别与鉴别用户是构筑DBMS安全防线的第1个重要环节。近年来一些实体认证的新技术在数据库系统集成中得到应用。目前,常用的方法有通行字认证、数字证书认证、智能卡认证和个人特征识别等。通行字也称为“口令”或“密码”,它是一种根据已知事物验证身份的方法,也是一种最广泛研究和使用的身份验证法。在数据库系统中往往对通行字采取一些控制措施,常见的有最小长度限制、次数限定、选择字符、有效期、双通行字和封锁用户系统等。一般还需考虑通行字的分配和管理,以及在计算机中的安全存储。通行字多以加密形式存储,攻击者要得到通行字,必须知道加密算法和密钥。算法可能是公开的,但密钥应该是秘密的。也有的系统存储通行字的单向Hash值,攻击者即使得到密文也难以推出通行字的明文。数字证书是认证中心颁发并进行数字签名的数字凭证,它实现实体身份的鉴别与认证、信息完整性验证、机密性和不可否认性等安全服务。数字证书可用来证明实体所宣称的身份与其持有的公钥的匹配关系,使得实体的身份与证书中的公钥相互绑定。智能卡(有源卡、IC卡或Smart卡)作为个人所有物,可以用来验证个人身份,典型智能卡主要由微处理器、存储器、输入输出接口、安全逻辑及运算处理器等组成。在智能卡中引入了认证的概念,认证是智能卡和应用终端之间通过相应的认证过程来相互确认合法性。在卡和接口设备之间只有相互认证之后才能进行数据的读写操作,目的在于防止伪造应用终端及相应的智能卡。根据被授权用户的个人特征来进行确证是一种可信度更高的验证方法,目前已得到应用的个人生理特征包括指纹、语音声纹(voice-print)、DNA、视网膜、虹膜、脸型和手型等。访问控制概述访问控制的目的是确保用户对数据库只能进行经过授权的有关操作。在存取控制机制中,一般把被访问的资源称为“客体”,把以用户名义进行资源访问的进程、事务等实体称为“主体”。传统的存取控制机制有两种,即DAC(DiscretionaryAccessControl,自主存取控制)和MAC(MandatoryAccessControl,强制存取控制)。近年来,RBAC(Role-basedAccessControl,基于角色的存取控制)得到了广泛的关注。数据访问级别和类型DBMS中的安全系统必须具有伸缩性以便为各种数据级别授权。数据级别有以下几种:整个数据库、单个关系表(所有行和所有列)、关系表中特定列(所有行)、关系表中的特定行(所有列)以及关系表的特定行和特定列。数据的所有访问模式和类型如下:插入或建立。在文件中添加数据,不销毁任何数据。读取。用户可通过应用程序或数据库查询,将数据从数据库复制到用户环境。更新。编写更新值。删除。删除和销毁特定数据库对象。移动。移动数据对象,但没有读取内容的权限。执行。使用执行需要的权限,运行程序或过程。确认存在性。确认数据库是否存在特定数据库对象。任意控制(DAC)采用该方法以若干种指派模式授予各个用户访问特定数据项的权限或权力。基于权限说明,用户能以读取、更新、插入或删除模式随意访问数据项。建立数据库对象的用户自动得到此对象的所有访问权限,包括将此对象的权限再授予他人。在授予或撤消访问权限时,有两种主要级别:数据库对象:数据项或数据元素,一般是基本表或视图用户:可以用一些授权标识符识别的单个用户或用户组授权通常都是在这两种级别上进行。1.授权DBMS提供了功能强大的授权机制,它可以给用户授予各种不同对象(表、视图、存储过程等)的不同使用权限(如Select、update、insert、delete等)。在用户级别,可以授予数据库模式和数据操纵方面的以下几种授权,包括:创建和删除索引、创建新关系、添加或删除关系中的属性、删除关系、查询数据、插入新数据、修改数据、删除数据等。在数据库对象级别,可将上述访问权限应用于数据库、基本表、视图和列等。2.数据库角色如果要给成千上万个雇员分配许可,将面临很大的管理难题,每次有雇员到来或者离开时,就得有人分配或去除可能与数百张表或视图有关的权限。这项任务很耗时间而且非常容易出错。即使建立SQL过程来帮忙,也几乎需要时时去维护。一个相对特别简单有效的解决方案就是定义数据库角色。数据库角色是被命名的一组与数据库操作相关的权限,角色是一组相关权限的集合。因此,可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。先创建一个角色,并且把需要的许可分配给角色,而不是分配给个人用户,然后再把角色分配给特定用户。当有新的雇员到来时,把角色添加给用户就提供了所有必要的权限。授权管理机制如图4-3所示。DBADBA角色用户用户用户用户授权授权强制控制(MAC)强制访问控制模型基于与每个数据项和每个用户关联的安全性标识(SecurityLabel)。安全性标识被分为若干级别:绝密(TopSecret)、机密(Secret)、秘密(Confidential)、一般(Public)。数据的标识称为密级(SecurityClassification),用户的标识称为许可级别证(SecurityClearance)。在计算机系统中,每个运行的程序继承用户的许可证级别,也可以说,用户的许可证级别不仅仅应用于作为人的用户,而且应用于该用户运行的所有程序。当某一用户以某一密级进入系统时,在确定该用户能否访问系统上的数据时应遵守如下规则:当且仅当用户许可证级别大于等于数据的密级时,该用户才能对该数据进行读操作。当且仅当用户的许可证级别小于或等于数据的密级时,该用户才能对该数据进行写操作。第二条规则表明用户可以为其写入的数据对象赋予高于自己许可证级别的密级,这样的数据被写入后用户自己就不能再读该数据对象了。这两种规则的共同点在于它们禁止了拥有高级许可证级别的主体更新低密级的数据对象,从而防止了敏感数据的泄露。基于角色的存取控制(RBAC)RBAC在主体和权限之间增加了一个中间桥梁——角色。权限被授予角色,而管理员通过指定用户为特定角色来为用户授权。从而大大简化了授权管理,具有强大的可操作性和可管理性。角色可以根据组织中的不同工作创建,然后根据用户的责任和资格分配角色,用户可以轻松地进行角色转换。而随着新应用和新系统的增加,角色可以分配更多的权限,也可以根据需要撤销相应的权限。RBAC核心模型包含了5个基本的静态集合,即用户集(users)、角色集(roles)、特权集
(perms)(包括对象集(objects)和操作集(operators)),以及一个运行过程中动态维护的集合,即会话集(sessions),如图1-1所示。用户集包括系统中可以执行操作的用户,是主动的实体;对象集是系统中被动的实体,包含系统需要保护的信息;操作集是定义在对象上的一组操作,对象上的一组操作构成了一个特权;角色则是RBAC模型的核心,通过用户分配(UA)和特权分配(PA)使用户与特权关联起来。RBAC属于策略中立型的存取控制模型,既可以实现自主存取控制策略,又可以实现强制存取控制策略。它可以有效缓解传统安全管理处理瓶颈问题,被认为是一种普遍适用的访问控制模型,尤其适用于大型组织的有效的访问控制机制。视图机制几乎所有的DBMS都提供视图机制。视图不同于基本表,它们不存储实际数据,数据库表存储数据,视图好象数据库表的窗口,是虚拟表。当用户通过视图访问数据时,是从基本表获得数据,但只是由视图中定义的列构成。视图提供了一种灵活而简单的方法,以个人化方式授予访问权限,是强大的安全工具。在授予用户对特定视图的访问权限时,该权限只用于在该视图中定义的数据项,而未用于完整基本表本身。因此,在使用视图的时候不用担心用户会无意地删除数据或者给真实表中添加有害的数据,并且可以限制用户只能使用指定部分的数据,增加了数据的保密性和安全性。数据库加密概述由于数据库在操作系统中以文件形式管理,所以入侵者可以直接利用操作系统的漏洞窃取数据库文件,或者篡改数据库文件内容。另一方面,数据库管理员(DBA)可以任意访问所有数据,往往超出了其职责范围,同样造成安全隐患。因此,数据库的保密问题不仅包括在传输过程中采用加密保护和控制非法访问,还包括对存储的敏感数据进行加密保护,使得即使数据不幸泄露或者丢失,也难以造成泄密。同时,数据库加密可以由用户用自己的密钥加密自己的敏感信息,而不需要了解数据内容的数据库管理员无法进行正常解密,从而可以实现个性化的用户隐私保护。对数据库加密必然会带来数据存储与索引、密钥分配和管理等一系列问题,同时加密也会显著地降低数据库的访问与运行效率。保密性与可用性之间不可避免地存在冲突,需要妥善解决二者之间的矛盾。数据库中存储密文数据后,如何进行高效查询成为一个重要的问题。查询语句一般不可以直接运用到密文数据库的查询过程中,一般的方法是首先解密加密数据,然后查询解密数据。但由于要对整个数据库或数据表进行解密操作,因此开销巨大。在实际操作中需要通过有效的查询策略来直接执行密文查询或较小粒度的快速解密。一般来说,一个好的数据库加密系统应该满足以下几个方面的要求。①足够的加密强度,保证长时间且大量数据不被破译。②加密后的数据库存储量没有明显的增加。③加解密速度足够快,影响数据操作响应时间尽量短。④加解密对数据库的合法用户操作(如数据的增、删、改等)是透明的。⑤灵活的密钥管理机制,加解密密钥存储安全,使用方便可靠。数据库加密的实现机制数据库加密的实现机制主要研究执行加密部件在数据库系统中所处的层次和位置,通过对比各种体系结构的运行效率、可扩展性和安全性,以求得最佳的系统结构。按照加密部件与数据库系统的不同关系,数据库加密机制可以从大的方面分为库内加密和库外加密。(1)库内加密库内加密在DBMS内核层实现加密,加/解密过程对用户与应用透明,数据在物理存取之前完成加/解密工作。这种方式的优点是加密功能强,并且加密功能集成为DBMS的功能,可以实现加密功能与DBMS之间的无缝耦合。对于数据库应用来说,库内加密方式是完全透明的。库内加密方式的主要缺点如下。—对系统性能影响比较大,BMS除了完成正常的功能外,还要进行加/解密运算,从而加重了数据库服务器的负载。—密钥管理风险大,加密密钥与库数据保存在服务器中,其安全性依赖于DBMS的访问控制机制。—加密功能依赖于数据库厂商的支持,DBMS一般只提供有限的加密算法与强度可供选择,自主性受限。(2)库外加密在库外加密方式中,加/解密过程发生在DBMS之外,DBMS管理的是密文。加/解密过程大多在客户端实现,也有的由专门的加密服务器或硬件完成。与库内加密方式相比,库外加密的明显优点如下。—由于加/解密过程在客户端或专门的加密服务器实现,所以减少了数据库服务器与DBMS的运行负担。—可以将加密密钥与所加密的数据分开保存,提高了安全性。—由客户端与服务器的配合,可以实现端到端的网上密文传输。库外加密的主要缺点是加密后的数据库功能受到一些限制,例如加密后的数据无法正常索引。同时数据加密后也会破坏原有的关系数据的完整性与一致性,这些都会给数据库应用带来影响。在目前新兴的外包数据库服务模式中,数据库服务器由非可信的第三方提供,仅用来运行标准的DBMS,要求加密解密都在客户端完成。数据库加密的粒度一般来说,数据库加密的粒度可以有4种,即表、属性、记录和数据元素。不同加密粒度的特点不同,总的来说,加密粒度越小,则灵活性越好且安全性越高,但实现技术也更为复杂,对系统的运行效率影响也越大。(1)表加密表级加密的对象是整个表,这种加密方法类似于操作系统中文件加密的方法。即每个表与不同的表密钥运算,形成密文后存储。这种方式最为简单,但因为对表中任何记录或数据项的访问都需要将其所在表的所有数据快速解密,因而执行效率很低,浪费了大量的系统资源。在目前的实际应用中,这种方法基本已被放弃。(2)属性加密属性加密又称为“域加密”或“字段加密”,即以表中的列为单位进行加密。一般而言,属性的个数少于记录的条数,需要的密钥数相对较少。如果只有少数属性需要加密,属性加密是可选的方法。(3)记录加密记录加密是把表中的一条记录作为加密的单位,当数据库中需要加密的记录数比较少时,采用这种方法是比较好的。(4)数据元素加密数据元素加密是以记录中每个字段的值为单位进行加密,数据元素是数据库中最小的加密粒度。采用这种加密粒度,系统的安全性与灵活性最高,同时实现技术也最为复杂。不同的数据项使用不同的密钥,相同的明文形成不同的密文,抗攻击能力得到提高。不利的方面是,该方法需要引入大量的密钥。一般要周密设计自动生成密钥的算法,密钥管理的复杂度大大增加,同时系统效率也受到影响。在目前条件下,为了得到较高的安全性和灵活性,采用最多的加密粒度是数据元素。为了使数据库中的数据能够充分而灵活地共享,加密后还应当允许用户以不同的粒度进行访问。加密算法加密算法是数据加密的核心,一个好的加密算法产生的密文应该频率平衡,随机无重码,周期很长而又不可能产生重复现象。窃密者很难通过对密文频率,或者重码等特征的分析获得成功。同时,算法必须适应数据库系统的特性,加/解密,尤其是解密响应迅速。常用的加密算法包括对称密钥算法和非对称密钥算法。对称密钥算法的特点是解密密钥和加密密钥相同,或解密密钥由加密密钥推出。这种算法一般又可分为两类,即序列算法和分组算法。序列算法一次只对明文中的单个位或字节运算;分组算法是对明文分组后以组为单位进行运算,常用有DES等。非对称密钥算法也称为“公开密钥算法”,其特点是解密密钥不同于加密密钥,并且从解密密钥推出加密密钥在计算上是不可行的。其中加密密钥公开,解密密钥则是由用户秘密保管的私有密钥。常用的公开密钥算法有RSA等。目前还没有公认的专门针对数据库加密的加密算法,因此一般根据数据库特点选择现有的加密算法来进行数据库加密。一方面,对称密钥算法的运算速度比非对称密钥算法快很多,二者相差大约2~3个数量级;另一方面,在公开密钥算法中,每个用户有自己的密钥对。而作为数据库加密的密钥如果因人而异,将产生异常庞大的数据存储量。因此,在数据库加密中一般采取对称密钥的分组加密算法。密钥管理对数据库进行加密,一般对不同的加密单元采用不同的密钥。以加密粒度为数据元素为例,如果不同的数据元素采用同一个密钥,由于同一属性中数据项的取值在一定范围之内,且往往呈现一定的概率分布,因此攻击者可以不用求原文,而直接通过统计方法即可得到有关的原文信息,这就是所谓的统计攻击。大量的密钥自然会带来密钥管理的问题。根据加密粒度的不同,系统所产生的密钥数量也不同。越是细小的加密粒度,所产生的密钥数量越多,密钥管理也就越复杂。良好的密钥管理机制既可以保证数据库信息的安全性,又可以进行快速的密钥交换,以便进行数据解密。对数据库密钥的管理一般有集中密钥管理和多级密钥管理两种体制,集中密钥管理方法是设立密钥管理中心。在建立数据库时,密钥管理中心负责产生密钥并对数据加密,形成一张密钥表。当用户访问数据库时,密钥管理机构核对用户识别符和用户密钥。通过审核后,由密钥管理机构找到或计算出相应的数据密钥。这种密钥管理方式方便用户使用和管理,但由于这些密钥一般由数据库管理人员控制,因而权限过于集中。目前研究和应用比较多的是多级密钥管理体制,以加密粒度为数据元素的三级密钥管理体制为例,整个系统的密钥由一个主密钥、每个表上的表密钥,以及各个数据元素密钥组成。表密钥被主密钥加密后以密文形式保存在数据字典中,数据元素密钥由主密钥及数据元素所在行、列通过某种函数自动生成,一般不需要保存。在多级密钥体制中,主密钥是加密子系统的关键,系统的安全性在很大程度上依赖于主密钥的安全性。数据库加密的局限性数据库加密技术在保证安全性的同时,也给数据库系统的可用性带来一些影响。(1)系统运行效率受到影响数据库加密技术带来的主要问题之一是影响效率。为了减少这种影响,一般对加密的范围做一些约束,如不加密索引字段和关系运算的比较字段等。(2)难以实现对数据完整性约束的定义数据库一般都定义了关系数据之间的完整性约束,如主/外键约束及值域的定义等。数据一旦加密,DBMS将难以实现这些约束。(3)对数据的SQL语言及SQL函数受到制约SQL语言中的Groupby、Orderby及Having子句分别完成分组和排序等操作,如果这些子句的操作对象是加密数据,那么解密后的明文数据将失去原语句的分组和排序作用。另外,DBMS扩展的SQL内部函数一般也不能直接作用于密文数据。(4)密文数据容易成为攻击目标加密技术把有意义的明文转换为看上去没有实际意义的密文信息,但密文的随机性同时也暴露了消息的重要性,容易引起攻击者的注意和破坏,从而造成了一种新的不安全性。加密技术往往需要和其他非加密安全机制相结合,以提高数据库系统的整体安全性。数据库加密作为一种对敏感数据进行安全保护的有效手段,将得到越来越多的重视。总体来说,目前数据库加密技术还面临许多挑战,其中解决保密性与可用性之间的矛盾是关键。审计“审计”功能是DBMS达到C2以上安全级别必不可少的一项指标。因为任何系统的安全措施都是不完美的,蓄意盗窃、破坏数据的人总是想方设法打破控制。审计通常用于下列情况:审查可疑的活动。例如:当出现数据被非授权用户所删除、用户越权操作或权限管理不正确时,安全管理员可以设置对该数据库的所有连接进行审计,和对数据库中所有表的操作进行审计。监视和收集关于指定数据库活动的数据。例如:DBA可收集哪些表经常被修改、用户执行了多少次逻辑I/O操作等统计数据,为数据库优化与性能调整提供依据。对DBA而言,审计就是记录数据库中正在做什么的过程。审计记录可以告诉你正在使用哪些系统权限,使用频率是多少,多少用户正在登录,会话平均持续多长时间,正在特殊表上使用哪些命令,以及许多其他有关事实。审计能帮助DBA完成的操作类型包括:为管理程序准备数据库使用报表(每天/周连接多少用户,每月发出多少查询,上周添加或删除了多少雇员记录)。如果怀疑有黑客活动,记录企图闯入数据库的失败尝试。确定最繁忙的表,它可能需要额外的调整。调查对关键表的可疑更改。从用户负载方面的预期增长,规划资源消耗。审计功能把用户对数据库的所有操作自动记录下来放入审计日志(AuditLog)中。审计日志一般包括下列内容:操作类型(如修改、查询等)。操作终端标识与操作人员标识。操作日期和时间。操作的数据对象(如表、视图、记录、属性等)。数据修改前后的值。DBA可以利用审计跟踪的功能,重现导致数据库现状的一系列事件,找出非法存取数据的人、时间和内容等。审计通常比较费时间和空间,所以DBMS往往都将其作为可选特征,允许DBA根据应用对安全性的要求,灵活地打开或关闭审计功能。审计功能一般主要用于安全性要求较高的部门。审计一般可以分为用户级审计和系统级审计。用户级审计是任何用户可设置的审计,主要是针对自己创建的数据库或视图进行审计,记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作。系统级审计只能由DBA设置,用以监测成功或失败的登录要求、监测Grant和Revoke操作以及其他数据库级权限下的操作。备份与恢复一个数据库系统总是避免不了故障的发生。安全的数据库系统必须能在系统发生故障后利用已有的数据备份,恢复数据库到原来的状态,并保持数据的完整性和一致性。数据库系统所采用的备份与恢复技术,对系统的安全性与可靠性起着重要作用,也对系统的运行效率有着重大影响。数据库备份常用的数据库备份的方法有如下3种。(1)冷备份冷备份是在没有终端用户访问数据库的情况下关闭数据库并将其备份,又称为“脱机备份”。这种方法在保持数据完整性方面显然最有保障,但是对于那些必须保持每天24小时、每周7天全天候运行的数据库服务器来说,较长时间地关闭数据库进行备份是不现实的。(2)热备份热备份是指当数据库正在运行时进行的备份,又称为“联机备份”。因为数据备份需要一段时间,而且备份大容量的数据库还需要较长的时间,那么在此期间发生的数据更新就有可能使备份的数据不能保持完整性,这个问题的解决依赖于数据库日志文件。在备份时,日志文件将需要进行数据更新的指令“堆起来”,并不进行真正的物理更新,因此数据库能被完整地备份。备份结束后,系统再按照被日志文件“堆起来”的指令对数据库进行真正的物理更新。可见,被备份的数据保持了备份开始时刻前的数据一致性状态。热备份操作存在如下不利因素。—如果系统在进行备份时崩溃,则堆在日志文件中的所有事务都会被丢失,即造成数据的丢失。—在进行热备份的过程中,如果日志文件占用系统资源过大,如将系统存储空间占用完,会造成系统不能接受业务请求的局面,对系统运行产生影响。—热备份本身要占用相当一部分系统资源,使系统运行效率下降。(3)逻辑备份逻辑备份是指使用软件技术从数据库中导出数据并写入一个输出文件,该文件的格式一般与原数据库的文件格式不同,而是原数据库中数据内容的一个映像。因此逻辑备份文件只能用来对数据库进行逻辑恢复,即数据导入,而不能按数据库原来的存储特征进行物理恢复。逻辑备份一般用于增量备份,即备份那些在上次备份以后改变的数据。数据库恢复在系统发生故障后,把数据库恢复到原来的某种一致性状态的技术称为“恢复”,其基本原理是利用“冗余”进行数据库恢复。问题的关键是如何建立“冗余”并利用“冗余”实施数据库恢复,即恢复策略。数据库恢复技术一般有3种策略,即基于备份的恢复、基于运行时日志的恢复和基于镜像数据库的恢复。(1)基于备份的恢复基于备份的恢复是指周期性地备份数据库。当数据库失效时,可取最近一次的数据库备份来恢复数据库,即把备份的数据拷贝到原数据库所在的位置上。用这种方法,数据库只能恢复到最近一次备份的状态,而从最近备份到故障发生期间的所有数据库更新将会丢失。备份的周期越长,丢失的更新数据越多。(2)基于运行时日志的恢复运行时日志文件是用来记录对数据库每一次更新的文件。对日志的操作优先于对数据库的操作,以确保记录数据库的更改。当系统突然失效而导致事务中断时,可重新装入数据库的副本,把数据库恢复到上一次备份时的状态。然后系统自动正向扫描日志文件,将故障发生前所有提交的事务放到重做队列,将未提交的事务放到撤销队列执行,这样就可把数据库恢复到故障前某一时刻的数据一致性状态。(3)基于镜像数据库的恢复数据库镜像就是在另一个磁盘上复制数据库作为实时副本。当主数据库更新时,DBMS自动把更新后的数据复制到镜像数据,始终使镜像数据和主数据保持一致性。当主库出现故障时,可由镜像磁盘继续提供使用,同时DBMS自动利用镜像磁盘数据进行数据库恢复。镜像策略可以使数据库的可靠性大为提高,但由于数据镜像通过复制数据实现,频繁的复制会降低系统运行效率,因此一般在对效率要求满足的情况下可以使用。为兼顾可靠性和可用性,可有选择性地镜像关键数据。数据库的备份和恢复是一个完善的数据库系统必不可少的一部分,目前这种技术已经广泛应用于数据库产品中,如Oracle数据库提供对联机备份、脱机备份、逻辑备份、完全数据恢复及不完全数据恢复的全面支持。据预测,以“数据”为核心的计算(DataCentricComputing)将逐渐取代以“应用”为核心的计算。在一些大型的分布式数据库应用中,多备份恢复和基于数据中心的异地容灾备份恢复等技术正在得到越来越多的应用。聚合、推理与多实例数据库安全中,用户根据低密级的数据和模式的完整性约束推导出高密级的数据,造成未经授权的信息泄露,其主要有两种方式:推理和聚合。聚合(Aggregation)聚合是指这种情形:如果用户没有访问特定信息的权限,但是他有访问这些信息的组成部分的权限。这样,她就可以将每个组成部分组合起来,得到受限访问的信息。用户可以通过不同的途径得到信息,通过综合就可以得到本没有明确访问权限的信息。注意:聚合(Aggregation)指的是组合不同来源的信息的行为。用户没有明确的权限可以访问组合起来得到的信息,而组合得到的信息比信息的各个组成部分拥有更高的机密性。下面是一个简单的概念化例子。假设数据库管理员不想让Users组的用户访问一个特定的句子“Thechickenworefunnyredculottes.”,他将这个句子分成六个部分,限制用户访问。如图:Emily可以访问A、C、F三个部分,由于她是个特别聪明的人,她可以根据这三个部分结合起来得出这个句子的部分。为了防止聚合,需要防止主体和任何主体的应用程序和进程获得整个数据集合的权限,包括数据集合的各个独立组成部分。客体可以进行分类并赋予较高的级别,存储在容器中,防止低级别权限的主体访问。对主体的查询,可以进行跟踪,并实施基于上下文的分类。这将记录主体对客体的访问历史,并在聚合攻击发生时限制访问企图。推理(Inference)推理(Inference)和聚合很相似。推理指的是主体通过他可以访问的信息推理出受限访问的信息。当可以由安全级别较低的数据描述出较高级别的数据时,就会发生推理攻击。注意:推理是得到不是显性可用的信息的能力。例如,如果一个职员不应该知道军队在沙特阿拉伯的行动计划,但是他可以访问到食品需求表格和帐篷位置的文档,那么他就可以根据食品和帐篷运送的目的地推算出军队正在向Dubia地区移动。在文档安全性分类中,食品需求和帐篷位置文档是机密文档(Confidential),而军队行动计划是绝密文档(TopofSecret)。由于不同的分类,这个职员可以根据他知道的信息推理出他不应该知道的秘密。常见的推理通道有以下4种。①执行多次查询,利用查询结果之间的逻辑联系进行推理。用户一般先向数据库发出多个查询请求,这些查询大多包含一些聚集类型的函数(如合计和平均值等)。然后利用返回的查询结果,在综合分析的基础上推断出高级数据信息。②利用不同级别数据之间的函数依赖进行推理分析,数据表的属性之间常见的一种关系是“函数依赖”和“多值依赖”。这些依赖关系有可能产生推理通道,如同一病房的病人患的是同一种病,以及由参加会议的人员可以推得参与会议的公司等。③利用数据完整性约束进行推理,例如关系数据库的实体完整性要求每一个元组必须有一个惟一的键。当一个低安全级的用户想在一个关系中插入一个元组,并且这个关系中已经存在一个具有相同键值的高安全级元组,那么为了维护实体的完整性,DBMS会采取相应的限制措施。低级用户由此可以推出高级数据的存在,这就产生了一条推理通道。④利用分级约束进行推理。一条分级约束是一条规则,它描述了对数据进行分级的标准。如果这些分级标准被用户获知的话,用户有可能从这些约束自身推导出敏感数据。一个办法是防止主体或者与主体有关的应用程序和进程间接得到能推论的信息。在数据库开发过程中,可以实施基于内容或者基于上下文的分类规则来解决这个问题,对主体的查询请求进行跟踪,限制可以进行推理的查询模式。防止推理攻击的一种措施叫做单元抑制(CellSuppression),采用数据库分隔,或者噪声和扰动。单元抑制时一种用来隐藏或者不显示特定存储单元的内容,防止这些信息被用来进行推理攻击。分隔数据库(Partitioningadatabase)包括将数据库分成不同的部分,使未授权用户很难访问到可以用于推理攻击的相关的数据。噪声和扰动是一种在数据库中插入伪造信息的技术,目的是为了误导和迷惑攻击者,使得真实的推理攻击不能成功。
多实例(Polyinstantiation)有的时候,不希望低安全级别的用户访问和修改高安全级别的数据。有不同的方法处理这种情况。一种方法是当低级别用户访问高级别数据时,拒绝访问。然而,这就相对于间接告诉访问者他要访问的对象中包含敏感信息。另一种处理方法是多实例(Polyinstantiation)。多实例建立了相同主键的多元组和由安全级别定义的实例之间的关系。当一条信息插入到数据库中时,需要限制低级别用户访问这条信息。通过建立另一组数据迷惑低级别用户,使用户认为他得到的信息是真实的,而不是仅仅限制信息的访问。例如,海军基地有一艘租用Oklahoma船舶公司从Delaware到Ukraine的运载武器的货船,这种类型的信息应该划为绝密信息(TopofSecret)。只有声明拥有绝密信息权限的人才可以访问。可以创建一个虚假信息文件,内容是Oklahoma船舶公司有一艘从Delaware到非洲的食品货运船,如表11-1。很明显,Oklahoma的船只已经离开,但是低安全级别的用户以为船去了非洲,而不是到Ukraine。这就保证低安全级别的用户不去试图过问这艘船的真正使命,他们已经知道这艘船已经没有意义了,而去寻找其它运输武器的船只了。注意:多实例是通过变化值或者其它属性来交互生成客体详细信息的过程。一个为低安全级别用户提供替代信息的多实例(Polyinstantiation)例子:多实例为同一客体创建了两种不同的视图,因此低级别的用户无从知道真正的信息,同时也阻止了他试图进一步以其它途径获得真正的信息。多实例是一种为没有相应安全级别的用户提供替代信息的方法。xx大学计算机与信息技术学院实验报告姓名学号专业班级课程名称数据库系统概论实验日期成绩指导教师批改日期实验名称数据库的安全与权限实验内容[目的和意义]•理解SQLServer身份验证模式•学会创建和管理登录帐户和用户帐户;•学会创建和管理服务器角色和数据库角色•学会授予、拒绝和撤销权限的方法[实验内容]•设置验证模式,熟悉系统登录验证过程。•登录管理•用户管理•角色管理•权限管理[实现步骤]•SQLServer的安全管理假若你是SQLServer2005数据库服务器的管理员,服务器中包含7个用户数据库,它们为学校的多个部门应用程序提供数据,每个部门的用户维护自己的数据库,你需要配置服务器和数据库许可权限,让每个维护自己数据库的用户有足够的权限来管理数据库。你该怎么做呢?你需要为每个用户创建一个账户,把每个账户映射到它们的数据库中,添加所有的用户账户到自己的数据库中的db_owner角色中去。一、两个安全性阶段在SQLServer2005中工作时,用户要经过两个安全性阶段:身份验证和权限验证(授权)。每个用户必须通过登录账户建立自己的连接能力(身份验证),以获得对SQLServer2005实例的访问权限。然后,该登录必须映射到用于控制在数据库中所执行的活动(权限验证)的SQLServer用户账户。如果数据库中没有用户账户,则即使用户能够连接到SQLServer实例,也无法访问数据库。二、两种安全验证模式SQLServer提供了两种安全验证模式,即Windows身份验证模式和混合身份验证模式(也称SQLServer身份验证模式),数据库设计者和数据库管理员可以根据实际情况进行选择。1、Windows身份验证模式Windows身份验证模式是指用户通过Windows用户账户连接到SQLServer,即用户身份由Windows系统来验证。SQLServer使用Windows操作系统中的信息验证账户名和密码。这是默认的身份验证模式,比混合验证模式安全得多。一般情况下,客户机都支持混合信任连接,建议使用Windows身份验证方式。使用Windows身份验证有如下特点。(1)Windows验证模式下由Windows管理登录账户,数据库管理员主要是使用该账户。(2)Windows有功能很强的工具与技术去管理用户的登录账户。(3)可以在SQLServer中增加用户组,可以使用用户组。2、混合身份验证模式(也称SQLServer身份验证模式)混合身份验证模式允许用户使用Windows身份和SQLServer身份进行连接。通过Windows登录账户连接的用户可以使用Windows验证的受信任连接。当用户使用指定的登录名称和密码进行非信任连接时,SQLServer检测输入的登录名和密码是否与系统表syslogins中记录的情况相同,据此进行身份验证。如果不存在该用户的登录账户,则身份验证失败。用户只有提供正确的登录名和密码,才能通过SQLServer的验证。提供SQLServer身份验证是为了考虑非Windows客户兼容及向后兼容,早期SQLServer的应用程序可能要求使用SQLServer登录和密码。当SQLServer实例在Windows98/Windows2000professional上运行时,由于Windows98/Windows2000professional不支持Windows身份验证模式,必须使用混合模式。非Windows客户端也必须使用SQLServer身份验证。混合身份验证模式有如下特点。(1)混合模式允许非Windows客户、Internet客户和混合的客户组连接到SQLServer中。(2)增加了完全性方面的选择。如果必须选择“混合身份验证模式”并要求使用SQL登录以适应旧式应用程序,则必须为所有SQL账户设置强密码。这对于属于sysadmin角色的账户(特别是sa账户)尤其重要。3、设置验证模式安装SQLServer2005默认的是Windows身份验证模式。系统管理员在managementstudio中有两种设置方法(参看实验指导),均需要重新启动SQLServer后,才能生效。三、登录管理1、系统管理员登录账户SQLServer有两个默认的系统管理员登录账户:sa和administrators。这两个登录账户具有SQLServer系统和所有数据库的全部权限。在安装SQLServer之后,自动创建的登录标识符只有系统管理员sa账户和administrators账户,administrators是Windows系统的系统管理员组。sa是一个特殊的登录名,它代表SQLServer身份验证机制下SQLServer的系统管理员,sa始终关联dbo(dbo是默认的用户账号,就是指数据库的创建者)数据库用户,并且没有为sa指定口令。这意味着如果SQLServer身份验证模式,任何得知这个SQLServer存在的人都可以登录到SQLServer上,并且可以做任意操作。为安全起见,在安装SQLServer后,应尽快地给系统管理员账户指定口令。为SQLServer系统管理员指定口令的步骤如下。(1)在“对象资源管理器”窗口中某数据库引擎下。(2)分别展开“安全性”、“登录名”节点,查看所有当前存在的登录标示符,系统管理员账户sa应包含在其中。(3)右击sa,然后选择“属性”项,系统弹出“登录属性”窗口。(4)在“密码”一栏中输入新的口令,并在“确认密码”一栏再次输入相同“密码”。(5)在“默认数据库”一栏输入sa默认使用的数据库。(6)单击“确定”按钮,系统关闭对话框,这样完成了为系统管理员设置新口令操作。2、使用managementstudio管理SQLServer登录账户在managementstudio中能方便地创建、查看、修改、删除登录账户。有如下两种方式创建SQLServer登录账户(1和2)。(1)映射Windows登录账户为SQLServer登录账户在managementstudio中可以将一个Windows账户或一个组映射成一个SQLServer登录名。每个SQLServer登录名都可以在指定的数据库中创建数据库用户名。这个特性可以让Windows组中的用户直接访问服务器上的数据库。至于这些指定的数据库用户的权限,可以另行指定的。提示:Windows账户应是已经存在的。具体步骤(参看实验指导)。(在用户映射选项卡中,选定某数据库后用户名默认与登录名一样,也可设定为不一样的。)(2)在managementstudio中创建SQLServer登录账户提示:首先需将验证模式设置为SQLServer验证模式。具体步骤参看实验指导。(在用户映射选项卡中,选定某数据库后用户名默认与登录名一样,也可设定为不一样的。)注意:在创建登录名时,在点击“新建登录名”后,进入“登录名-新建”对话框时,选择的默认数据库要与用户映射选项卡中选择的数据库一致,再去掉“强制实施密码策略”的对勾即可创建成功。在通过新创建的登录名连接SQLServer后,会发现只能访问和打开所选的数据库,而其他数据库无法访问和打开。(3)在ManagementStudio中查看、修改或删除登录账户具体步骤(参看实验指导)四、用户管理用户是基于数据库的名称,是和登录账户相关联的。1、登录名与数据库用户名的关系登录名、数据库用户名是SQLServer中两个容易混淆的概念。登录名是访问SQLServer的通行证。每个登录名的定义存放在master数据库的表syslogins(登录名是服务器级的)中。登录名本身并不能让用户访问服务器中的数据库资源。要访问具体数据库中的资源,还必须有该数据库的用户名。新的登录创建以后,才能创建数据库用户,数据库用户在特定的数据库内创建,必须和某个登录名相关联。数据库用户的定义信息存放在与其相关的数据库的sysusers表(用户名是数据库级的)中的,这个表包含了该数据库的所有用户对象以及和它们相对应的登录名的标识。用户名没有密码和它相关联,大多数情况下,用户名和登录名使用相同的名称,数据库用户名主要用于数据库权限的控制。就如同企业门口先刷卡进入(登录服务器),然后再拿钥匙打开自己的办公室(进入数据库)一样。数据库用户创建后,通过授予用户权限来指定用户访问特定对象的权限。用户用一个登录名登录SQLServer,以数据库用户的身份访问服务器上的数据库。当一个登录账户试图访问某个数据库时,SQLServer将在库中的sysusers表中查找对应的用户名,如果登录名不能映射到数据库的某个用户,系统尝试将该登录名映射成guest用户,如果当前数据库不许可guest用户,这个用户访问数据库将失败。在SQLServer中,登录账户和数据库用户是SQLServer进行权限管理的两种不同的对象。一个登录账户可以与服务器上的所有数据库进行关联,而数据库用户是一个登录账户在某数据库中的映射,也即一个登录账户可以映射到不同的数据库,产生多个数据库用户(但一个登录账户在一个数据库至多只能映射一个数据库用户),一个数据库用户只能映射到一个登录账户。允许数据库为每个用户分配不同的权限,这一特性为在组内分配权限提供了最大的自由度与可控性。2、使用ManagementStudio管理数据库用户管理数据库用户包括对数据库的创建、查看、修改、删除等管理操作。首先如何创建数据库用户呢?一般有两种方法。一种是在创建登录帐户的同时指定该登录帐户允许访问的数据库,同时生成该登录帐户在数据库中的用户。如前面使用ManagementStudio创建登录帐户时就能完成数据库用户的创建;另一种方法是先创建登录帐户,再将登录帐户映射到某数据库,在其中创建同名用户名(具体步骤参看实验指导)。五、角色管理SQLServer2005数据库管理系统利用角色设置,管理用户的权限。通过角色,可以将用户集中到一个单元中,然后对这个单元应用权限。对角色授予、拒绝或吊销权限时,将对其中的所有成员生效。角色的功能非常强大,其原因如下。(1)除固定的服务器角色外,其他角色都是在数据库内实现的。这意味着数据库管理员无需依赖Windows管理员来组织用户。(2)角色可以嵌套。嵌套的深度没有限制,但不允循环嵌套。(3)数据库用户可以同时是多个角色的成员。这样只对角色进行权限设置便可以实现对所有用户权限的设置,大大减少了管理员的工作量。在SQLServer2005中,可以认为有5中角色类型。1、public角色Public角色在每个数据库(包括所有的系统数据库)中都存在,它也是数据库角色成员。Public角色提供数据库中用户的默认权限,不能删除。每个数据库用户都自动是次角色的成员,因此,无法在此角色中添加或删除用户。当尚未对某个用户授予或拒绝对安全对象的特定权限时,则该用户将继承授予该安全对象在public角色中对应的权限。SQLServer2005包括几个预定义的角色,这些角色具有预定义的、不能授予其他用户账户的内在的权限。其中有两种最主要的预定义角色是:固定服务器角色和固定数据库角色。2、固定服务器角色固定服务器角色的作用域在服务器范围内。它们存在于数据库之外,固定服务器角色的每个成员都能够向该角色中添加其他登录。打开ManagementStudio,用鼠标单击“对象资源管理器”窗口中某数据库引擎的“安全性”目录下的“服务器角色”,显示当前数据库服务器的所有服务器角色,共有8个,具体名称及角色描述如下。(1)bulkadmin角色成员:可以运行bulkinsert语句。(2)dbcreator角色成员:可以创建、更改、删除和还原任何数据库。(3)diskadmin角色成员:用于管理磁盘文件。(4)processadmin角色成员:可以终止SQLServer实例中运行的进程。(5)securityadmin角色成员:将管理登录名及其属性。它们可以grant、deny和revoke服务器级权限。也可以grant、deny和revoke数据库级权限。另外,它们可以重置SQLServer登录名的密码。(6)serveradmin角色成员:可以更改服务器范围配置选项和关闭服务器。(7)setupadmin角色成员:可以添加和删除链接服务器,并且也可以执行某些系统存储过程。(8)sysadmin角色成员:可以在服务器中执行任何活动。默认情况下,windowsadministrators组(即本地管理员组)的所有成员都是sysadmin固定服务器角色的成员。固定服务器角色成员的添加与删除(有两种方法,具体步骤参看实验指导)3、数据库角色固定数据库角色在数据库级别定义以及每个数据库中都存在。Db_owner和db_security管理员角色的成员可以管理固定数据库角色的成员身份。但是,只有Db_owner角色可以将其他用户添加到Db_owner固定数据库角色中。打开ManagementStudio,用鼠标单击“对象资源管理器”窗口中某数据库下的“安全性”目录下的“角色”的“数据库角色”,显示的所有数据库角色,共有10个,具体名称及角色描述如下。(1)db_accessadmin:可以为Windows登录账户、Windows组和SQLServer登录账户添加或删除访问权限。(2)db_backupoperator:可以备份该数据库。(3)db_datareader:可以读取所有用户表中的所有数据。(4)db_datawriter:可以在所有用户表中添加、删除或更改数据。(5)db_ddladmin:可以在数据库中运行任何数据定义语言(DDL)命令。(6)db_denydatareader:不能读取数据库内用户表中的任何数据。(7)db_denywriter:不能添加、修改或删除数据库内用户表中的任何数据。(8)db_owner:可以执行数据库的所有配置和维护活动。(9)db_securityadmin:可以修改角色成员身份和管理权限。固定数据库角色到权限有映射关系,请参阅联机帮助查询。固定数据库角色与固定服务器角色不能被删除,用户自定义的角色可以删除。4、用户定义的角色当一组用户执行SQLServer中一组指定的活动时,通过用户定义的角色可以轻松地管理数据库中的权限。在没有合适的Windows组,或数据库管理员无权管理Windows用户账户的情况下,用户定义的角色为数据库管理员提供了与Windows组同等的灵活性。用户定义的角色只适用于数据库级别,并且只对创建时所在的数据库起作用。(1)数据库角色创建、修改与删除(具体步骤参看实验指导)(2)数据库角色成员的添加与删除(具体步骤参看实验指导)5、应用程序角色(略,不作要求)六、权限管理(数据库应用技术SQLServer2005提高篇,参看复印资料)设置安全验证模式——Windows身份验证模式——默认的系统管理员登录账户:administrators。Windows身份混合身份验证模式SQLServer身份——默认的系统管理员登录账户:sa创建SQLServer登录账户——映射Windows登录账户为SQLServer登录账户将验证模式设为SQLServer验证模式,在managementstudio中创建SQLServer登录账户数据库A—1—用户名a1用户名b登录名a1数据库B—1—用户名a1用户名b登录名b数据库C—1—用户名a用户名b1.验证模式安装SQLServer2005默认的是Windows身份验证模式。可能使用ManagementStudio工具来设置验证模式,但设置验证模式的工作只能由系统管理员来完成,以下是在ManagementStudio中的两种设置方法,以下两种方法均需要重新启动SQLServer后,才能生效。方法之一:(1)打开ManagementStudio。(2)在“已注册的服务器”子窗口中要设置验证模式的服务器上单击鼠标右键,然后在弹出的快捷菜单上选择“属性”项,系统弹出“编辑服务器注册属性”窗口。(3)在“常规”选项卡中,“服务器名称”栏按“<服务器名>[\<实例名>]”格式选择要注册的服务器实例“身份验证”栏在连接到SQLServer实例时,可以使用两种身份验证模式:Windows身份验证和SQLServer身份验证(或称混合身份验证)。如图4-1。(4)设置完成后,单击“测试”按钮以确定设置是否正确。(5)单击“保存”按钮,单击对话窗口,完成验证模式的设置或改变。方法之二:(1)在ManagementStudio对象资源管理器中,右键单击服务器,再单击“属性”项。(2)在“安全性”页上的“服务器身份验证”下,选择新的服务器身份验证模式,再单击“确定”按钮。如图4-3。2.帐号和角色1)登录管理使用ManagementStudio管理SQLServer登录账户(1)映射WindowsStudio登录账户为SQLServer登录账户在ManagementStudio中可以将一个Windows账户或一个组映射成一个SQLServer登录名。每个SQLServer登录名都可以在指定的数据库中创建数据库用户名。这个特性可以让Windows组中的用户直接访问服务器上的数据库。至于这些指定的数据库用户的权限,可以另行指定的。使用ManagementStudio将已经存在的Windows账户或组映射到SQLServer中的操作步骤如下:启动ManagementStudio,分别展开“服务器”、“安全性”、“登录名”。右击“登录名”,选择“新建登录名”项,进入“登录名-新建”对话框。选择Windows验证模式,登录名通过按“搜索”按钮来自动产生,单击“搜索”按钮后“选择用户或组”对话框,在对象名称框内直接输入名称或单击“高级”按钮后查找用户或组的名称来完成输入。单击“服务器角色”选项卡,可以查看或更改登录名在固定服务器角色中的成员身份。单击“用户映射”选项卡,以查看或修改SQL登录名到数据库用户的映射,并可选择其在该数据库中允许担任的数据库角色。单击“确定”按钮,一个Windows组或用户即可增加到SQLServer登录账户中去了。(2)在ManagementStudio中创建SQLServer登录账户在ManagementStudio中创建SQLServer登录账户的具体步骤类似于“在ManagementStudio中映射Windows登录账户为SQLServer登录账户”,只是,要选择SQLServer验证模式,这是需要输入登录账户名称、密码及确认密码。其他选项卡的设置操作类似。最后按“确定”按钮,即增加了一个新的登录账户。(3)在ManagementStudio中查看、修改或删除登录账户一个新的登录账户增加后,可以在ManagementStudio中查看其详细信息,并能做修改或删除操作。方法如下:启动ManagementStudio,分别展开“服务器”、“安全性”、“登录名”。如图4-3。单击“登录名”下的某一个登录账户,在系统弹出菜单上单击“属性”项,可进入“登录属性”对话框查看该登录账户的信息,同时需要时能直接修改相应账户设置信息。在上一步系统弹出菜单上单击“删除”菜单,能出现“删除对象”对话框,在对话框上单击“确定”按钮,能删除该登录账户。2)用户管理使用ManagementStudio管理数据库用户管理数据库用户包括对数据库的创建、查看、修改、删除等管理操作。首先如何创建数据库用户呢?一般有两种方法。一种是在创建登录帐户的同时指定该登录帐户允许访问的数据库,同时生成该登录帐户在数据库中的用户。如前面使用ManagementStudio创建登录帐户时就能完成数据库用户的创建;另一种方法是先创建登录帐户,再将登录帐户映射到某数据库,在其中创建同名用户名。(1)在ManagementStudio中创建数据库用户在ManagementStudio中创建数据库用户中创建数据库用户的步骤如下:①启动ManagementStudio,分别展开“服务器”、“数据库”、“KCGL”、“安全性”、“用户”,在“用户”文件夹下能看到该数据库的已有用户。②右击“用户”文件夹,选择“新创建数据库用户”,弹出“数据库用户-新建”对话框。③输入要创建的数据库用户的名字,然后再“登陆名”对应的文本框中输入相对应的登录名,或单击“浏览”按钮,在系统中选择相应的登录名。④单击“确定”按钮,将新创建的数据库用户添加到数据库中。(2)在ManagementStudio中查看、修改或删除数据库用户操作方式是:①启动ManagementStudio,分别展开“服务器”、“数据库”、“KCGL”、“安全性”、“用户”,在“用户”文件夹下能看到该数据库的已有用户。②右击某要操作的用户,在系统弹出的快捷菜单中含有“属性”、“删除”等菜单项。③若选择“属性”菜单项,可以查看或修改用户的权限信息,如“常规”中的“拥有架构”“角色成员”;“安全对象”中的具体权限设置及“扩展属性”等。④若选择“删除”菜单项,可从数据库中删除该用户。3)角色管理固定服务器角色成员的添加与删除固定服务器角色成员的添加与删除操作可以通过ManagementStudio或T-SQL两种方法来操作。在ManagementStudio中添加或删除固定服务器角色成员。:方法一:打开ManagementStudio,用鼠标单击“对象资源管理器”窗口->某数据库引擎->“安全性”->“服务器角色”,显示当前数据库服务器的所有服务器角色,再要添加或删除成员的某固定服务器角色上单击鼠标右键,选择快捷菜单中的“属性”菜单项。在“服务器角色属性”对话框中,能方便单击“添加”或“删除”按钮实现对成员的添加或删除。方法二:打开ManagementStudio,用鼠标单击”对象资源管理器“窗口->某数据库引擎->”安全性“->”登录名“;在某登录名上右击,选择”属性“菜单项,出现”登陆属性“对话框或单击”新建登录名“出现”登陆-新建”对话框;单击“服务器角色”选项卡,能直接多项选择登陆名需要属于的固定服务器角色。这样也完成了对固定服务器角色成员的添加与删除。用户定义的角色(1)数据库角色创建、修改与删除数据库角色的创建、修改与删除操作可以通过ManagementStudio或T-SQL两种方法来操作。在ManagementStudio中创建、修改与删除数据库角色:①打开ManagementStudio,用鼠标单击”对象资源管理器“窗口->某数据库引擎->”数据库“->"某具体数据库"->”安全性“->”角色“->"数据库角色",显示当前数据库的所有数据库角色,在”数据库角色“目录或某数据库角色上单击鼠标右键,单击快捷菜单中的”新建数据库据角色“菜单项。在”数据库角色-新建“对话框中,指定角色名称与所有者,单击”确定“按钮即简单创建了新的数据库角色。②在某数据库角色上单击鼠标右键,单击快捷菜单中的”属性“菜单项。在”数据库角色属性“对话框中,查阅或修改角色信息,如制定新的所有者、安全对象、拥有的架构、角色、角色成员等信息的修改等。③在某自定义数据库角色上单击鼠标右键,单击快捷菜单中的“删除”菜单项。启动“删除对象”来删除数据库角色。但要注意:角色必须为空时才能删除。(2)数据库角色成员的添加与删除数据库角色成员的添加及与删除操作可以通过ManagementStudio或T-SQL两种方法来操作。在ManagementStudio中添加与删除数据库角色成员:方法一:在上面提到过的某数据库角色的“数据库角色属性“对话框中,“常规”选线卡上,右下角色成员操作区,单击“添加”或“删除”按钮实现操作。方法二:通过“对象资源管理器”窗口->某数据库引擎->“数据库”->“某具体数据库”->“安全性”->"用户"->"某具体用户";单击鼠标右击,单击“属性”菜单,出现“数据库用户”对话框,在右下角色成员操作区,通过多选按钮直接实现该用户从某个或某些数据库角色中添加或删除的操作功能。应用程序角色在ManagementStudio中创建与删除数据库程序角色:通过“对象资源管理器”窗口->"数据库引擎"->"数据库"->"某具体数据库"->"安全性"->"角色"->"应用程序角色";单击油表有机,单击“新建应用程序角色”菜单项,出现“应用程序角色新建”对话框,在”常规“选项卡右边指定角色名称‘默认架构、密码、确认密码、角色拥有的架构等信息后,单击”确定“按钮即可。当然在创建应用程序角色的同时,可以指定”安全对象“、”扩展属性“选项卡中的属性。在已有某应用程序角色上单击鼠标右键,再单击“删除”菜单项,能实现角色的删除操作。3.权限管理1)在ManagementStudio中管理权限在ManagementStudio中管理权限是非常方便的,可以从权限相关的主体与安全对象这两者的任意一方出发考虑实现操作。2)在ManagementStudio中管理凭据(1)创建凭据①在对象资源管理器中,展开“安全性”,右击“凭据”,然后单击“新建凭据”项。②在“新建凭据”对话框中的“凭据名称”框中,输入凭据的名称。③在“标识”框中,输入对于对外连接的账户名称(在离开SQLServer的上下文时)。通常为Windows用户账户。但标识可以是其他类型的账户。④在“密码”和“确认密码”框中,输入“标识”框中指定的账户的密码。如果“标识”为Windows用户账户,则密码为Windows密码。如果不需要密码,“密码”可为空。⑤单击“确定”按钮。(2)将登录名映射到凭据①在对象资源管理器中,展开“安全性”,右击SQLServer登录名,然后单击“属性”项。②在“登录属性”对话框的“常规”页的“凭据”框中,输入凭据的名称,然后单击“确定”按钮。3)用T–SQL命令管理权限主要命令有GRANT、REVOKE、DENY、CREATECREDENTIAL、ALTERCREDENTIAL、DROPCREDENTIAL等。(1)GRANT将安全对象的权限授予主体。GRANT命令的简单语法:GRANT{ALL[PRIVILEGES]}|permission[(column[,...n])[,...n][ON[class::]securable]TOprincipal[,...n][WITHGRANTOPTION][ASprincipal]ALL:该选项并不授予全部可能的权限。授予ALL参数相当于授予以下权限。①如果安全对象为数据库,则ALL表示BACKUPDATABASE、BACKUPLOG、CREATEDATABASE、CREATEDRFAULT、CREATEFUNCTION、CREATEPROCEDURE、CREATETABLE和CREATEVIEW。②如果安全对象为标量函数,则ALL表示EXECUTE和REFERENCES。③如果安全对象为表值函数,则ALL表示DELETE、INSERT、REFERENCES、SELECT和UPDATE。④如果安全对象为存储过程,则ALL表示DELETE、EXECUTE、INSERT、SELECT和UPDATE。⑤如果安全对象为表,则ALL表示DELETE、INSERT、REFERENCES、SELECT和UPDATE。⑥如果安全对象为视图,则ALL表示DELETE、INSERT、REFERENCES、SELECT和UPDATE。Permission:权限的名称。Column:指定表中将授予其权限的列的名称。需要使用括号“()”。Class:指定将授予其权限的安全对象的类。需要范围限定符“::”。Securable:指定将授予其权限的安全对象。TOprincipal:主体的名称。可为其授予安全对象权限的主体随安全对象而异。GRANTOPTION:指示被授权者在获得指定权限的同时还可以将指定权限授予其他主体。ASprincipal:指定一个主体,执行该查询的主体从该主体获得授予该权限的权利。REVOKE语句可用于删除已授予的权限,DENY语句可用于防止主体通过GRANT获得特定权限。授予权限将删除对所指定安全对象的相应权限的DENY或REVOKE权限。如果在包含该安全对象的更高级别拒绝了相同的权限,则DENY优先。但是,在更高级别撤销已授予权限的操作并不优先。数据库级权限在指定的数据库范围内授予。如果用户需要另一个数据库中的对象的权限,请在该数据库中创建用户账户,或者授权用户账户访问该数据库以及当前数据库。数据库特定安全对象有:应用程序角色、程序集、非对称密钥、证书、约定、数据库、端点、全文目录、函数、登录、消息类型、对象、队列、远程服务绑定、角色、路由、架构、服务器、服务、存储过程、对称密钥、同义词、系统对象、表、类型、用户、视图、XML架构集合。Sp_helprotect系统存储过程可报告对数据库级安全对象的权限。(2)GRANT对象权限。授予对表、视图、表值函数、存储过程、扩展存储过程、标量函数、聚合函数、服务队列或同义词的权限,语法如下:GRANT<permission>[,…n]ON[OBJECT::][schema_name].object_name[(column[,…n])]TO<database_principal>[,…n][WITHGRANTOPTION][AS<database_principal>]::=ALL[PRIVILEGES]|permission[(column[,…n])]<database_principal>::=Database_user|Database_role|Application_role|Database_user_mapped_to_Windows_User|Database_user_mapped_to_Windows_Group|Database_user_mapped_to_cerificate|Database_user_mapped_to_asymmetric_key|Data_user_with_no_loginPermission:指定可以授予的对架构包含的对象的权限。ALL:授予ALL不会授予所有可能的权限。授予ALL等同于授予适用于指定对象的所有ANSI-92权限。对于不同权限,ALL的含义有所不同。标量函数权限:EXECUTE和REFERENCES。表值函数权限:DELETE、INSERT、REFERENCES、SELECT和UPDATE。存储过程权限:EXECUTE、SYNONYM、DELETE、INSERT、SELECT和UPDATE。表权限:DELETE、INSERT、REFERENCES、SELECT和UPDATE。视图权限:DELETE、INSERT、REFERENCES、SELECT和UPDATE。Database_user指定数据库用户;Database_role指定数据库角色;Applicationrole指定应用程序角色;Database_user_mapped_to_Windows_User指定映射到Windows用户的数据库用户;Database_user_mapped_toWindows_Group指定映射到Windows组的数据库用户;Database_user_mapped_to_cerificate指定映射到证书的数据库用户;Database_user_mapped_to_asymmetric_key指定映射到非对称密钥的数据库用户;Data_user_with_no_login指定无相应服务器级主体的数据库用户。对象是一个架构级的安全对象,包含于权限层次结构中作为其父级的架构中*GRANT命令的使用实例:例1:授予对表的SELECT权限,本例授予用户RosaQdM对AdventureWorks数据库中表Person.Address的SELECT权限。USEAdventureWorksGRANTSELECTONOBJECT::Person.AddressTORosaQdM例2:授予对存储过程的EXECUTE权限,本例授予名Recruiting11的应用程序角色对存储过程HumanResources.uspUpdateEmployeeHireInfo的EXECUTE权限。GRANTEXECUTEONOBJECT::HumanResources.uspUpdateEmployeeHireInfoTORecruiting11(3)REVOKE取消以前授予或拒绝了的权限。REVOKE简单语法:REVOKE[GRANTOPTIONFOR]{[ALL[PRIVILEGES]]|permission[(column[,…n])][,…n]}[ON[class::]securable]{TO|FROM}principal[,…n][CASCADE][ASprincipal]REVOKE对象权限有:撤销对表、视图、表值函数、存储过程、扩展存储过程、标量函数、聚合函数、服务队列或同义词的权限。语法如下:REVOKE[GRANTOPTIONFOR]<permission>[,…n]ON[OBJECT::][schema_name].object_name[(coloumn[,…n])]{FROM|TO}<database_principal>[,…n][CASCADE][AS<database_principal>]*REVOKE命令的使用实例:例:撤销对表的SELECT权限,本例从用户RosaQdM中撤销对AdventureWorks数据库中表Person.Address的SELECT权限。REVOKESELECTONOBJECT::Person.AddressFROMRosaQdM用T–SQL令管理权限的例子1.给用户授权:a)use
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉林省四平市双辽市2024-2025学年九年级上学期10月期中考试化学试题(含答案)
- 2024年移动式中转站项目资金申请报告代可行性研究报告
- 2023年房屋和土木工程服务资金需求报告
- 2024年白瓷餐具项目资金申请报告代可行性研究报告
- 赣南师范大学《解析几何》2021-2022学年第一学期期末试卷
- 阜阳师范大学《多元统计分析》2022-2023学年第一学期期末试卷
- 福建师范大学协和学院《幼儿园环境创设与教玩具设计》2022-2023学年第一学期期末试卷
- 劳务公司清算报告模板-财务管理
- 生鲜公司亏损原因财务分析报告模板
- 福建师范大学《设计基础二》2021-2022学年第一学期期末试卷
- 2024年宗教知识竞赛测试题库及答案(共100题)
- 北京2024年第一次高中学业水平合格考化学试卷真题(含答案详解)
- 教育发展未来展望
- GB/T 44146-2024基于InSAR技术的地壳形变监测规范
- 2024年湖南省中考英语试题卷(含答案)
- 卡通版名人介绍竺可桢的故事
- 2024年《公务员法》相关法律法规知识考试题库实验班
- 椎管内麻醉的相关新进展
- 河北省衡水中学2022-2023学年高一上学期综合素质检测二数学试题含解析
- 《中国溃疡性结肠炎诊治指南(2023年)》解读
- 办理宽带拆机委托书
评论
0/150
提交评论