1.非授权用户对数据库的恶意存取和破坏
一些黑客(Hacker)和犯罪分子在用户存取数据库时猎取用户名和用户口令,然后假冒合法用户偷取、修改甚至破坏用户数据。数据库管理系统提供的安全措施主要包括用户身份鉴别、存取控制和视图等技术。2.数据库中重要或敏感的数据被泄露
黑客和敌对分子千方百计盗窃数据库中的重要数据,一些机密信息被暴露。数据库管理系统提供的主要技术有强制存取控制、数据加密存储和加密传输等。审计日志分析3.安全环境的脆弱性
数据库的安全性与计算机系统的安全性紧密联系 计算机硬件、操作系统、网络系统等的安全性 建立一套可信(Trusted)计算机系统的概念和标准TCSEC/TDI安全级别划分 CC评估保证级(EAL)划分
计算机系统中,安全措施是一级一级层层设置
系统根据用户标识鉴定用户身份,合法用户才准许进入计算机系统数据库管理系统还要进行存取控制,只允许用户执行合法操作操作系统有自己的保护措施数据以密码形式存储到数据库中存取控制流程
首先,数据库管理系统对提出SQL访问请求的数据库用户进行身份鉴别,防止不可信用户使用系统。然后,在SQL处理层进行自主存取控制和强制存取控制,进一步可以进行推理控制。还可以对用户访问行为和系统关键操作进行审计,对异常用户行为进行简单入侵检测。数据库安全性控制的常用方法
用户身份鉴别
系统提供的最外层安全保护措施用户标识:由用户名和用户标识号组成 (用户标识号在系统整个生命周期内唯一)用户身份鉴别的方法
1.静态口令鉴别 静态口令一般由用户自己设定,这些口令是静态不变的 2.动态口令鉴别 口令是动态变化的,每次鉴别时均需使用动态产生新口令登录数据库管理系统,即采用一次一密的方法 3.生物特征鉴别 通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等 4.智能卡鉴别 智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能存取控制机制组成
定义用户权限,并将用户权限登记到数据字典中 用户对某一数据对象的操作权力称为权限DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则 合法权限检查 用户发出存取数据库操作请求DBMS查找数据字典,进行合法权限检查 用户权限定义和合法权检查机制一起组成了数据库管理系统的存取控制子系统关系数据库系统中存取控制对象
1.GRANT
GRANT语句的一般格式: GRANT <权限>[,<权限>]... ON <对象类型> <对象名>[,<对象类型> <对象名>]… TO <用户>[,<用户>]... [WITH GRANT OPTION];语义:将对指定操作对象的指定操作权限授予指定的用户
发出GRANT: 数据库管理员数据库对象创建者(即属主Owner)拥有该权限的用户 按受权限的用户一个或多个具体用户
PUBLIC(即全体用户)
[例1] 把查询Student表权限授给用户U1
GRANT SELECT ON TABLE Student TO U1;[例2] 把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION;2.REVOKE
授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回
REVOKE语句的一般格式为: REVOKE <权限>[,<权限>]... ON <对象类型> <对象名>[,<对象类型><对象名>]… FROM <用户>[,<用户>]...[CASCADE | RESTRICT];[例3] 把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno) ON TABLE Student FROM U4;[例4] 收回所有用户对表SC的查询权限
REVOKE SELECT ON TABLE SC FROM PUBLIC;3.创建数据库模式的权限
数据库管理员在创建用户时实现
CREATE USER语句格式 CREATE USER <username> [WITH][DBA|RESOURCE|CONNECT]; 注: CREATE USER不是SQL标准,各个系统的实现相差甚远**数据库角色:被命名的一组与数据库操作相关的权限
** 角色是权限的集合可以为一组具有相同权限的用户创建一个角色简化授权的过程1.角色的创建 CREATE ROLE <角色名>
2.给角色授权 GRANT <权限>[,<权限>]… ON <对象类型>对象名 TO <角色>[,<角色>]…
3.将一个角色授予其他的角色或用户 GRANT <角色1>[,<角色2>]… TO <角色3>[,<用户1>]… [WITH ADMIN OPTION]
该语句把角色授予某用户,或授予另一个角色授予者是角色的创建者或拥有在这个角色上的ADMIN OPTION指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色一个角色的权限:直接授予这个角色的全部权限加上其他角色 授予这个角色的全部权限
4.角色权限的收回 REVOKE <权限>[,<权限>]… ON <对象类型> <对象名> FROM <角色>[,<角色>]…
用户可以回收角色的权限,从而修改角色拥有的权限REVOKE执行者是 角色的创建者拥有在这个(些)角色上的ADMIN OPTION! [例5] 通过角色来实现将一组权限授予一个用户。 步骤如下: (1)首先创建一个角色 R1 CREATE ROLE R1; (2)然后使用GRANT语句,使角色R1拥有Student表的 SELECT、UPDATE、INSERT权限 GRANT SELECT, UPDATE, INSERT ON TABLE Student TO R1; (3)将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限 GRANT R1 TO 王平,张明,赵玲; (4) 可以一次性通过R1来回收王平的这3个权限 REVOKE R1 FROM 王平;
把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护
间接地实现支持存取谓词的用户权限定义
[例6] 建立计算机系学生的视图,把对该视图的SELECT权限授于王平,把该视图上的所有操作权限授于张明 先建立计算机系学生的视图CS_Student CREATE VIEW CS_Student AS SELECT * FROM Student WHERE Sdept='CS'; 在视图上进一步定义存取权限 GRANT SELECT ON CS_Student TO 王平; GRANT ALL PRIVILIGES ON CS_Student TO 张明;什么是审计
启用一个专用的审计日志(Audit Log) 将用户对数据库的所有操作记录在上面审计员利用审计日志监控数据库中的各种行为,找出非法存取数据的人、时间和内容C2以上安全级别的DBMS必须具有审计功能1.审计事件
服务器事件 审计数据库服务器发生的事件 系统权限 对系统拥有的结构或模式对象进行操作的审计要求该操作的权限是通过系统权限获得的 语句事件 对SQL语句,如DDL、DML、DQL及DCL语句的审计 模式对象事件 对特定模式对象上进行的SELECT或DML操作的审计2.审计功能
基本功能 提供多种审计查阅方式提供多种审计查阅方式 多套审计规则:一般在初始化设定提供审计分析和报表功能审计日志管理功能 防止审计员误删审计记录,审计日志必须先转储后删除对转储的审计记录文件提供完整性和保密性保护只允许审计员查阅和转储审计记录,不允许任何用户新增和修改审计记录等 提供查询审计设置及审计记录信息的专门视图3. AUDIT语句和NOAUDIT语句
AUDIT语句:设置审计功能
NOAUDIT语句:取消审计功能
[例7] 对修改SC表结构或修改SC表数据的操作进行审计 AUDIT ALTER,UPDATE ON SC; [例8] 取消对SC表的一切审计 NOAUDIT ALTER,UPDATE ON SC;数据加密
防止数据库中数据在存储和传输中失密的有效手段加密的基本思想
根据一定的算法将原始数据—明文(Plain text)变换为不可直接识别的格式—密文(Cipher text)加密方法
存储加密传输加密存储加密
透明存储加密 内核级加密保护方式,对用户完全透明将数据在写到磁盘时对数据进行加密,授权用户读取数据时再对其进行解密数据库的应用程序不需要做任何修改,只需在创建表语句中说明需加密的字段即可 内核级加密方法: 性能较好,安全完备性较高非透明存储加密 通过多个加密函数实现传输加密
链路加密 在链路层进行加密传输信息由报头和报文两部分组成报文和报头均加密 端到端加密 在发送端加密,接收端解密只加密报文不加密报头所需密码设备数量相对较少,容易被非法监听者发现并从中获取敏感信息数据库管理系统可信传输:
第一步:创建可信连接
第二步:确认通信双方端点的可靠性
第三步:协商加密算法和密钥
第四步:可信传输数据
第五步:关闭可信连接
基于安全套接层协议SSL传输方案的实现思路: (1)确认通信双方端点的可靠性 采用基于数字证书的服务器和客户端认证方式 通信时均首先向对方提供己方证书,然后使用本地的CA 信任列表和证书撤销列表对接收到的对方证书进行验证 (2)协商加密算法和密钥 确认双方端点的可靠性后,通信双方协商本次会话的加密算法与密钥 (3)可信数据传输 业务数据在被发送之前将被用某一组特定的密钥进行加密和消息摘要计算,以密文形式在网络上传输 当业务数据被接收的时候,需用相同一组特定的密钥进行解密和摘要计算
数据隐私保护
描述个人控制其不愿他人知道或他人不便知道的个人数据的能力范围很广:数据收集、数据存储、数据处理和数据发布等各个阶段