《数据库系统概论》(第6版 王珊 杜小勇 陈红)第四章“数据库安全性”课后习题与补充题解析
本文汇总了教材中第四章关于“数据库安全性”的课后练习及扩展题目解答,旨在帮助学习者深入理解安全机制的核心概念,并通过实际操作示例巩固相关知识。
[此处为图片1]1. 如何定义数据库的安全性?
数据库的安全性指的是采取一系列措施防止非法使用数据库而导致的数据泄露、篡改或损坏。其核心目标是确保只有经过授权的用户才能访问和操作数据,从而保障信息的机密性、完整性和可用性。
2. 列举可能威胁数据库安全的因素并举例说明
在实际应用中,数据库面临多种潜在风险,主要包括:
- 恶意攻击行为:例如黑客利用漏洞远程入侵系统,盗取用户的账户密码或敏感交易记录;
- 人为操作失误:如管理员误执行删除命令,导致关键业务表数据丢失;
- 权限分配不合理:普通职员被赋予查看财务报表的权限,造成内部信息外泄。
3. 常见的数据库安全控制方法有哪些?
为了有效应对上述威胁,通常采用以下技术手段实现安全防护:
- 身份认证机制:通过用户名、口令或其他生物特征识别用户身份,确认合法后方可进入系统;
- 存取控制策略:包括自主存取控制(DAC)与强制存取控制(MAC),对不同用户设定不同的访问权限;
- 视图隔离保护:为特定用户创建定制化视图,隐藏敏感字段,限制可见数据范围;
- 审计日志功能:自动记录所有用户操作行为,便于事后追踪异常活动;
- 入侵检测系统:实时监控数据库访问行为,发现可疑动作立即报警或阻断;
- 数据加密技术:对静态存储和动态传输过程中的数据进行加密处理,防止中间人窃听或篡改。
4. 自主存取控制与强制存取控制的区别是什么?
自主存取控制(DAC)允许用户在拥有一定权限的基础上,将部分或全部权限转授给其他用户。SQL语言中主要通过GRANT和REVOKE语句实现该机制。“自主”体现在权限传播的灵活性上。
强制存取控制(MAC)则为每一个数据对象和用户分配固定的安全等级(如绝密、机密、公开),用户只能访问与其许可级别相符的数据对象,无法自行转让权限。这种机制具有更高的安全性,常用于军事或政府系统。
[此处为图片2]5. 根据以下两个关系模式完成SQL授权操作:
学生(学号,姓名,年龄,性别,家庭住址,班级号)
班级(班级号,班级名,班主任,班长)
请用GRANT语句实现如下授权需求:
- 授予用户U1对两张表的所有操作权限,并允许其将权限转授他人;
- 授予用户U2查询“学生”表的权限,以及修改“家庭住址”字段的权限;
- 让所有用户都能查看“班级”表的内容;
- 将“学生”表的查询与更新权限授予角色R1;
- 将角色R1分配给用户U1,并允许U1继续向其他角色授权。
对应SQL语句如下:
GRANT ALL PRIVILEGES ON TABLE 学生,班级 TO U1 WITH GRANT OPTION; GRANT SELECT, UPDATE(家庭住址) ON TABLE 学生 TO U2; GRANT SELECT ON TABLE 班级 TO PUBLIC; CREATE ROLE R1; GRANT SELECT, UPDATE ON TABLE 学生 TO R1; GRANT R1 TO U1 WITH ADMIN OPTION;[此处为图片3]
6. 给定以下两个关系结构:
职工(职工号,姓名,年龄,职务,工资,部门号)
部门(部门号,名称,经理名,地址,电话号)
结合GRANT语句与视图机制,完成下列授权任务:
- 用户王明可查询两个表的数据;
- 用户李勇可在两个表中插入和删除记录;
- 每位职工仅能查看自己的个人信息;
- 用户刘星可查看职工表,并能修改工资字段;
- 用户张新有权更改两表的结构定义;
- 用户周平拥有对两个表的全部操作权限,并可授权给其他用户;
- 用户杨兰可以查看各部门的最高、最低和平均工资,但不能获取个人薪资详情。
实现方案如下:
GRANT SELECT ON TABLE 职工,部门 TO 王明; GRANT INSERT, DELETE ON TABLE 职工,部门 TO 李勇; -- 实现职工仅查看自己记录的方式可通过行级安全或程序控制,标准SQL不直接支持条件式授权 -- 此处假设系统支持基于会话用户的条件授权语法: GRANT SELECT ON TABLE 职工 WHEN USER()=NAME TO ALL; GRANT SELECT, UPDATE(工资) ON TABLE 职工 TO 刘星; GRANT ALTER TABLE ON TABLE 职工,部门 TO 张新; GRANT ALL PRIVILEGES ON TABLE 职工,部门 TO 周平 WITH GRANT OPTION; -- 创建视图以满足杨兰的需求 CREATE VIEW 部门工资 AS SELECT 部门.部门号, 部门.名称, MAX(工资), MIN(工资), AVG(工资) FROM 职工,部门 WHERE 职工.部门号 = 部门.部门号 GROUP BY 部门.部门号; -- 授予视图查询权限 GRANT SELECT ON 部门工资 TO 杨兰;[此处为图片4]
7. 撤销第6题中各项已授予的权限
针对前面所设置的各项权限,若需撤销,应使用REVOKE语句逐一回收。具体操作如下:
REVOKE SELECT ON TABLE 职工,部门 FROM 王明; REVOKE INSERT, DELETE ON TABLE 职工,部门 FROM 李勇; -- 条件性授权的撤销方式依具体数据库系统而定 REVOKE SELECT ON TABLE 职工 FROM ALL; -- 假设ALL表示全体用户 REVOKE SELECT, UPDATE(工资) ON TABLE 职工 FROM 刘星; REVOKE ALTER TABLE ON TABLE 职工,部门 FROM 张新; REVOKE ALL PRIVILEGES ON TABLE 职工,部门 FROM 周平; REVOKE SELECT ON 部门工资 FROM 杨兰;
注:对于带有WITH GRANT OPTION的权限,在撤销时应考虑级联影响,某些数据库系统可能需要额外指定CASCADE选项来彻底清除传播的权限链。
REVOKE SELECT ON TABLE 职工 WHEN USER() = NAME FROM ALL; REVOKE SELECT, UPDATE(工资) ON TABLE 职工 FROM 刘星; REVOKE ALTER TABLE ON TABLE 职工, 部门 FROM 张新; REVOKE ALL PRIVILEGES ON TABLE 职工, 部门 FROM 周平; REVOKE SELECT ON 部门工资 FROM 杨兰;
8. 强制存取控制机制中主体、客体与敏感度标记的含义解析
主体:指数据库系统中的主动活动实体,不仅包括通过DBMS进行操作的实际用户,也涵盖以用户身份运行的各种进程。主体是发起数据访问请求的操作者。
客体:代表系统中被操作的被动对象,例如基本表、视图、索引、文件等数据结构。这些对象接受来自主体的读写等操作。
敏感度标记:为保障数据安全,DBMS会为每一个主体和客体实例分配一个敏感度等级标签,通常划分为多个安全级别,如“绝密”、“机密”、“秘密”、“公开”等。其中,赋予主体的标记称为许可证级别,而赋予客体的则称为密级。
9. 强制存取控制下主体对客体访问权限的判定示例
假设在关系变量S上实施强制存取控制,以元组作为最小数据单元,并设定以下密级(数值越大表示安全等级越高:4=绝密,3=机密,2=秘密):
| SNO | SNAME | STATUS | CITY | CLASS |
|---|---|---|---|---|
| S1 | Smith | 20 | London | 2 |
| S2 | Jones | 10 | Paris | 3 |
| S3 | Clark | 20 | London | 4 |
[此处为图片1]
系统的访问规则如下:
- 读取规则:仅当主体的许可证级别大于或等于客体的密级时,允许读取该客体;
- 写入规则:仅当主体的许可证级别小于或等于客体的密级时,才可执行写入操作。
设用户U1的许可证级别为3,U2为2,则:
- 用户U1可以读取CLASS为2和3的元组(即S1、S2),但不能读取S3;同时,由于其级别等于S2的密级,故可修改S2;
- 用户U2只能读取并修改CLASS为2的元组(即S1),无法访问更高密级的数据。
10. 数据库审计功能及其重要性说明
数据库的审计功能是指DBMS提供的一种事后追踪与监控机制。当用户对数据库执行诸如查询、插入、更新或删除等操作时,系统会自动将这些行为记录到审计日志中。
审计日志包含操作时间、操作主体(用户)、所访问的对象以及具体操作类型等信息。审计员可通过分析这些日志,重现事件过程,识别是否存在未经授权的数据访问行为,进而定位潜在的安全威胁来源。
提供审计功能的主要目的,在于增强数据库系统的安全性与可追溯性,确保在发生数据泄露或非法操作后能够及时发现、调查和追责,从而有效防范内部滥用和外部攻击。
补充习题
一、选择题
1. 强制存取控制策略是TCSEC/TDI哪一级安全级别的特色?
A. C1 B. C2 C. B1 D. B2
答案:C
2. SQL的GRANT和REVOKE语句可以用来实现?
A. 自主存取控制 B. 强制存取控制 C. 数据库角色创建 D. 数据库审计
答案:A
3. 在强制存取控制机制中,当主体的许可证级别等于客体的密级时,主体可以对客体进行的操作是?
A. 读取 B. 写入 C. 不可操作 D. 读取、写入
答案:D
二、填空题
1. 数据库安全技术包括用户身份鉴别、__________ 和数据加密存储和加密传输等。
答案:自主存取控制和强制存取控制、视图技术、审计技术
2. 在数据加密技术中,原始数据通过某种加密算法变换为不可直接识别的格式,称为 __________。
答案:密文
3. 数据库角色实际上是一组与数据库操作相关的各种 __________。
答案:权限
4. 在对用户授予列INSERT权限时,一定要包含对 __________ 的INSERT权限,否则用户的插入会因为空值被拒绝。除了授权的列,其他列的值或者取 __________,或者为 __________。
答案:主码、空值、默认值
[此处为图片1]


雷达卡


京公网安备 11010802022788号







