请使用支持现代 CSS 与 JavaScript 的浏览器播放课件
DBPA · 4.1

数据库安全性与存取控制

让正确的人在正确的边界内访问数据

VER. 2608.2 Built with impress.js

学习目标

数据库安全控制从身份鉴别开始,经过授权和强制策略检查,并留下可追踪记录

  1. 01区分安全性、完整性与运行环境安全
  2. 02描述身份鉴别、授权检查、DAC/MAC 与审计组成的安全控制链
  3. 03读懂标准 SQL 示意中的 GRANT、REVOKE 与权限传播,并识别 MySQL 8.4 回收边界
  4. 04用角色管理一组用户的共同权限,说明 WITH ADMIN OPTION 与回收
  5. 05区分自主与强制存取控制
  6. 06用主体、客体和密级解释 MAC 读写规则
2/16
LEARNING OBJECTIVES

数据库安全性防止泄露、篡改和破坏

集中存储与多人共享让安全边界更加重要

威胁可能后果首要问题
非授权访问读取、修改或破坏数据谁在请求
敏感数据泄露机密字段被暴露哪些数据可见
运行环境脆弱操作系统、网络或硬件不可信承载系统是否可信
应用层漏洞(跨层案例)输入被拼接成非授权 SQL应用是否正确处理输入
Takeaway

安全性关注能否合法使用;完整性关注数据是否符合规则;运行环境安全关注承载系统是否可信,应用层漏洞不等于完整性约束

3/16
SECURITY SCOPE

安全标准比较的是保护要求与保证程度

等级不是“产品自动安全”的承诺

TCSEC/TDI 主要描述安全保护要求;CC EAL 主要描述评估保证程度,二者不是同一条等级轴,历史对应只作近似理解

标准或等级重点课堂理解
TCSEC/TDI D最小保护不满足更高要求的归类
C1自主安全保护、DAC允许按对象和用户配置权限
C2受控存取、个人责任与审计在 DAC 基础上强化可追踪性
B1、B2、B3标记、结构化保护、安全域引入更强的强制策略
A1验证设计对设计与实现提供形式化保证
CC EAL1—EAL7评估保证级关注评估和保证程度
Takeaway

标准定义把“身份、授权、标记、审计、验证”串成逐层增强的保护链

4/16
SECURITY STANDARDS

安全控制是分层链,不只是登录页面

登录通过不等于可以读取任意对象

事前

确认身份并发现异常请求

事中

检查主体、操作、客体和授权规则

事后

审计:记录和追踪,不负责放行

数据层

横向保护存储与传输内容

5/16
CONTROL CHAIN

先确认是谁,再判断能做什么

身份鉴别确认主体,存取控制检查权限;入侵检测事前识别异常,审计事后记录行为

从身份鉴别到授权检查、审计和存储传输保护的数据库安全控制链

静态口令

静态口令使用简单,但需要复杂度和失败锁定策略

动态与多因素

动态口令、证书或设备可以增加鉴别因素

生物特征/智能卡

生物特征或硬件载体可以增加鉴别因素

入侵检测(配套)

入侵检测按规则识别异常,但不是认证方式

6/16
AUTHENTICATION

权限由对象和操作共同组成

DBMS 按数据字典检查对象与操作;表/列授权不等于行过滤

对象操作示例业务含义
数据库/模式CREATE创建对象(依产品)
表或视图SELECTINSERTUPDATEDELETEALL PRIVILEGES访问或修改数据
属性列SELECTINSERTUPDATEREFERENCES字段级边界
模式对象CREATE TABLEVIEWINDEXALTER TABLE创建或调整对象
7/16
ACCESS CONTROL

GRANT 把指定权限授予指定用户或角色

一条 GRANT 同时确定权限、对象和接收者

这些示例采用标准 SQL 语义;U1U4 是抽象用户,MySQL 账户名与主机写法按产品手册确定

SQL
GRANT SELECT
ON TABLE Student
TO U1;

GRANT UPDATE(Smajor), SELECT
ON TABLE Student
TO U4;
Takeaway

SELECT 是整张表权限;UPDATE(Smajor) 是列级权限。列级授权不限制行,“只看自己的记录”需要视图或应用上下文;权限仍不能绕过主码和其他完整性约束

8/16
GRANT

WITH GRANT OPTION 改变权限传播图

权限回收要区分授权链语义与具体产品语法

SQL
-- DBA 授予 U5,并允许继续转授权
GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;

