数据库的安全性和完整性

简介: 数据库的安全性和完整性

1.安全性


数据库的安全性是防止不合法的操作造成数据泄露、更改或破坏。这里主要讨论用户标识和鉴别、存取控制、视图和密码存储等安全技术。


1.1用户标识和鉴别


两种常用的方式是用户标识和口令,是最外层的安全保护措施。


1.2存取控制


存取控制是数据库安全性的重点,其机制包括用户安全定义和合法权限检查,有两类方法:自主存取控制(DAC)方法和强制存取控制(MAC)方法。重点是前者


1.2.1自主存取控制


在这方法中,一个用户对不同的对象、不同用户对同一对象有不同的权限,用户还可以实现权限转授。这些过程涉及到两个操作用户权限的授权和回收。

授权(GRANT):

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


其中权限有SELECT、ALL PRIVILEGES(所有权限)、INSERT、UPDATE等(基本上就是数据定义,操纵中的语句),具体到属性列的授权要标明属性名。

对象一般是表或视图。

最后一句WITH GRANT OPTION代表被授权用户也可以授予别的用户该权限。

回收(REVOKE):

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


同前面一样,CASCADE是将该用户和该用户授予别人的权限全回收,RESTRICT有局限,这里默认是RESTRICT。


以上两个操作是对数据的操作权限,对数据库模式的授权则由DBA在创建用户时实现。格式如下:

GRANT USER <username>
[WITH] [DBA|RESOURCES|CONNECT];


该语句只有超级用户才能创建一个新的数据库用户,第二行是三种权限:

DBA:超级用户,拥有全部操作

RESOURCES:能够创建表和基本视图,是创建对象的属主,对自己的对象可以授权,但不能创建模式和新用户。

CONNECT:权限最低,只能登陆数据库,然后被授予其他权限后才能实现权限范围内的操作。


1.2.2强制存取控制


分为主体和客体,主体具有许可证级别,客体具有密级,只用许可证级别大于等于客体密级才能读取相应的客体,主要等于客体才能写相应的客体。


MAC和DAC共同组成DBMS的安全机制。


此外关于安全性还有视图机制、审计、数据加密、统计数据库安全性等操作,这里就不再赘述。


2.完整性


完整性是指数据的正确性和相容性。

主要有实体、参照、用户自定义完整性。


2.1实体完整性


是关于主码的操作:用到PRIMARY KEY定义主码,前面已经提过,其有列级定义和表级定义,定义多属性为主码只能用表级定义。

主码不唯一或者为空就拒绝插入修改。


2.2参照完整性


实质就是定义外码:FOREIGN KEY,前面已经提及,其涉及的表分为参照表和被参照表。

参照表中的外码必须在被参照表中存在,故在参照表中修改插入被参照表中不存在的元组会拒绝执行,而若在被参照表中插入删除会有拒绝、级联删除、设置为空值等操作,一般拒绝是默认。


2.3用户定义完整性


主要包括:UNIQUE 列值唯一;NOT NULL 列值非空;CHECK短语

其中CHECK()短语是检查列值是否符合括号内的表达式。


以下综合取个例子:

GREAT TABLE Student(
 sname char(8) NOT NULL
 ssex char(2) CHECK(ssex IN('男','女')//学生性别只能在男女中取
 sno char(9)
 FOREIGN KEY (sno) REFERENCES Course(sno)//外码
 PRIMARY(sname));//设置主码


最后还有个CONSTRAINT完整约束命名子句,其约束命名作用,便于修改删除,了解即可。

相关文章
|
4天前
|
关系型数据库 数据库
关系型数据库的数据完整性
关系型数据库通过一系列机制和技术手段来确保数据的完整性,从而为用户提供准确、一致和可靠的数据服务。这些措施对于保障数据的质量、满足用户需求以及维护系统的稳定运行具有重要意义。
22 5
|
4天前
|
关系型数据库 MySQL 数据库
深入MySQL数据库进阶实战:性能优化、高可用性与安全性
深入MySQL数据库进阶实战:性能优化、高可用性与安全性
179 0
|
4天前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
114 1
|
4天前
|
关系型数据库 数据库 数据安全/隐私保护
关系型数据库的数据完整性保障
【5月更文挑战第9天】关系型数据库的数据完整性保障
8 1
|
4天前
|
存储 安全 算法
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
61 0
|
2天前
|
监控 安全 关系型数据库
关系型数据库数据完整性保障
【5月更文挑战第10天】关系型数据库数据完整性保障
13 4
|
4天前
|
关系型数据库 数据库 数据库管理
关系型数据库数据一致性和完整性
【5月更文挑战第8天】关系型数据库数据一致性和完整性
22 4
|
4天前
|
存储 关系型数据库 数据库
关系型数据库的数据一致性和完整性
【5月更文挑战第1天】关系型数据库的数据一致性和完整性是数据库设计中的两个重要概念,它们共同保证了数据库中数据的准确性和可靠性。
28 2
关系型数据库的数据一致性和完整性
|
4天前
|
存储 监控 安全
|
4天前
|
SQL 关系型数据库 MySQL
MySQL数据库进阶实战:优化性能、提高安全性和实现高可用性
MySQL数据库进阶实战:优化性能、提高安全性和实现高可用性
115 0