数据库系统第四章 数据库安全性

第四章 数据库安全性

数据库安全性问题的提出:

  • 数据库的一大特点是数据可以共享。

    不同的应用可能使用相同的数据

  • 数据共享必然带来数据库的安全性问题。

    比如说有人采用攻击,病毒等手段查看数据

  • 数据库系统中的数据共享不能是无条件的共享。

    • 例: 军事秘密、国家机密、新产品实验数据、
      市场需求分析、市场营销策略、销售计划、
      客户档案、医疗档案、银行储蓄数据

数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。

比如一个人权限较小,但是使用木马等手段看到了不属于这个权限能看到的数据,就是不合法手段

不合法不是指绝对安全,是能够达到的相对的安全

系统安全保护措施是否有效是数据库系统主要的性能指标之一。

分两点:

  • 策略:比如哪些人能看哪些数据等都是策略规定的
  • 技术:比如加密技术,日志记录技术(可以记录用户操作数据库的行为)等

(一) 数据库安全性概述

1. 数据库的不安全因素

  1. 非授权用户对数据库的恶意存取和破坏
    一些黑客和犯罪分子在用户存取数据库时猎取用户名和用户口令,然后假冒合法用户头群、修改甚至破坏用户数据。

    这个主要是强调获取了身份信息从而操控数据库

    比如有的病毒可以记录键盘按下的次序,当打开数据库的时候会启动从而将密码记录下来

    数据库管理系统提供的安全措施主要包括用户身份鉴别(包括人脸识别,指纹识别等)存取控制视图等技术。

  2. 数据库中重要或敏感的数据被泄露

    黑客和敌对分子千方百计盗窃数据库中的重要数据,一些机密信息被暴露。

    主要强调数据在传输过程中被截取,截取后有两种行为:

    • 译码从而获取数据
    • 无法译码,但能破坏数据,使得传输的数据不是原来的数据

    数据库管理系统提供的主要技术有强制存取控制数据加密存储加密传输等。

    • 强制存取控制:为数据贴标签,有些标签是保密级的,有些级别更高,用户访问的时候除了看用户的权限,还要看用户的身份能否访问这个密级的数据
    • 数据加密存储:密码存储的时候就进行加密
    • 加密传输:传输时候进行加密,接收方再进行解密

    但是还要考虑数据破坏问题:

    • 传输之前对数据进行计算,要求只要变动一个值计算结果就会变动

      将数据与结果一起发送过去

      接收方用相同的函数进行计算,如果不一致,说明数据被改动

    安全要求较高的系统提供审计日志分析。对潜在的威胁提前采取措施加以防范。

    比如记录用户的密码错误次数,到达上限之后会禁止短时间内再次登录,防止脚本暴力破解密码;或者发送时机密数据按默认值发送,也会检测出来

    从用户登录到退出所有的操作都会记录

    缺点:

    1. 需要耗费系统资源(要记录每一件事)
    2. 执行速度变慢(每做一件事CPU都要记录)
    3. 消耗人力资源(需要人力来指定审计措施)

    所以安全要求较高的系统才提供

  3. 安全环境的脆弱性

    数据库的安全性与计算机系统的安全性紧密联系,主要包括计算机硬件、操作系统、网络系统等的安全性。

    数据库系统本身没问题,但是如果硬件操作系统等有木马,也会造成问题

    在计算机安全方面需要建立一套可信计算机系统的概念和标准。( 比如计算机达到什么标准才算是安全的)

下面主要讲解计算机的安全标准

2. 安全标准简介

(1) 安全标准的发展历史

  1. 1985年美国国防部(DoD)正式颁布《DoD可信计算机系统评估准则》(简称TCSEC或DoD85)
  2. 不同国家在TCSEC概念上建立了评估准则,例如:
    • 欧洲的信息技术安全评估(ITSEC)
    • 加拿大的可信计算机产品评估准则(CTCPEC)
    • 美国的信息技术安全联邦标准(FC)
  3. 1993年,CTCPEC、FC、TCSEC联合行动,解决原标准中概念和技术上的差异,称为CC(Common Criteria)项目。
  4. 1999年,CC V2.1版被ISO采用为国际标准。
  5. 2001年,CC V2.1版被我国采用为国家标准。

