数据库安全性与完整性

数据库安全性与完整性

数据库安全性

概述

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

安全性控制

用户身份鉴别

静态口令鉴别
动态口令鉴别
生物特征鉴别
智能卡鉴别

存取控制

对象操作类型
模式CREATE SCHEMA
基本表CREATE table ALTER table
视图CREATE VIEW
索引CREATE INDEX
数据SELELCT INSERT UODATE DELETE REFERENCES ALL PRIVILEGES

自主存取控制方法

  • GRANT
    授予用户对数据的操作权限
GRANT 权限...
ON 对象类型 对象名...
TO 用户...
WITH GRANT OPTION;

WITH GRANT OPTION:获得该权限的用户可以将该权限授予其他用户

GRANT SELECT 
ON TABLE SC
TO U1
WITH GRANT OPTION;
GRANT UPDATE(Sno), SELECT
ON TABLE Student
TO u4;
  • REVOKE
    收回用户对数据的操作权限
REVOKE SELECT 
ON TABLE SC
FROM U1
CASCADE | RESTRICT

CASCADE :级联,收回具有权限传递的所有用户
RESTRICT:受限制的回收

  • 数据库角色
    数据库角色是被命名的一组与数据库操作相关的权限 角色是权限的集合,因此可以为一组具有相同权限的用户创建一个集合,使用角色来管理数据库可以简化授权过程

1,角色的创建

CREATE ROLE 角色名

2,角色的授权

GRANT 权限
ON 对象类型 对象名
TO 角色

3,将一个角色授予其他的角色或用户

GRANT 角色
TO 角色
WITH ADMIN OPTION 

WITH ADMIN OPTION :可以传递角色权限

4,角色权限的收回

REVOKE 权限
ON 对象类型 对象名
FROM 角色

强制存取控制方法

自主存取控制 MAC能够通过授权机制有效控制对敏感数据的存取,但是用户对数据的存取权限是 自主的,可能造成数据泄露。
主体:系统中活动实体,实际用户或用户进程
客体:是受主体操纵的,包括文件、基本表、索引、视图
敏感度标记:绝密(TopSecret)>= Secret >= Confidential >= Public

  • 仅当主体的许可级别大于或等于客体的密级的时,主体才能读取相应的客体
  • 仅当主体的许可级别小于或等于客体的密级的时,主体才能写入相应的客体

视图机制

视图:由一个表或多张表导出
为不同用户定义不同视图,把数据对象限制在一定范围。通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而对数据提供一定得保护。

CREATE VIEW CS_Student
AS
SELECT * FROM Student
WHERE Sdept = 'CS'

GRANT SELECT
ON CS_Student
TO zs;

GRANT ALL PRIVILEGES
ON cs_Student
To 系主任

数据库完整性

数据库的完整性(integrity)是指数据的正确性(correctness)和相容性(compatability)

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

约束机制

提供定义完整性约束条件的机制
实体完整性、参照完整性、用户定义完整性

实体完整性

定义在CREATE TABLE 中用 PRIMARY KEY定义。
两种定义方法:

  • 列级定义主码
CREATE TABLE Student (
	sno CHAR(9) PRIMARY KEY,
	sname CHAR(20) NOT NULL,
	Ssex CHAR,
	Sage SMALLINT,
	Sdept CHAR(20)
);
  • 表级定义主码
CREATE TABLE Student (
	sno CHAR(9),
	sname CHAR(20) NOT NULL,
	Ssex CHAR,
	Sage SMALLINT,
	Sdept CHAR(20)
	PRIMARY KEY(sno)
);

参照完整性

关系模型的参照完整性在CREATE TABLE 用FOREIGN KEY 定义哪些列为外码 REFERENCES 指明这些外码参照哪些表的主码

CREATE TABLE SC (
	sno CHAR(9) NOT NULL,
	cno CHAR(4) NOT NULL,
	grade SMALLINT,
	PRIMARY KEY(sno, cno)
	FOREIGN KEY(sno) REFERENCES Student(sno),
	FOREIGN KEY(cno) REFERENCES Student(cno),
);

用户定义完整性

  • 属性上约束条件的定义
    • 列值非空 (not null)
    • 列值唯一(unique
    • 检查列值是否满足一个条件表达式check( 短语 )
CREATE TABLE SC(
	sno char(9) unique NOT NULL,
	sex char check(sex IN ('男', '女')
	grade SMALLINT check(grade >= 0 and grade <= 100)
}
  • 元组上的约束条件定义
    当学生的性别是男时,其名字不能以Ms.开头
CREATE TABLE Student (
	sno CHAR(9),
	sname CHAR(20) NOT NULL,
	Ssex CHAR,
	Sage SMALLINT,
	Sdept CHAR(20)
	PRIMARY KEY(sno)
	CHECK (sex='女' OR sanme NOT LIKE 'MS.%')
);

完整性约束命名子句

CONSTRAIN 用来对完整性约束条件命名,从而可以灵活地增加、删除一个约束性条件。

  • 完整性约束命名子句
CONSTRAIN <完整性约束命名名> <完整性约束条件>
CREATE TABLE Student (
	sno CHAR(9)
		CONSTRAINt c1 CHECK(sno BETWEEN 1919 and 9999),
	sname CHAR(20) NOT NULL,
	Ssex CHAR,
	Sage SMALLINT,
	Sdept CHAR(20)
	PRIMARY KEY(sno)
	CHECK (sex='女' OR sanme NOT LIKE 'MS.%')
);
  • 修改表中的完整性限制
ALTER TABLE Student DROP CONSTRAINT C4; -- 删除
ALTER TABLE Student ADD CONSTRAINT C1 CHECK (sno BETWEEN 90000 AND 9999999);
ALTER TABLE Student ADD CONSTRAINT C1 CHECK (sage<14);

检查机制

提供完整性检查的方法
DBMS中检查数据是否满足完整性约束条件的机制称为完整性检查。一般在INSERT、UPDATE、DELETE语句执行后开始检查,也可在事务提交检查。

处理机制

进行违约处理
DBMS发现违约将执行一定动作:NO ACTION CASCADE

    原文作者:ZSYL
    原文地址: https://blog.csdn.net/qq_46092061/article/details/115678860
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