-- U5 执行;U6 也获得继续转授权的能力
GRANT INSERT
ON TABLE SC
TO U6
WITH GRANT OPTION;

-- U6 执行;U7 只能使用,不能继续转授权
GRANT INSERT
ON TABLE SC
TO U7;

-- 标准 SQL 语义示意:级联收回 U5 传播出的权限
-- REVOKE INSERT ON TABLE SC FROM U5 CASCADE;

-- MySQL 8.4:REVOKE 语法不带 CASCADE/RESTRICT,需按产品规则显式处理
REVOKE INSERT
ON TABLE SC
FROM U5;
Takeaway

只有带 WITH GRANT OPTION 的对象权限才可继续传播;标准 CASCADERESTRICT 与 MySQL 8.4 的回收语法不同,且其他授权路径仍可能保留权限

9/16
PROPAGATION AND REVOKE

角色把职位需要的权限组织成集合

角色集中维护共同权限;具体账户和激活方式由 DBMS 决定

SQL
CREATE ROLE R1;
GRANT SELECT, UPDATE, INSERT
ON TABLE Student
TO R1;
GRANT R1
TO 王平, 张明, 赵玲
WITH ADMIN OPTION;
-- 成员离岗时回收角色
REVOKE R1 FROM 王平;
Takeaway

WITH GRANT OPTION 管对象权限传播;WITH ADMIN OPTION 管角色管理。MySQL 8.4 角色须激活或设为默认,才进入会话有效权限

10/16
ROLES

自主存取控制让授权者决定权限传播

DAC 的灵活性来自对象所有者或授权者的自主决定

谁决定

DBA、对象属主,或拥有该权限及 WITH GRANT OPTION 的用户可以作出授权决定

决定什么

决定用户对对象可以执行哪些具体操作

风险边界

权限可能被继续传播或误授

Takeaway

DAC 解决谁能做什么,但不替代完整性检查;DAC 通过后仍需按模型检查 MAC

11/16
DAC

强制存取控制把主体和客体放入密级规则

用户不能仅靠自主授权绕过系统安全策略

数据库请求先通过自主存取控制,再通过强制密级检查
概念含义例子
主体发起访问用户或进程
客体被访问表、视图或文件
密级标记主体许可证/客体密级S/C(判断见 c3)
Takeaway

MAC 由系统按密级强制执行,不能靠普通 GRANT 转授;读写结果由主体许可证级别和客体密级共同决定

12/16
MAC LABELS

MAC 通过读写规则阻止敏感信息向下流动

设密级顺序为 TS >= S >= C >= P

规则条件结果
读取主体许可证级别 ≥ 客体密级才允许读取
写入主体许可证级别 ≤ 客体密级才允许写入
双重检查DAC 与 MAC 都通过才允许访问
主体许可证客体密级读取写入
SC允许拒绝
CS拒绝允许
SS允许允许
Takeaway

高密级主体不能把数据写回低密级对象;上表还要以 DAC 通过为前提,MAC 不是普通 MySQL GRANT 的已验证功能

13/16
MAC RULES

用身份、授权和密级规则判断访问

数据库安全性把身份、权限、策略和审计连成可检查的控制链

控制链

登录成功不等于获得对象权限,审计负责事后记录和追踪

GRANT/REVOKE

GRANT/REVOKE 处理权限、对象和接收者,继续传播需要 WITH GRANT OPTION

角色与回收

角色集中权限,WITH ADMIN OPTION 控制角色管理传播,成员变化会改变有效权限

DAC/MAC

DAC 与 MAC 可以叠加检查;主体 S 写入客体 C 会被拒绝

Takeaway

只有带 WITH GRANT OPTION 的对象权限才能传播;DAC/MAC 都通过才放行,强制规则不能被用户自行绕过

14/16
RECAP

本节知识地图

15/16
KNOWLEDGE MAP

本节问题

  1. 01安全性、完整性、运行环境安全各关注什么?SQL 注入属于哪层风险?
  2. 02为何登录成功不等于可 SELECT Student?审计能否替代授权检查?
  3. 03拆解 GRANT UPDATE(Smajor), SELECT ON Student TO U4;权限能否限到某行?
  4. 04U5 转授 U6 后,标准 CASCADERESTRICT 与 MySQL 8.4 回收有何边界?
  5. 05WITH GRANT OPTIONWITH ADMIN OPTION 各管什么?怎样回收?
  6. 06主体 S 访问客体 C 时能否读写?DAC 不通过而 MAC 通过是否足够?
16/16
CHECK YOUR UNDERSTANDING