目前CC已基本取代了TCSEC,称为评估信息产品安全性的主要标准。

信息安全标准的发展历史图

image-20230127194558673

(2) TCSEC标准

标准介绍
  1. 1991年4月美国NCSC(国家计算机安全中心)颁布了《可信计算机系统评估标准关于可信数据库系统的解释》(简称TDI)。
  2. TDI又称紫皮书,它将TCSEC扩展到数据库管理系统,定义了数据库管理系统的设计与实现中需满足和用以进行安全性级别评估的标准。
安全等级划分

TCSEC/TDI从安全策略、责任、保证、文档四个方面来描述安全性级别划分的指标:

安全级别 定义
A1 验证设计(verified design)
B3 安全域(security domains)
B2 结构化保护(structural protection)
B1 标记安全保护(labeled security protection)
C2 受控的存取保护(controlled access protection)
C1 自主安全保护(discretionary security protection)
D 最小保护(minima protection)

四组七个等级:D、C(C1,C2)、B(B1,B2,B3)、A(A1)。
七个等级按系统可靠或可信程度逐渐增高。
各安全级别之间具有一种偏序向下兼容的关系,即较高安全性级别提供的安全保护要包含较低级别的所有保护要求,同时提供更多或更完善的保护能力。

级别 说明 补充 典型例子
D 将一切不符合更高标准的系统归于D组。DOS在安全性方面几乎没有什么专门的机制来保障。 DOS是安全标准为D的操作系统。
C1 非常初级的自主安全保护。能够实现对用户和数据的分离,进行自主存取控制(DAC),保护或限制用户权限的传播。 DAC:就是为不同的用户设计权限,规定哪些用户可以操作哪些数据 现有的商业系统稍作改进即可满足。
C2 安全产品的最低档次。提供受控的存取保护,将C1级的DAC进一步细化,以个人身份注册负责,并实施审计和资源隔离,达到C2级的产品在其名称中往往不突出“安全”这一特色。 主要就是添加了审计功能 Windows2000、Oracle7
B1 表级安全保护。“安全”或“可信的”产品。对系统的数据加以标记,对标记的主体和客体实施强制存取控制(MAC)、审计等安全机制 MAC:为数据添加标签;用户操作数据不仅看用户的权限,还要看用户的权限能否达到数据的密级。(现在多将C2与B1结合起来) 操作系统:惠普公司的HP-UX BLS release 9.09+
数据库:Oracle公司的Trusted Oracle 7、Sybase公司的Secure SQL Server version 11.0.6
B2 结构化保护。建立形式化的安全策略模型并对系统内的所有主体和客体实施DAC和MAC
B3 安全域。该级的TCB必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程 系统恢复:数据添加备份,当数据被破坏之后能够恢复数据。
有两个方面:
1. 黑客攻击数据库,破坏数据
2. 自然灾害破坏服务器
A1 验证设计。即提供B3级保护的同时给出系统的形式化设计说明和验证以确信各安全保护真正实现。 要验证DAC与MAC是否真的起作用了

(3) CC标准

CC标准:提出国际公认的表述信息技术安全性的结果,把信息产品的安全要求分为安全功能要求、安全保证要求。
CC文本组成:

  1. 简介和一般模型:有关术语、基本概念和一般模型以及与评估有关的一些框架。
  2. 安全功能要求:列出了一系列类、子类和组件。11大类、66个子类和135个组件构成。
  3. 安全保证要求:列出了一系列保证类、子类和组件。提出了评估保证机器,从EAL1至EAL7共分为七级。
