7.1 解释数据安全标准和数据安全模型。简述TDI和TCSEC按照哪几个等级和哪几个方面,详细描述了计算机系统安全的具体指标。
数据安全标准:评估计算机系统内置的计算机安全控制的有效性的基本要求。常见的数据安全标准有《可信计算机系统评估准则》(TCSEC, Trusted Computer System Evacuation Criteria)、《可信数据库解释》(TDI, Trusted Database Interpretation)等。
数据安全模型:实现"对计算机系统及其数据进行保护,当系统受到攻击时仍能保证系统的正常运行,确保数据不会受破坏和泄漏"的硬软件安全技术所构成的统一整体。
TDI 和 TCSEC 按照四组七个等级,从安全策略、责任、保证和文档等,详细描述了数据安全的具体指标:
- D —— 最小保护(Minimal protection)
- C —— 自主保护(Discretionary protection)
-
- C1 —— 自主存取保护(Discretionary Access Control)
-
- C2 —— 受控存取保护(Controlled Access Protection)
- B —— 强制保护(Mandatory protection)
-
- B1 —— 强制存取保护(Mandatory Access Control)
-
- B2 —— 结构化保护(Structured Protection)
-
- B3 —— 安全域(Security Domains)
- A —— 验证保护(Verified Protection)
-
- A1 —— 验证设计(Verified Design)
7.2 解释计算机系统安全。简述计算机系统安全的具体内容。
计算机系统安全:为了保护计算机系统的硬件、软件及其数据,避免遭到偶然或自然、无意或有意的破坏或泄露,而采取的保护措施。内容包括技术安全(核心)、管理安全和政策法律。
技术安全:利用硬件和软件的安全技术,实现对计算机系统及其数据的保护,当系统受到攻击时仍能保证系统的正常运行,确保数据不会受破坏和泄漏。
7.3 解释数据安全。
数据(库)安全:保护数据库防止非法使用造成的数据泄露、更改或破坏等。
7.4 解释数据存取控制。简述常用的数据存取控制方法。
数据存取控制:在存取数据时,需要确定用户是否拥有访问数据的权限,从而确保授权用 户对数据的合法访问。
存取控制方法:受控存取保护和强制存取保护等,使产品达到 C2 级和 B1 级。
具体说明:
受控存取保护(C2)
假设你有一台计算机,里面存储着你的个人照片、财务文件和工作文件。出于安全起见,你可以授予其他应用程序(比如Microsoft Word)或用户(比如你的家人)针对这些文件的读、写、执行等权限,也可以随时撤销TA的权限。
同时,你也可以设置在用户或应用程序试图访问文件时进行身份验证(密码、指纹等)。
强制存取保护(B1)
假设你有一台计算机,里面存储着你的个人照片、财务文件和工作文件。你将你的个人照片标记为“私人”,你的财务文件标记为“机密”,你的工作文件标记为“公开”。
当其他用户或应用程序试图访问某个文件时,系统会检查TA的安全标签和文件的安全标签。如果TA的安全标签不够高,系统将拒绝其访问请求。例如,如果其安全标签是“公开”,TA将无法访问标记为“私人”或“机密”的文件。
7.5 简述SQL Server 2012提供的权限控制语句。
授权(grant)、阻权(deny)和收权(revoke)
7.6 简述SQL Server 2012提供的两种身份验证方式。
Windows 身份验证:定义了一个存在于操作系统层次上的用户账户。
SQL Server 身份验证:在 SQL Server 内部中创建的一个登录,并且与口令有关(SQL Server 登录与现有的 Windows 用户账户可能相同)。
7.7 简述SQL Server 2012提供的两个安全子系统。
Windows安全系统:在操作系统层次上的安全系统,用于防止非法用户通过其Windows账户远程连接至部署有DBMS的Windows主机。
SQL Server安全系统:SQL Server在操作系统系统层次上所附加的安全系统,用于防止非法用户突破Windows系统安全后获取到操作SQL Server系统的权限。
7.8 简述SQL Server 2012提供的两种身份验证模式。
Windows 模式
只使用 Windows 用户账号来登录 SQL Server 系统。SQL Server接收用户账号,并假设它在操作系统层次上是合法的。因为 SQL Server 相信操作系统已经对账号的合法性进行过验证,所以这种连接到数据库的方式称为信任连接(Trusted Connection)。
Mixed 模式
允许用户使用 Windows 身份验证或 SQL Server 身份验证来连接到 SQL Server。
具体来说,如果某人已经拥有了关联SQL Server账户的Windows账户,则TA可以选择直接使用 Windows身份验证来连接到 SQL Server。如果某人没有关联账户,则只能创建 SQL Server 用户账号并使用 SQL Server 身份验证来连接到 SQL Server。
7.9 简述SQL Server的用户机制,并解释登录用户,数据库用户和数据库角色的概念。
用户机制
登录 SQL Server 的用户首先必须是 Windows 合法用户或者 SQL Server 的合法用户。在此基础上,如果用户需要访问系统中的某个数据库,还必须拥有一个该数据库用户账户。也就是说,对于每一个需要访问的数据库,用户都必须拥有该数据库的账户。
数据库用户账户可以从现有的 Windows用户账户、Windows组(当前用户是该组的成员)、SQL Server登录用户或者角色中映射过来。
概念解释
登录用户:登录 SQL Server 服务的合法用户(无论其通过Windows账户直接登录还是通过SQL Server账户登录)。
数据库用户:从SQL Server现有用户集合中映射出来的、可以访问指定数据库的合法用户。
数据库角色:为了更好管理同一个数据库的用户,实现更细粒度的权限管理,为多个同类的该数据库用户创建的一组权限的集合(例如某个数据库中"管理员"角色对所有的数据表具有完全的增删改查权限)。
7.10 解释视图和表的概念。简述视图与表的区别与联系。简述视图的作用。
概念解释
视图(View):利用查询语句定义的,从一个或者多个表中导出的虚表。
表(Table,关系):笛卡尔积的子集。表(关系)=表结构(关系模式)+记录集合(元组集合)。
视图与表的区别
-
概念不同。表在DBMS中使用Data Definition Language定义(
create table),是以独立文件的形式存储在硬盘上的真实数据。而视图则是利用Structured Query Language定义(select from ... where ...),从表或其他视图中导出的虚表。 -
数据有效期不同。表是拥有真实数据的实表,永远有效;而视图则是只有查询语句 的没有数据的虚表,在执行视图时,才临时有效。
-
数据存储不同。表永久存储在外存,而视图中没有数据。
-
更新方式不同。表可以任意更新,而视图不能任意更新,而是有条件更新。
视图与表的联系
视图最终定义在表之上,视图数据来自于表。表是视图的基础,并为视图提供数据,如果 表的结构发生了改变,或者删除了表,则相应的视图就会失去意义,此时就需要修改或者删除相应的视图。
对于最终使用数据库外模式暴露API的用户(应用程序)来说,视图与表等价。即:视图和表在用户看来都是“表”,用户完全可以按照表的使用方法来使用视图,同时可以在视图上定义视图。
视图作用:
1. 简化用户操作
假设我们有一个“员工”表,其中包含员工姓名、职位、部门等信息。如果我们需要开发一个专门用于查询员工姓名及其职位的接口,那么我们可以定义一个视图来简化操作。
create view v_employee_name_and_position
as select name,position from employee;
这样,我们就可以通过以下方式查询所有员工的姓名和职位:
select * from v_employee_name_and_position;
2. 清晰表达查询
有时,我们需要对数据进行复杂的查询,例如连接多个表、使用子查询等。如果我们直接使用复杂的查询语句,可能会使查询的逻辑不清晰,不易理解。
在这种情况下,我们可以通过定义视图来清晰表达查询(即将真实的sql查询语句"封装"进视图中供用户调用)。
例如,假设我们需要查询所有员工的姓名、部门和职位,如果直接使用“员工”表和“部门”表进行连接查询,可能会写出以下查询语句:
select employee.name, employee.department, department.name
from employee,department
where employee.department_id = department.id;
对于没学过SQL的用户,想要理解这种查询语句的逻辑就比较困难。如果我们将其定义为一个有具体名称的视图v_employee_info,则可以将查询逻辑封装起来,使查询的目的更加清晰。
--创建视图
create view v_employee_info as
select employee.name, employee.department, department.name
from employee,department
where employee.department_id = department.id;
--用户查询操作
select * from v_employee_info;
3. 同一数据可以以不同的形式提供给不同用户
例如在成绩管理系统中,对于教师需要提供平时成绩、实验成绩和期末成绩等字段以供其录入数据,对于辅导员需要查询某个学生是否挂科,则只需要向其提供该学生各项成绩按比重计算后所得的总分即可。
4. 在一定程度上确保了数据安全
视图可以向用户隐藏数据库中敏感的信息,从而提高数据安全性。例如,我们可以定义一个供公司外部人员查询的视图,只显示员工姓名和职位,而隐藏员工的身份证号和工资等信息。
这样,即使有非法用户获得了数据库访问权限,也只能查看公开的信息,而无法查看敏感的信息。
5. 在一定程度上提供了逻辑独立性
视图可以屏蔽底层表的结构变化,从而提高数据库的逻辑独立性。
例如我们在成绩管理系统中修改了学生成绩的计算规则并对真实的数据表进行了相应调整,但辅导员仍然能通过提供给他的视图一键查询到某个学生的成绩。
这样,即使底层表的结构发生变化,也不会影响视图的使用,从而降低了我们开发的应用程序的维护成本。
复习:数据的逻辑独立性和数据的物理独立性合称为数据独立性。数据库外模式/模式映像保证数据的逻辑独立性,视图就是数据库外模式的具体体现。