免费智能真题库 > 历年试卷 > 数据库系统工程师 > 2009年上半年 数据库系统工程师 上午试卷 综合知识
  第50题      
  知识点:   数据库的安全性   对象的操作   数据库
  关键词:   安全   数据库对象   对象   数据   数据库        章/节:   事务管理       

 
数据库对象的操作权限授予用户,属于安全控制机制中的(50)。
 
 
  A.  用户标识与鉴别
 
  B.  自主存取控制
 
  C.  强制存取控制
 
  D.  审计
 
 
 

 
  第48题    2010年上半年  
   37%
连接数据库时的安全验证是通过(48)来实现的。
  第41题    2023年上半年  
   0%
以下关于视图的叙述中,错误的是(  )。
  第31题    2013年上半年  
   29%
数据库中数据的(30)是指数据库正确性和相容性,以防止合法用户向数据库加入不符合语义的数据;(31)是指保护数据库,以防止不..
   知识点讲解    
   · 数据库的安全性    · 对象的操作    · 数据库
 
       数据库的安全性
        除了完整性约束提供保护意外引入的不一致性之外,数据库中存储的数据还要防止未经授权的访问和恶意的破坏或修改。这一节中,重点介绍数据误使用或故意使数据不一致的一些方式,然后给出防止这些情况的机制。
               安全性违例
               恶意访问的形式主要包括:未经授权读取数据(窃取信息);未经授权修改数据;未经授权破坏数据。
               数据库安全性(data base security)指保护数据库不受恶意访问。需要注意的是绝对杜绝对数据库的恶意滥用是不可能的,但是可以使那些企图在没有适当授权的情况下访问数据库的代价足够高,以阻止绝大多数这样的访问企图。为了保护数据库的安全,可以在以下五个层次上采取安全性措施:
               (1)数据库系统层次(database system)。数据库系统的某些用户获得的授权可能只允许他访问数据库中有限的部分,而另外一些用户获得的授权可能允许他提出查询,但不允许他修改数据。保证这样的授权限制不被违反是数据库系统的责任。
               (2)操作系统层次(operating system)。不管数据库系统多安全,操作系统安全性方面的弱点总是可能成为对数据库进行未授权访问的一种手段。
               (3)网络层次(network)。由于几乎所有的数据库系统都允许通过终端或网络进行远程访问,网络软件的软件层安全性和物理安全性一样重要,不管在因特网上还是在私有的网络内。
               (4)物理层次(physical)。计算机系统所位于的结点(一个或多个)必须在物理上受到保护,以防止入侵者强行闯入或暗中潜入。
               (5)人员层次(human)。对用户的授权必须格外小心,以减少授权用户接受贿赂或其他好处而给入侵者提供访问机会的可能性。
               为了保证数据库安全,用户必须在上述所有层次上进行安全性维护。如果较低层次上(物理层次或人员层次)安全性存在缺陷,高层安全性措施即使很严格也可能被绕过。下面主要在数据库系统层次上讨论安全性,主要包括:权限机制、视图机制和数据加密。
               授权
               通过DBMA提供的授权功能赋予用户在数据库各个部分上的几种形式的授权,其中包括:
               .read授权允许读取数据,但不允许修改数据。
               .insert授权允许插入新数据,但不允许修改已经存在的数据。
               .update授权允许修改数据,但不允许删除数据。
               .delete授权允许删除数据。
               可以赋予用户获得上面的所有授权类型或其中一部分的组合,也可以根本不获得任何授权。除了以上几种对数据访问的授权外,用户还可以获得修改数据库模式的授权:
               .index授权允许创建和删除索引。
               .resource授权允许创建新关系。
               .alteration授权允许添加或删除关系中的属性。
               .drop授权允许删除关系。
               drop授权和delete授权的区别在于delete授权只允许对元组进行删除。如果用户删除了关系中的所有元组,关系仍然存在,只不过是空的。如果关系被删除,那么关系就不再存在了。可以通过resource授权来控制创建新关系的能力。具有resource授权的用户在创建新关系后自动获得该关系上的所有权限。
               index授权看起来似乎是不必要的,因为索引的创建和删除不会改变关系中的数据。事实上,索引是提高性能的一种结构。但是,索引也会消耗空间,并且所有数据库的修改都需要更新索引。如果index授权被授予所有用户,那么执行更新操作的用户倾向于删除索引,而提出查询的用户倾向于创建大量索引。为了使数据库管理员能够管理系统资源的使用,我们有必要将索引的创建作为一种权限来看待。
               最大的授权形式是给数据库管理员的。数据库管理员可以给新用户授权,可以重构数据库,等等。这一授权形式类似于操作系统中提供给超级用户或操作员的权限。
               授权与视图
               视图是给用户提供个性化数据库模型的一种手段,而且可以隐藏用户不需要看见的数据。视图隐藏数据的能力既可以用于简化系统的使用,又可以用于实现安全性。由于视图只允许用户关注那些感兴趣的数据,它简化了系统的使用。尽管用户可能不被允许直接访问某个关系,但用户可能被允许通过一个视图访问该关系的一部分。因此,关系级的安全性和视图级的安全性可以结合起来,用于限制用户只能访问所需数据。
               例如,银行高管考虑一个需要知道在各支行有贷款的所有客户姓名的职员。该职员不能看到与客户具体贷款相关的信息。因此,该职员对loan关系的直接访问必须被禁止,但是,如果他要访问所需信息,就必须得到对视图cust-loan的访问,这一视图由所有客户姓名及其贷款支行构成。此视图可以用SQL定义如下:
               
               假设该职员提出如下SQL查询:
               
               显然,该职员被允许看到此查询的结果。但是,当查询处理器将此查询转换为数据库中的事实关系上的查询时,它产生的是borrower和loan上的查询。因此,系统对职员查询授权的检查必须在查询处理开始之前进行。
               创建视图并不需要resource授权。创建视图的用户不一定能获得该视图上的所有权限,他得到的权限不会为他提供超过原有授权的其他授权。例如,在用来定义视图的关系上没有update授权的用户不能得到相应视图上的update授权。如果用户创建一个视图,而此用户在该视图上不能获得任何授权,这样的视图创建请求将被系统拒绝。在cust-loan的例子中,视图的创建者必须在关系borrower和loan上都具有read授权。
               权限的授予
               获得了某种形式授权的用户可能被允许将此授权传递给其他用户。但是,我们对于授权可能会在用户间怎样传递必须格外小心,以保证这样的授权在未来的某个时候可以被收回。
               例如,考虑银行数据库中loan关系上update权限的授予。假设最初数据库管理员将loan上的update权限授给用户U1、U2和U3,他们接下来又可以将授权传递给其他用户。授权从一个用户到另一个用户的传递可以表示为授权图(authorization graph)。该图的结点是用户。如果用户Ui将loan上的update权限授给用户Uj,则图中包含边Ui→Uj。图的根是数据库管理员。下图给出了一个示例的图,请注意用户U1和U2都给U5授予了权限;而U4只从U1处获得了授权。
               
               权限授予图
               用户具有授权当且仅当存在从授权图的根(即代表数据库管理员的结点)到代表该用户的结点的路径。
               设数据库管理员决定收回用户U1的授权。由于用户U4从U1处获得授权,因此其权限也应该被收回。可是,用户U5既从U1处又从U2处获得了授权。由于数据库管理员没有从U2处收回loan上的update授权,U5继续拥有loan上的update授权。如果U2最后从U5处收回授权,则U5失去授权。
               狡猾的用户可能企图通过相互授权来破坏权限回收规则,如下图(a)所示。
               
               破坏权限回收的企图
               如果数据库管理员从U2收回权限,U2保留了通过U3获得的授权,如上图(b)所示。如果权限接着从U3处收回,U3似乎保留了通过U2获得的授权,如上图(c)所示。
               然而,当数据库管理员从U3处收回权限时,从U3到U2的边以及从U2到U3的边就不再是从数据库管理员开始的路径的一部分了。
               为了防止相互授权破坏权限回收规则,要求授权图中的所有边都必须是某条从数据库管理员开始的路径的一部分。这样U2和U3之间的边将被删除,不会产生上图(c)的情况。结果授权图如下图所示。
               
               结果授权图
               角色
               考虑一个有很多出纳的银行。每一个出纳必须对同一组关系具有同种类型的权限。无论何时指定一个新的出纳,他都必须被单独授予所有这些授权。
               一个更好的机制是指明所有出纳应该有的授权,并单独标示出哪些数据库用户是出纳。系统可以用这两条信息来确定每一个有出纳身份的人的权限。当一个人被新雇佣为出纳时,必须给他分配一个用户标识符,并且必须将他标示为一个出纳,而不需要重新单独给予出纳权限。
               角色(role)的概念可用于该机制。在数据库中建立一个角色集,和授予每一个单个用户一样,可将权限授予角色。分配给每个数据库用户一些他(或她)有权扮演的角色(也可能是空的)。
               事实上,在银行的数据库里,角色的例子可以包括system-administrator、branch-manager、teller和auditor。一个不是很合适的方法是建立一个teller用户号,允许每一个出纳用这个出纳用户号来连接数据库。该机制的问题是它无法鉴别出到底哪个出纳执行了事务,从而导致安全隐患。应用角色的好处是需要每个用户用自己的用户号连接数据库。
               任何可以授予一个用户的权限都可以授予一个角色。给用户分配角色就跟给用户授权一样。与其他授权一样,一个用户也可以被授予给他人分配角色的权限。这样,可以授予支行经理(branch-manager)分配出纳角色的权限。
               审计追踪
               很多安全的数据库应用软件需要维护审计追踪(audit trail)。审计追踪是一个对数据库所有更改(插入/删除/更新)的日志,还包括一些其他信息,如哪个用户执行了更改和什么时候执行的更改等。
               审计追踪在几个方面加强了安全性。例如,如果发现一个账户的余额不正确,银行也许会希望跟踪所有在这个账户上的更新来找到错误(或欺骗性)的更新,同时也会找到执行这个更新的人。然后银行就可以利用审计追踪跟踪这些人所做的所有的更新来找到其他错误或欺骗性的更新。
               可以在关系更新操作上定义适当的触发器来建立一个审计追踪(利用标示用户名和时间的系统变量)。然而,很多的数据库系统提供了内置机制来建立审计追踪,用起来会更加方便。具体怎么建立审计追踪的细节随着不同的数据库系统而不同,通常应该参考数据库系统用户手册来了解具体细节。
               数据加密
               目前数据加密仍是计算机系统对信息进行保护的一种最可靠的办法。它利用密码技术对信息进行加密,实现信息隐蔽,从而起到保护信息的安全的作用。对数据库中的数据进行加密,可以防止数据在存储和传输过程中失密。
               按照作用的不同,数据加密技术可分为数据传输加密技术、数据存储加密技术、数据完整性的鉴别技术和密钥管理技术。
                      数据传输加密技术
                      数据传输加密技术的目的是对传输中的数据流加密,通常有线路加密与端——端加密两种。线路加密侧重在线路上而不考虑信源与信宿,是对保密信息通过各线路采用不同的加密密钥提供安全保护。端一端加密指信息由发送端自动加密,并且由TCP/IP进行数据包封装,然后作为不可阅读和不可识别的数据穿过互联网,当这些信息到达目的地,将被自动重组、解密,从而成为可读的数据。
                      数据存储加密技术
                      数据存储加密技术的目的是防止在存储环节上的数据失密,数据存储加密技术可分为密文存储和存取控制两种。前者一般是通过加密算法转换、附加密码、加密模块等方法实现;后者则是对用户资格、权限加以审查和限制,防止非法用户存取数据或合法用户越权存取数据。
                      数据完整性鉴别技术
                      数据完整性鉴别技术的目的是对介入信息传送、存取和处理的人的身份和相关数据内容进行验证,一般包括口令、密钥、身份、数据等项的鉴别。系统通过对比验证对象输入的特征值是否符合预先设定的参数,实现对数据的安全保护。
                      密钥管理技术
                      密钥管理技术包括密钥的产生、分配、保存、更换和销毁等各个环节上的保密措施。
 
       对象的操作
        对于创建的一个对象,需要通过调用对象类中定义的成员函数来对它进行操作,采用“对象名.成员函数名(实参表)”或“指向对象的指针->成员函数名(实参表)”的形式表示。
 
       数据库
        数据库(DataBase,DB)是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
        系统使用的所有数据存储在一个或几个数据库中。
   题号导航      2009年上半年 数据库系统工程师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第50题    在手机中做本题