评估保证级 定义 TCSEC安全级别(近似相当)
EAL1 功能测试(functionally tested)
EAL2 结构测试(structurally tested) C1
EAL3 系统地测试和检查(methodicolly ) C2
EAL4 系统地设计、测试和复查(methodically designed,tested and tested) B1
EAL5 半形式化设计和测试(semiformally designed and tested) B2
EAL6 半形式化验证的设计和测试(semiformally verified design and tested) B3
EAL7 形式化验证的设计和测试(formally verified design and tested) A1

(二) 数据库安全性控制[技术]

概述

(1) 非法使用数据库的情况

  1. 编写合法程序绕过数据库管理系统及其授权机制。

    强调获取授权机制

  2. 直接或编写应用程序执行非授权操作。

    没有获得授权

  3. 通过多次合法查询数据库从中推导出一些保密数据。

    比如个人工资是保密的,甲乙丙三名员工,甲乙查出平均工资推导出丙的工资

(2) 计算机系统的安全模型

image-20230127200827131

  • 用户要求进入计算机系统时,系统首先根据输入的用户标识进行用户身份鉴定,只有合法的用户才准许进入计算机系统;
  • 对已进入系统的用户,数据库管理系统还要进行存取控制,只允许用户执行合法操作;
  • 操作系统也会有自己的保护措施;
  • 数据最后还可以以密码形式存储到数据库中(例如md5加密密码等信息)。

(3) 数据库有关的安全性

数据库安全性主要包括:用户身份验证、多层存取控制、审计、视图、数据加密等安全技术。

(4) 存取控制流程

image-20230127201310026

  1. 首先,数据库管理系统对提出SQL访问请求的数据库用户进行身份鉴别,防止不可信用户使用系统。
  2. 然后,在SQL处理层进行自主存取控制和强制存取控制,进一步可以进行推理控制。
  3. 还可以对用户访问行为和系统关键操作进行审计,对异常用户行为进行简单入侵检测。

1. 用户身份鉴别

  1. 用户身份鉴别概念
    用户身份鉴别是指每个用户在系统中都有一个用户标识,每次用户要求进入系统时,由系统核对,通过鉴定后提供数据库管理系统的使用权限。它是系统提供的最外层安全保护措施
  2. 用户标识组成
    用户标识由用户名和用户标识号组成,用户标识号在系统整个生命周期内唯一。
  3. 口令
    系统核对口令以鉴别用户身份 (口令可理解为密码)
  4. 用户标识和口令易被窃取
    每个用户预先约定好一个计算过程或者函数

常用的用户身份鉴别方式由以下几种

(1) 静态口令鉴别

  • 这种方式是当前常用的鉴别方法。
  • 静态口令一般由用户自己设定,鉴别时只要按要求输入正确的口令,系统将允许用户使用数据库管理系统。
  • 这些口令是静态不变的,在实际应用中,用户常常用自己的生日、电话、简单易记的数字等内容作为口令,很容易被破解。而一旦被破解,非法用户就可以冒充该用户使用数据库。
  • 这种方式虽然简单,但容易被攻击,安全性较低。

(2) 动态口令鉴别

  • 它是目前较为安全的鉴别方式。
  • 这种方式的口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法。
  • 常用的方式如短信密码和动态令牌方式,每次鉴别时要求用户使用通过短信或令牌等途径获取的新口令登录数据库管理系统。
  • 与静态口令鉴别相比,这种认证方式增加了口令被窃取或破解的难度,安全性相对高一些。

(3) 生物特征鉴别

  • 它是一种通过生物特征进行认证的技术,其中,生物特征是指生物体唯一具有的,可测量、识别和验证的稳定生物特征,如指纹、虹膜和掌纹等
  • 这种方式通过采用图像处理和模式识别等技术实现了基于生物特征的认证,- 与传统的口令鉴别相比,无疑产生了质的飞跃,安全性较高。

(4) 智能卡鉴别

  • 智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。
  • 智能卡由用户随身携带,登录数据库管理系统时用户将智能卡插入专用的读卡器进行身份验证。
  • 由于每次从智能卡中读取的数据是静态的,通过内存扫描或网络监听等技术还是可能截取到用户的身份验证信息,存在安全隐患
  • 因此,实际应用中一般采用个人身份识别码(PIN)和智能卡相结合的方式。这样,即使PIN或智能卡中有一种被窃取,用户身份仍不会被冒充。

