数据库概论(6):数据库的安全性和完整性

本文详细介绍了数据库的安全性和完整性控制。主要内容包括用户身份鉴别、存取控制、自主存取控制、权限的grant和revoke操作、实体完整性、参照完整性和用户自定义完整性。强调了防止非法存取和保护数据正确性的重要性,并详细阐述了如何通过各种机制来确保数据库的安全性和完整性。
摘要由CSDN通过智能技术生成

安全性

数据库的不安全因素:

  • 非授权用户对数据库的恶意存取和破坏:一些黑客(Hacker)和犯罪分子在用户存取数据库时猎取用户名和用户口令,然后假冒合法用户偷取、修改甚至破坏用户数据。
  • 数据库中重要或敏感的数据被泄露:
    • 黑客和敌对分子千方百计盜窃数据库中的重要数据,一些机密 信 息被暴露。
    • 数据库管理系统提供的主要技术有强制存取控制、数
      据加密存储和加密传输等。
    • 审计日志分析
  • 安全环境的脆弱性
    • 数据库的安全性与计算机系统的安全性紧密联系
    • 计算机硬件、操作系统、网络系统等的安全性
    • 建立一套可信 (Trusted)计算机系统的概念和标准

安全标准在这里插入图片描述
安全性两个标准

TCSEC标准:
在这里插入图片描述

通用准则:CC标准
在这里插入图片描述
计算机系统中,安全措施是一级一级层层设置
在这里插入图片描述

  • 系统根据用户标识鉴定用户身份,合法用户才准许进入计算机系统
  • 数据库管理系统进行存取控制,只允许用户执行合法操作
  • 操作系统有自己的保护措施
  • 数据以密码形式存储到数据库中

数据库安全性控制的常用方法

  • 用户身份鉴别
  • 存取控制
  • 视图
  • 审计
  • 数据加密

在这里插入图片描述

用户身份鉴别

  • 系统提供的最外层安全保护措施
  • 用户标识:由用户名和用户标识号组成(用户标识号在系统整个生命周期内唯一)

用户身份鉴别的方法

  • 静态口令鉴别:静态口令-般由用户自己设定,这些口令是静态不变的
  • 动态口令鉴别:口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录(数据库管理系统,即采用一次-一密的方法)
  • 智能卡鉴别:智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能

存取控制

存取控制机制组成

  • 定义用户权限,并将用户权限登记到数据字典中
    • 用户对某一数据对象的操作权力称为权限
    • DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则
  • 合法权限检查
    • 用户发出存取数据库操作请求
    • DBMS查找数据字典,进行合法权限检查

自主存取控制方法

自主存取控制(Discretionary Access Control
简称DAC)

  • 用户对不同的数据对象有不同的存取权限
  • 不同的用户对同一对象也有不同的权限
  • 用户还可将其拥有的存取权限转授给其他用户

关系型数据库中存取控制对象
在这里插入图片描述

权限授予:grant

发出GRANT

  • 数据库管理员
  • 数据库对象创建者(即属主Owner)
  • 拥有该权限的用户

按受权限的用户

  • 一个或多个具体用户
  • PUBLIC (即全体用户)
// 把查询Student表权限授给用户U1
grant select on table student to user;
// 授予表的全部权限给用户
grant allprivileges on ...
// 授予所有用户
grant ...on ... to public
// 吧查询某列的权限授予用户
grant select(col1) ...
// 传播权限
......with grant option

权限回收:revoke

完整性

数据库的完整性

  • 数据的正确性:是指数据是符 合现实世界语义,反映了当前实际状况的
  • 数据的相容性:是指数据库同一对象在不同关系表中的数据是符合逻辑的

数据的完整性和安全性是两个不同概念

  • 数据的完整性
    • 防止数据库中存在不符合语义的数据,也就是防止数据
      库中存在不正确的数据
    • 防范对象:不合语义的、不正确的数据
  • 数据的安全性
    • 保护数据库防止恶意的破坏和非法的存取
    • 防范对象:非法用户和非法操作

为维护数据库的完整性,数据库管理系统必须:

  • 提供定义完整性约束条件的机制
    • 完整性约束条件也称为完整性规则,是数据库中的数据
      必须满足的语义约束条件
    • SQL标准使用了一系列概念来描述完整性,包括关系模
      型的实体完整性、参照完整性和用户定义完整性
    • 这些完整性一般由SQL的数据定义语言语句来实现
  • 提供完整性检查机制
    • 数据库管理系统中检查数据是否满足完整性约束条件的机制,称为完整性检查。
    • 一般在INSERT、 UPDATE、DEL .ETE语句执行后开始检查,也可以在事务提交时检查
  • 违约处理:数据库管理系统若发现用户的操作违背了完整性约束条件,就采取一定的动作
    • 拒绝(NO ACTION)执行该操作
    • 级连(CASCADE)执行其他操作

