Skip to content

数据库安全与权限控制


一、权限授予(GRANT)

1. 基础语法

sql
GRANT 权限列表 
ON [TABLE/DATABASE] 表名/数据库名 
TO 用户1, 用户2, ... / PUBLIC
[WITH GRANT OPTION];

2. 关键参数解析

  • PUBLIC:将权限授予所有用户
  • WITH GRANT OPTION:被授权用户可将此权限再授予其他用户(权限可传播)
    • 有该选项:权限可传递
    • 无该选项:权限不可传递

3. 常见权限类型(面试高频)

  • 数据操作:SELECT, INSERT, UPDATE, DELETE
  • 数据定义:CREATE, ALTER, DROP
  • 管理权限:GRANT OPTION, SUPER, REPLICATION SLAVE

4. 示例

sql
-- 给用户user1授予student表的查询权限,允许再授权
GRANT SELECT ON TABLE student TO user1 WITH GRANT OPTION;

-- 给所有用户授予course表的查询权限
GRANT SELECT ON TABLE course TO PUBLIC;

二、权限回收(REVOKE)

1. 基础语法

sql
REVOKE 权限列表 
ON [TABLE/DATABASE] 表名/数据库名 
FROM 用户1, 用户2, ... / PUBLIC
[RESTRICT | CASCADE];

2. 关键参数解析

  • RESTRICT:仅回收指定用户的权限,若用户已传播权限则报错(安全模式)
  • CASCADE:回收指定用户权限,同时级联回收其传播给其他用户的所有权限

3. 示例

sql
-- 回收user1对student表的查询权限,并级联回收其传播的权限
REVOKE SELECT ON TABLE student FROM user1 CASCADE;

三、面试必考点:数据库安全控制的核心模型

1. 自主存取控制(DAC)

  • 核心:用户自主决定权限分配(GRANT/REVOKE 实现)
  • 特点:灵活性高,但权限管理分散,存在安全风险
  • 适用:绝大多数关系型数据库(MySQL、PostgreSQL 等)

2. 强制存取控制(MAC)

  • 核心:系统强制规定用户与数据的安全级别,仅当用户级别 ≥ 数据级别时可访问
  • 特点:安全性极高,权限无法自主传播
  • 适用:高安全场景(如军事、金融数据库)

四、其他数据库安全措施(面试高频)

1. 视图机制

  • 原理:创建仅包含部分数据的视图,用户通过视图访问而非直接访问基表
  • 优势:隐藏敏感数据,实现行级/列级安全控制
  • 示例:创建仅包含学生公开信息的视图,隐藏身份证号、手机号等敏感字段

2. 审计机制

  • 原理:记录所有数据库操作日志(登录、查询、修改、授权等)
  • 作用:事后追溯安全事件,排查违规操作
  • 实现:MySQL 的 general_log、PostgreSQL 的 pgAudit 插件

3. 数据加密

  • 传输加密:SSL/TLS 协议,防止数据在网络传输中被窃取
  • 存储加密:对敏感字段(如密码、身份证号)进行哈希/对称加密存储
  • 示例:用户密码使用 bcrypt 加盐哈希存储,而非明文存储

4. 数据库防火墙

  • 原理:拦截非法SQL注入、越权访问等操作
  • 作用:实时监控数据库访问行为,阻断攻击

五、面试高频问答

1. WITH GRANT OPTIONCASCADE 的区别?

  • WITH GRANT OPTION:授权时允许用户传播权限
  • CASCADE:回收权限时级联收回其传播的所有权限
  • 关系:只有通过 WITH GRANT OPTION 授予的权限,才需要用 CASCADE 回收

2. 视图机制和权限控制的区别?

  • 权限控制:控制用户能否访问表/列,无法隐藏数据内容
  • 视图机制:不仅控制访问权限,还能隐藏敏感数据(如过滤掉身份证号列)

3. 数据加密的两种方式?

  • 传输加密:SSL/TLS,防止数据在传输中被窃听
  • 存储加密:字段级加密(如密码哈希)或表级加密,防止数据泄露后被直接读取

六、面试速记口诀

  • 权限授予看 WITH GRANT OPTION,可传权限要注意
  • 权限回收看 CASCADE,级联收回所有传播权
  • DAC 自主分配,MAC 强制管控
  • 视图藏数据,审计追操作,加密保数据,防火墙拦攻击

Powered by VitePress 1.6.4 | 持续更新中