2-1 存取控制

(1) 存取控制机制组成

用户权限定义和合法权检查机制一起组成了数据库管理系统的存取控制子系统。

  1. 定义用户权限,并将用户权限登记到数据字典中
    权限是指用户对某一数据对象的操作权力。
    DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则。
  2. 合法权限检查
    每当用户发出存取数据库的操作请求后(请求一般应包括操作类型、操作对象和操作用户等信息),数据库管理系统查找数据字典,根据安全规则进行合法权限检查,若用户的操作请求超出了定义的权限,系统将拒绝执行此操作。

定义用户权限合法权限检查机制一起组成了数据库管理系统的存取控制子系统

(2) 常用存取控制方法(简)

自主存取控制DAC
  • 自主存取控制(简称DAC)中用户对不同数据对象有不同的存取权限,不同的用户对统一对象也有不同的权限,用户可将其拥有的存取权限转授给其他用户。

    转授不是说自己就没有权限了,自己转授给别人权限,自己的权限仍然存在的

  • C2级的数据库管理管理系统支持自主存取控制。

强制存取控制MAC
  • 强制存取控制(简称MAC)中每一个数据对象被标以一定的密级,每一个用户也被授予某一级别的许可证,对于任意一个对象,只有具有合法许可证的用户才可以存取。
  • B1级的数据库管理系统支持强制存取控制。

下面就对DAC与MAC进行详细讲解

2-2 自主存取控制方法(详)

SQL标准的通过GRANT语句和REVOKE语句实现自主存取控制。

  1. 用户权限概念
    定义用户存取权限就是定义用户可以在哪些数据库对象上进行哪些类型的操作。定义存取权限称为授权。

  2. 用户权限组成
    数据对象、操作类型

    image-20230127204118120

    定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作

  3. 关系数据库系统中存取控制对象,就是上面表格中的模式,基本表之类的

(1) 授权:授予与回收—用户

① 授予GRANT

GRANT语句的一般格式:

GRANT <权限>[,<权限>]... 
[ON <对象类型> <对象名>]
TO <用户>[,<用户>]...
[WITH GRANT OPTION];

语义:将对指

说明:

  1. 发出GRANT法人可以是数据库管理员(DBA)数据库对象创建者(即属主Owner)、拥有该权限的用户(用户有权限,就可以授权给别人,前提是WITH GRANT OPTION。
  2. 接受权限的用户可以是一个或多个具体用户、PUBLIC(即全体用户)。
  3. WITH GRANT OPTION子句:有,表示该权限可以再授予其他用户。没有,表示该权限不可以再授予其他用户。
  4. SQL标准不允许循环授权。定操作对象的指定操作权限授予指定的用户

image-20230127213351648

[例1] 把查询Student表权限授给用户U1

GRANT SELECT 
ON TABLE Student 
TO U1;

[例2] 把对Student表和Course表的全部权限授予用户U2和U3

GRANT ALL PRIVILIGES 
ON TABLE Student, Course 
TO U2, U3;

[例3] 把对表SC的查询权限授予所有用户

GRANT SELECT 
ON TABLE SC 
TO PUBLIC;

[例4] 把查询Student表和修改学生学号的权限授给用户U4

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

对属性列的授权时必须明确指出相应属性列名

[例5] 把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户

GRANT INSERT 
ON TABLE SC 
TO U5
WITH GRANT OPTION;

执行例5后,U5不仅拥有了对表SC的INSERT权限,
还可以传播此权限:

[例6]

GRANT INSERT 
ON TABLE SC 
TO U6
WITH GRANT OPTION;

[例7]

GRANT INSERT ON TABLE SC TO U7;

但U7不能再传播此权限,因为没有写这条语句WITH GRANT OPTION

下表是执行了「例1]到「例7]的语句后,学生-课程数据库中的用户权限定义表

image-20230127213735886

② 回收REVOKE