实体完整性

关系模型的实体完整性

primary key;		// 主码

单属性构成的码有两种说明方法

  • 定义为列级约束条件
  • 定义为表级约束条件

对多个属性构成的码只有一种说明方法

  • 定义为表级约束条件
create table stu (
	int A,
	int B,
	int C,
	primary key(A)
);

实体检查完整性和违约处理
插入或对主码列进行更新操作时,关系数据库管理系统按照实体完整性规则自动进行检查。

  • 检查主码值是否唯-一,如果不唯-则拒绝插入或修改
  • 检查主码的各个属性是否为空,只要有一个为空就拒
    绝插入或修改

检查记录中主码值是否唯一的一种方法是进行全表扫描

  • 依次判断表中每一条记录的主码值与将插入记录上的
    主码值(或者修改的新主码值)是否相同
  • 表扫描缺点:十分耗时
  • 为避免对基本表进行全表扫描,RDBMS核心一
    般都在主码上自动建立一个索引

参照完整性

关系模型的参照完整性定义

  • 在CREATE TABLE中用FOREIGN KEY短语定义哪些
    列为外码
  • 用REFERENCES短语指明这些外码参照哪些表的主码
create table stu(
	int A;
	int B;
	int C;
	primary key(A),		// 在表级定义实体完整性
	foreign key(C) references(A)	// 在表级定义参照完整性
);

DBMS什么时候要进行参照完整性的检查?

  • 一个参照完整性将两个表中的相应元组联系起来
  • 对被参照表和参照表进行增删改操作时有可能破坏参照完整性,必须进行检查

参照完整性违约处理

  • 拒绝( NO ACTION)执行:不允许该操作执行。该策略-一般设置为默认策略
  • 级联(CASCADE)操作:当删除或修改被参照表(Student) 的一个元组造成了与参照表(SC)的不一致,则删除或修改参照表中的所有造成不一致的元组
  • 设置为空值(SET-NULL):当删除或修改被参照表的一个元组时造成了不-致,则将参照表中的所有造成不一致的元组的对应属性设置为空值。

用户自定义完整性

属性上

CREATE TABLE时定义属性上的约束条件

  • 列值非空 (NOT NULL)
  • 列值唯一(UNIQUE )
  • 检查列值 是否满足一个条件表达式(CHECK)

属性上的约束条件检查和违约处理

  • 插入元组或修改属性的值时,关系数据库管理系统检
    查属性上的约束条件是否被满足
  • 如果不满足则操作被拒绝执行

元组上

一般是通过check

元组上的约束条件检查和违约处理

  • 插入元组或修改属性的值时,关系数据库管理系统检
    查元组上的约束条件是否被满足

完整性约束命名子句

完整性约束命名子句
CONSTRAINT <完整性约束条件名><完整性约束条件>

  • <完整性约束条件>包括NOT NULL、UNIQUE、
    PRIMARY KEY短语、FOREIGN KEY短语、CHECK
    短语等

修改表中的完整性限制
使用ALTER TABLE语句修改表中的完整性限制

alter table stu drop constraint c1;

断言

创建断言的语句格式
CREATE ASSERTION<断言名><CHECK子句>

  • 每个断言都被赋予一个名字
  • <CHECK子句>中的约束条件与WHERE子句的条件表达
    式类似。
一、实验目的 使学生加深对数据库安全性完整性的理解。并掌握SQL Server有关用户、角色及操作权限的管理方法。熟悉通过SQL语句对数据进行完整性控制。 二、实验内容和要求   数据库安全性实验,在SQL Server企业管理,设置SQL Server的安全认证模式,实现对SQL Server的用户和角色管理,设置和管理数据操作权限。   具体内容如下:   设置SQL Server的安全认证模式(Windows或SQL Server和Windows(S)认证模式)。   登录的管理 创建一个登录用户   数据库用户的管理 登陆用户只有成为数据库用户(Database User)后才能访问数据库。每个数据库的用户信息都存放在系统表Sysusers,通过查看Sysusers表可以看到该数据库所有用户的情况。SQL Server的数据库都有两个默认用户:dbo(数据库拥有者用户)和(dba)。通过系统存储过程或企业管理器可以创建新的数据库用户。   角色的管理 创建一个角色,使创建的用户成为该角色的成员,并授予一定的操作权限。   在学生表定义主键、外键约束。   在课程表的“课程名”字段上定义唯一约束。   在选课表的“成绩”字段上定义check约束,使之必须大于等于0且小于等于100.“课程号”字段只能输入数字字符。   定义规则,并绑定到读者表的“性别”字段,使之只能取“男、女”值。   在学生表增加出生日期字段。定义缺省,并绑定到借阅表的“借阅日期”上,使之只能取当前日期。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妖怪喜欢风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值