本文内容系2024年北航软件学院数据管理技术课程课堂笔记,内容大部分取自课程PPT,少量来源于互联网,若有侵权请联系删除。文章内容如有错漏,敬请批评指正!
第七章 数据库安全
09 - 安全
7.1 数据库安全
- 安全认证
- 访问控制
- 数据保护
- 数据审计
1. 安全认证
确认试图登录数据库的用户是否被授权访问数据库的过程
认证方式
数据库认证
- 使用存储在数据库中的信息对连接到数据库的用户进行验证
- 最常用的方法:密码认证
- 缺点:
- 密码容易被盗、伪造和滥用
- 难以应对复杂的网络攻击
- 频繁的认证操作影响数据库性能
- 加强密码认证的安全措施:
- 建立密码复杂性标准
- 密码不包含敏感词,如用户名等
- 设定密码时效性,定期修改密码
外部认证:
- 强身份认证:进行双因素(如密码+短信)或多因素身份验证
- 可根据需要选择不同的身份验证机制
- 操作系统认证
- 减少数据库管理开销,提高数据库性能
- 可根据需要选择不同的身份验证机制
- 代理认证:让中央设施对网络的所有成员进行身份验证
- 有效解决网络上节点伪造身份
- 减少每个数据库认证开销
2. 访问控制
定义:按照用户的身份和权限,控制用户对数据库中数据访问
权限:允许或拒绝数据库用户提出的数据访问请求,两个要素:数据对象、操作类型
- 分类:
- 系统权限
- 启动、关闭数据库
- 转储、恢复数据库
- 创建、删除数据库等等
- 数据对象权限
- 对基本表, 视图, 存储过程,函数等数据库对象的操作权限
- 增加、删除、修改等
- 对基本表, 视图, 存储过程,函数等数据库对象的操作权限
- 列级权限:包括列的添加、修改、删除等
- 行级权限:包括行的插入、修改、删除等
- 连接级权限:包括连接控制等
- 系统权限
关注问题:阻止访问,确定、授予、撤销访问权限
权限控制语句:
-
权限授予:
Grant
-
权限收回:
Revoke
-
例:
# 对指定用户授予、收回表级查询权限 Grant select on TableA to UserA Grant all privileges on TableA to Public # 授予表A的所有权限给所有用户 Revoke select on TableA from UserA # 限定列级权限 Grant select (a, b) on TableA to UserA
谁才能授予、收回权限?
-
数据对象的创建者
-
DBA
-
拥有传播权限的用户
# With Grant Option
Grant select on TableA to UserA with grant option # 示例
# 此时UserA可以向其他用户授予TableA的Select权限
角色
是命名的权限集合,使用角色可以方便的进行授权管理
需要set default role
激活角色
角色分类:
- 服务器角色:系统内建,不可自建
- 数据库角色:可自建
- Public角色:代表所有用户都具有的权限集合
创建角色:Create Role roleA;
向角色逐个授予权限:
Grant insert, delete on tableA to roleA;
Grant execute on procedureA to roleA
将角色赋予指定用户(加入with admin option
,则该用户或角色还可以把权限再授予其他角色):
Grant roleA to UserA [with admin option]