授予的权限可以由DBA或其他授权者用REVOKE语句收回
REVOKE语句的一般格式为:

REVOKE <权限>[,<权限>]... 
[ON <对象类型> <对象名>]
FROM <用户>[,<用户>]...
[CASCADE|RESTRICT];

[例8] 把用户U4修改学生学号的权限收回

REVOKE UPDATE(Sno)
ON TABLE Student 
FROM U4;

[例9] 收回所有用户对表SC的查询权限

REVOKE SELECT 
ON TABLE SC 
FROM PUBLIC;

[例10] 把用户U5对SC表的INSERT权限收回

REVOKE INSERT 
ON TABLE SC 
FROM U5 
CASCADE ;

将用户U5的INSERT权限收回的时候必须级联(CASCADE)收回 系统只收回直接或间接从U5处获得的权限

执行「例8〕到「例10]的语句后,学生-课程数据库中的用户权限定义表

image-20230127214629570

总结:

  1. 数据库管理员的授权:
    • 拥有所有对象的所有权限
    • 根据实际情况不同的权限授予不同的用户。
  2. 用户的授权:
    • 拥有自己建立的对象的全部的操作权限
    • 可以使用GRANT,把权限授予其他用户。
  3. 被授予用户的权限:
    • 如果具有“继续授权”的许可,可以把获得的权限再授予其他用户。
  4. 所有授予出去的权力在必要时又都可用REVOKE语句收回。
③ 创建数据库模式的权限

在Mysql中,创建数据库模式应该就是创建数据库

数据库管理员在创建用户时实现对创建数据库模式的权限。

  1. CREATE USER语句格式
CREATE USER <username>
[WITH] [DBA|RESOURCE|CONNECT];

说明:

  1. 只有系统的超级用户才有权创建一个新的数据库用户。
  2. 新创建的数据库用户有三种权限:CONNECT、RESOURCE和DBA。
  3. 如没有指定创建的新用户的权限,默认该用户拥有CONNECT权限。
  4. 拥有CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库。
  5. 拥有RESOURCE权限的用户能创建基本表和视图,成为所创建对象的属主。但不能创建模式,不能创建新的用户。
  6. 拥有DBA权限的用户是系统中的超级用户,可以创建新的用户、创建模式、创建基本表和视图等;DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户。

(2) 数据库角色

  • 数据库角色是指被命名的一组与数据库操作相关的权限,角色是权限的集合
  • 可以为一组具有相同权限的用户创建一个角色,简化授权的过程。
  • SQL中首先用CREATE ROLE语句创建角色,然后用GRANT语句授权用REVOKE收回授予角色的权限

假如100个用户实际上都是学生,现在为每个学生赋予查询的权限,按照上面的语法,每个人都要执行一次GRANT,就很麻烦了。使用角色,为一群用户添加角色,要全部授权时只需要为角色授权即可

创建角色
CREATE ROLE <角色名>;
给角色授权
GRANT <权限>[,<权限>]...
ON <对象类型>对象名
TO <角色>[,<角色>]...;
将一个角色授予其他的角色或用户
GRANT <角色1> [,<角色2>]...
TO <角色3>[,<用户1>]...
[WITH ADMIN OPTION];

说明:

  1. 该语句把角色授予某用户,或授予另一个角色。
  2. 授予者是角色创建者或拥有在这个角色上的ADMIN OPTION
  3. 指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色。
角色权限的收回
REVOKE <权限> [,<权限>]...
ON <对象类型> <对象名>
FROM <角色> [,<角色>]...;

说明:

  1. 用户可以回收角色的权限,从而修改角色拥有的权限。
  2. REVOKE执行者是:角色的创建者拥有在这个(些)角色上的ADMIN OPTION

[例11] 通过角色来实现将一组权限授予一个用户。

步骤如下

  1. 首先创建一个角色 R1
CREATE ROLE R1;
  1. 然后使用GRANT语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限
GRANT SELECT,UPDATE,INSERT 
ON TABLE Student 
TO R1;
  1. 将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限
