Loading... # Ch4. 数据库安全性 ## 4.1 什么是数据库的安全性 数据库安全性是指保护数据库以防止不合法使用所造成的数据泄露 ## 4.2 CC评估保证级划分的基本内容 | 评估保证级 | 定义 | TESEC安全级别 | | :-: | :-: | :-: | | EAL1 | 功能测试 | | | EAL2 | 结构测试 | **C1** | | EAL3 | 系统的测试和检查 | **C2** | | EAL4 | 系统的设计、测试和复查 | B1 | | EAL5 | 半设计化设计和测试 | B2 | | EAL6 | 半形式化验证的设计和测试 | B3 | | EAL7 | 形式化的验证的设计和测试 | **A1** | **C1**: 提供了非常初级的自主安全保护,能够实现用户和数据的分离,进行 **自主存取控制** *(DAC)* **C2**: 是实际产品的最低档,将C1的DAC进一步细化 **B1**:标记安全级保护。对标记的主体和客体实施强制的存取控制*(MAC)* ## 4.3 数据库安全性控制常用方法和技术 1. **用户身份鉴别** 2. **多层存取控制**:系统提供用户权限定义和合法权限检查功能 3. **视图机制**:为不同的用户提供不同的视图 4. **审计**:把用户对数据库的所有操作自动记录下来放入审计日志中 5. **数据加密** ## 4.4 什么是数据库自主存取控制方法和强制存取控制方法 **自主存取控制方法**:定义各个用户对不同数据对象的存取权限 - 注:*自主*的含义是:用户可以将自己拥有的存取权限“自主”的授予他人 **强制存取控制方式**:每一个数据对象被标以一定的密级,每个用户被授予某一个级别的许可证。只有某一许可级别的用户才能存取某一个密级的数据对象 ## 4.5 授权:授予与收回 > **Note** > > - 用户可以“自主”决定将数据的存取授予何人、决定是否将“授权”的权限授予别人。因此也称这种存取权限时**自主存取控制** ### 4.5.1 授予 ``GRANT`` 一般格式为 ```sql GRANT <权限>[,<权限2>, ...] ON <对象类型> <对象名>[,<对象类型2> <对象名2>,...] TO <用户>[,<用户2>,...] [WITH GRAND OPTION] ``` > **Note** > > 1. 发出GRANT请求可以是数据管理员,也可以是数据库对象创建者,还可以是已经拥有权限的用户 > 2. 接受权限的可以是1个或多个用户,也可以是全体用户(`PUBLIC`) > 3. 如果指定``WITH GRANT OPTION``子句,则获得某种权限再授予其他指定的用户 > 4. 获得``WITH GRANT OPTION``授权的用户,可以传递授权个他人,但不能再回授给祖先 #### Example: 1. 把查询Student表的权限授给用户UI ```sql GRANT SELECT ON TABLE Student TO U1; ``` 2. 把对Student表和Course表的全部操作权限授予U2和U3 ```sql GRANT ALL PRIVILEGES ON TABLE Student, Course TO U2, U3; ``` 3. 把表SC的查询权限授予所有用户 ```sql GRANT SELECT ON TABLE SC TO PUBLIC; ``` 4. 把查询Student表和修改学生学号的权限授给U4,并允许再授予他人 ```sql GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4 WITH GRANT OPTION; ``` ### 4.5.2 回收 ``REVOKE`` 一般格式为 ```sql REVOKE <权限>[,<权限2>, ...] ON <对象类型> <对象名>[,<对象类型2> <对象名2>,...] TO <用户>[,<用户2>,...] [CASCADE|RESTRICT] ``` > **Note** > > 1. ``CASCADE``收回目标A权限的同时,还会收回有关A授权B,C,D...的所有权限 > 2. 执行``CASCADE``时,若B,C,D...还从他人E中得到了相同的授权,系统只会回收有关A的权限,E的权限将保留 #### Example: 1. 把U4修改学生学号的权限收回 ```sql REVOKE UPDATE(Sno) ON TABLE Student FROM U4; ``` 2. 收回所有用户对SC的查询权限 ```sql REVOKE SELECT ON TABLE SC FROM PUBLIC; ``` ### 4.5.3 创建数据库模式的权限 一般格式为 ```sql CREATE USER <username> [WITH] [DBA|RESOURCE|CONNECT] ``` > **Note** > > 1. 只有系统超级用户有权创建新的数据库用户 > 2. 数据库用户由3种权限: **DBA**, **RESOURCE**, **CONNECT**(默认) | 拥有的权限 | CREATE USER | CREATE SCHEMA | CREATE TABLE | 登录、查询、操纵数据库 | | :-: | :-: | :-: | :-: | :-: | | DBA | Y | Y | Y | Y | | RESOURCE | N | N | Y | Y | | CONTENT | N | N | N | Y(需要权限) | ## 4.6 解释MAC机制主体、客体、敏感度标记的含义 **主体**:是系统中的活动实体,既包含DBMS所管理的实际用户,也包括代表用户的个进程 **客体**:系统中的被动实体,受主题操纵,包括文件、基本表、索引、视图 对于主体、客体,DBMS分别指派一个敏感度标记,被分为若干个级别。**主体**的敏感度标记称为**许可证级别**,**客体**的敏感度标记被称为**密级** ## 4.7 什么是数据库的审计规则 值DBMS的审计模块在用户对数据库执行操作的同时,把所有操作自动记录到系统的审计日志中 最后修改:2020 年 11 月 01 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