GRANT  R1 
TO 王平,张明,赵玲;
  1. 可以一次性通过R1来回收王平的这3个权限
REVOKE  R1 
FROM 王平;

[例12] 角色的权限修改

GRANT DELETE 
ON TABLE Student
TO R1

[例13] 角色权限的收回

REVOKE SELECT 
ON TABLE Student
FROM  R1;

2-3 强制存取控制方法(详)

(1) 自主存取控制缺点

可能存在数据“无意泄露”的风险。

  • 原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记。

    假如黑客绕过了权限审核或者登录系统或者获取了有权限人的登录密码,就会看到数据

  • 解决:对系统控制下的所有主客体实施强制存取控制策略。

我们要达到的是,即使用户得到了有权限者的密码并登录,也不能看到隐秘数据

(2) 强制存取控制介绍

  • 作用:保证更高程度的安全性、用户不能直接感知或进行控制。

    适用于对数据有严格而固定密级分类的部门,如军事部门、政府部门。

在强制存取控制中实体分类

  1. 主体:主体是系统中的活动实体。包括数据库管理系统所管理的实际用户代表用户的各进程
  2. 客体:客体是系统中的被动实体,包括受主体操纵文件、基本表、索引、视图。

敏感度标记

  • 对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记。

  • 敏感度标记分成若干级别:

    绝密(TS)、机密(S)、可信(C)、公开(P)。

  • 密级的次序为:TS>=S>=C>=P。

  • 主体的敏感度标记称为许可证级别

    客体的敏感度标记称为密级

(3) 强制存取控制规则

  1. 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。

  2. 仅当主体的许可证级别小于或等于客体的密级时,该主体才能相应的客体。

    第二点比较难以理解

    许可证为P的用户可以写绝密(TS)的文件,但是写之后就无法读取了,保证了文件的密级

    许可证为TS的用户不可以写(S)的文件,假设可以写,那么该用户就可以将信息由S转变为P,就改变了文件的密级

说明:

  1. 强制存取控制(MAC)是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据。

    (密级是对数据进行标记,而不是对表或者元组进行标记)

  2. 实现强制存取控制时要首先实现自主存取控制。
    原因:较高安全性级别提供的安全保护要包含较低级别的所有保护。

  3. 自主存取控制与强制存取控制共同构成数据库管理系统的安全机制。

(4) DAC与MAC共同构成DBMS的安全机制

image-20230127230710501

系统首先进行自主存取控制检查,通过自主存取控制检查的数据对象再由系统进行强制存取控制检查,只有通过强制存取控制检查的数据对象方可存取。

假设李华是学生,要查看学生信息表

  • 经过DAC检查,可以查看该表
  • 但是经过MAC检查,身份证信息的密级大于学生的许可证,因此看不到身份证信息

3. 视图机制

视图对数据库安全的作用:

  • 把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护。
  • 间接地实现支持存取谓词的用户权限定义。

[例14]建立计算机系学生的视图,把对该视图的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  张明; 

4. 审计

安全性要求很高的数据库才用审计,因为审计是很耗费计算机资源的;由审计的数据库消耗空间比较大,效率也比较低

(1) 概念

  1. 审计日志:启用一个专用的审计日志,将用户对数据库的所有操作记录在上面。
  2. 审计员:审计员利用审计日志监控数据库中的各种行为,找出非法存取数据的人、时间和内容。
  3. C2以上安全级别的DBMS必须具有审计功能。

(2) 审计功能的可选性

  1. 审计很费时间和空间。
  2. DBA可以根据应用对安全性的要求,灵活地打开或关闭审计功能。
  3. 审计功能主要用于安全性要求较高的部门。

(3) 审计事件

就是审计可以记录哪些事件

事件 说明 补充
服务器事件 审计数据库服务器发生的事件 包括登录服务器,操作服务器的数据等
系统权限 对系统拥有的结构或模式对象进行操作的审计,要求该操作的权限是通过系统权限获得的
语句事件 对SQL语句,如DDL、DML、DQL及DCL语句的审计
模式对象事件 对特定模式对象上进行的SELECT或DML操作的审计

(4)审计功能

  1. 基本功能:提供多种审计查阅方式。

  2. 多套审计规则:一般在初始化设定(创建数据库的时候定义审计规则)。

  3. 提供审计分析和报表功能。

  4. 审计日志管理功能。

    • 防止审计员误删审计记录,审计日志必须先转储后删除。
    • 对转储的审计记录文件提供完整性和保密性保护。
    • 只允许审计员查阅和转储审计记录,不允许任何用户新增和修改审计记录等。

    总之就是要保证审计日志的完整性和正确性,防止被篡改

  5. 提供查询审计设置及审计记录信息的专门视图。

    就是提供审计访问的权限

(5) 审计分类

审计分为用户级审计和系统级审计。

  1. 用户级审计

    任何用户可设置的审计,主要是用户针对自己创建的数据库表和视图进行审计

  2. 系统级审计

    只能由数据库管理员设置,检测成功或失败的登录要求、检测授权和收回操作以及其他数据库级权限下的操作

(6) AUDIT语句和NOAUDIT语句

AUDIT语句设置审计功能,NOAUDIT语句取消审计功能。

[例15]对修改SC表结构修改SC表数据的操作进行审计

AUDIT ALTER,UPDATE  
ON  SC;

ALTER是修改表的结构,UPDATE是修改表的数据

[例16]取消对SC表的一切审计

NOAUDIT  ALTER,UPDATE  
ON SC;

(7) 其他说明

说明:

  1. 审计设置和审计日志一般存储在数据字典中。

  2. 必须打开审计开关,系统参数audit_trail设为true,才能在系统表SYS_AUDITTRAIL中看到审计信息。

    AUDIT语句也只有打开审计开关之后才能有效执行

  3. 数据库安全审计系统提供一种事后检查的安全机制。

    而前面的存取控制是前置的安全机制。

总之操作数据库都是会被记录的,所以删库跑路也会被记录到的

5. 数据加密

前面几个方法是防止数据被非法 获取、修改,数据加密是从根本上保证防止数据被非法读取和修改

  • 数据加密是防止数据库中数据在存储传输中失密的有效手段。
    • 存储:对数据加密后即使非法获取,获取的也是加密后的数据,无法译码的话也就无法获得数据的真实内容
    • 传输中:黑客无法获得读取数据的权限,但是可以监听传输;在传输过程中采用密文传输保证安全性
  • 加密的基本思想是根据一定的算法将原始数据–明文变换为不可直接识别的格式–密文。
    • 明文和密文表面上找不出任何关系
  • 数据加密包括存储加密和传输加密。

(1) 存储加密

  1. 透明存储加密

    1. 内核级加密保护方式,对用户完全透明。

      在计算机中,透明两个字意味着用户不需要知道底层的原理

    2. 将数据在写到磁盘时对数据进行加密,授权用户读取数据时再对其进行解密。

    3. 数据库的应用程序不需要做任何修改,只需要在创建表语句中说明需加密的字段即可。

    4. 内核级加密方法:性能较好,安全完备性较高。

密钥:在加密解密过程中需要的数据;加密解密函数可能是公开都知道的,但是相同的数据加密解密后的结果是根据函数中的某些参数决定的,参数不同,结果就不同。

而这些参数就叫做密钥

​ 透明存储加密是数据在写到磁盘时对数据进行加密,授权用户读取数据时再对其进行解密。由于数据加密对用户透明,数据库的应用程序不需要做任何修改,只需在创建表语句中说明需加密的字段即可。当对加密数据进行增、删、改、查询操作时,数据库管理系统将自动对数据进行加、解密工作。基于数据库内核的数据存储加密、解密方法性能较好,安全完备性较高。

  1. 非透明存储加密
    通过多个加密函数实现。

有的时候数据库不是私有的,而是共享的,这时通过内核加密可能就无效了

因此可以在应用程序中进行加密,将加密后的数据写到数据库中

比如说在写密码之前,现在程序中用md5进行加密之后,然后写到数据库中

(2) 传输加密

  1. 链路加密

    在链路层进行加密。

    传输信息由报头和报文两部分组成,报文和报头均加密。

对报文和报头进行加密,其中报文内有地址,也就是说即使是中间的传递员也不一定知道地址是啥

只有体系内的中介才能进行解密从而知道地址

链路加密防止体系外的人获取信息

  1. 端到端加密

    除了路途要加密,数据本身也要加密

    1. 在发送端加密,接收端解密。
    2. 只加密报文不加密报头。
    3. 所需密码设备数量相对较少(报头不用加密,减少了加密环节),容易被非法监听者发现并从中获取敏感信息(可以监听用户一直发快递从而进行推断)。
  • 端到端加密对传输数据在发送端加密,接收端解密。它只加密报文,不加密报头。与链路加密相比,它只在发送端和接收端需要密码设备,而中间节点不需要密码设备,因此它所需密码设备数量相对较少。但这种方式不加密报头,从而容易被非法监听者发现并从中获取敏感信息。

数据库管理系统可信传输示意图

image-20230128101507966

步骤 说明 举例
创建可信连接 服务器要认定用户是可信的用户,比如说办理过该业务的,是正常的用户;用户也要认定服务器确实是目的服务器,而不是伪造的服务器 通过数字证书CA;比如在银行办卡会得到一个整数,就是在银行的可靠证明。
服务器中会记录整数的信息;而证书中也会记录服务器的信息
确认通信双方端点的可靠性 采用基于数字证书的服务器和客户端认证方式。通信时均首先向对方提供己方证书,然后使用本地的CA信任列表和证书撤销列表对接收到的对方证书进行验证。 当用户和银行进行链接时,用户和服务器都需要出示证书
协商加密算法和密钥 确认双方端点的可靠性后,通信双方协商本次会话的加密算法与密钥。 数字证书CA会记录密钥,确定加密的方式
可信传输数据 数据在被发送前用某一组特性的密钥进行加密和消息摘要计算,以密文形式在网络上传输。数据被接收的时候,需要相同一组特定的密钥进行解密和摘要计算。 加密防止数据被窃取;消息摘要能够判断传输数据是否被破坏,主要用到hash函数,只要有一位变化,结果就会不一样;传输的时候将数据与摘要都发送
关闭可信连接

关键是第二部和第三部

6. 其他安全性保护

  1. 推理控制
    处理强制存取控制未解决的问题,避免用户利用能够访问的数据推知更高级的数据。
    常用方法:基于函数依赖的推理控制、基于敏感关联的推理控制。

  2. 隐蔽信道
    处理强制存取控制未解决的问题。防止用户用正常传输的通路传递非法数据

    比如用户A的许可证级别是TS,用户B为P;

    正常情况下不允许A看到TS信息之后传给B;

    比如Student表中的Sname是unique的,A插入张三的信息后,如果B也插入张三,那么给B返回0表示错误,否则返回1表示插入成功;

    但如果A是TS的,读取到了TS的数据是010,那么可以与B约定,比如A和B同时插入学生1,那么B得到0;A插入学生2,B插入学生3,那么B得到1;A插入学生4,B插入学生4,B得到0;
    最终通过合法的方式使得A将数据传递给了B

    可以阻断AB之间的传输,就是不允许AB之间进行约定

  3. 数据隐私保护
    描述个人控制其不愿他人知道或他人不便知道的个人数据的能力。主要用于数据收集存储处理和数据发布等各个阶段。

(三) 小结

  1. 数据库管理系统是管理数据的核心,必须有套完整而有效的安全性机制。
  2. 数据库管理系统的主要安全措施有:
    1. 用户身份鉴别;
    2. 自主存取控制和强制存取控制技术;
    3. 视图技术和审计技术;
    4. 数据加密存储和加密传输。
posted @ 2023-10-07 17:51  Crispy·Candy  阅读(260)  评论(0编辑  收藏  举报