2019独角兽企业重金招聘Python工程师标准>>>
数据库的安全性
目录:
1.安全性问题
2.SQL中的安全机制
3.常用的安全措施
1.安全性问题
1.数据库安全性的定义
定义:数据库的安全性是指保护数据库,防止不合法的使用,以免数据的泄密、更改或破坏。
完整性和安全性的区别:安全性是保护数据以防止非法用户故意造成的破坏;而完整性是保护数据以防止合法用户无意中造成的破坏。
2.安全性级别
①环境级
②职员级
③OS级
④网络级
⑤DBS级
3.权限问题
定义:用户(或应用程序)使用数据库的方式称为“权限”。
权限有两种,访问数据的权限和修改数据库结构的权限。
(1)访问数据的权限有4个
①读权限
②插入权限
③修改权限
④删除权限
(2)修改数据库模式的权限也有4个
①索引权限
②资源权限
③修改权限
④撤销权限
2.SQL中的安全机制
SQL中有4个机制提供了安全性:视图(View)、权限(Authorization)、角色(Role)和审计(Audit)。
1.视图
视图是从一个或多个基本表导出的表。但视图仅是一个定义,视图本身没有数据,不占磁盘空间。视图一经定义就可以和基本表一样被查询,也可以用来定义新的视图,但更新操作将有一定限制。
优点:数据安全性、逻辑数据独立性和操作简便性。
2.权限
DBMS的授权子系统允许有特定存取权限的用户有选择地和动态地把这些权限授予其他用户。
①用户权限
SELECT INSERT DELETE UPDATE REFERENCES USAGE
前4类权限分别允许用户对关系或试图执行查、插、删、修操作。
REFERENCES权限允许用户定义新关系时,引用其他关系的主键作为外键。
USAGE权限允许用户使用已定义的域。
②授权语句
GRANT <权限表> ON <数据库元素> TO <用户名表> [WITH GRANT OPTION]
WITH GRANT OPTIONO表示获得权限的用户还能获得传递权限,把获得的权限转授给其他用户。
③回收语句
REVOKE <权限表> ON <数据库元素> FROM <用户名表> [RESTRICT|CASCADE]
CASCADE表示回收权限时要引起连锁回收。
RESTRICT则当不存在连锁回收现象时,才能回收权限,否则系统会拒绝回收。
3.角色
在大型DBS中,用户的数量可能非常大,使用数据库的权限也各不相同。为了便于管理,引入了角色的概念。
定义:在SQL中,用户是实际的人或者是访问数据库的应用程序。而角色是一组具有相同权限的用户,实际上角色是属于目录一级的概念。
4.审计
定义:用于安全性目的的数据库日志称为审计追踪。
3.常用的安全措施
1.强制存取控制
这个方法的基本思想在于为每个数据对象(文件、记录或字段等)赋予一定的密级,级别从高到低有:绝密级、机密级、秘密级和公用级。每个用户也具有相应的级别,称为许可证级别。密级和许可证级别都是严格有序的,如:绝密>机密>秘密>公用。
在系统运行时,采用如下两条简单规则:
①用户i只能查看比它级别低或同级的数据。
②用户i只能修改和它同级的数据
第②条中,用户不能修改比它级别低的数据,为了防止用户将高级别的数据复制到较低级别的文件中。
2.统计数据库的安全性
有一类数据库称为“统计数据库”,例如人口调查数据库,它包含大量的数据,但其目的只是向公众提供统计、汇总信息,而不是提供单个记录的内容。
虽然不允许用户查询单个记录的信息,但是用户可以用过足够多的汇总信息来分析出单个记录的信息,这就给统计数据库的安全性带来严重的威胁。
在统计数据库中,对查询应作下列限制。
①一个查询查到的记录个数至少是n。
②两个查询查到的记录的”交”数目至多是n。
另一个方法——“数据污染”:也就是在回答查询时,提供一些偏离正确值的数据,以免数据泄露,当然,这个偏离要在不破坏统计数据的前提下进行。
3.数据加密法
普通加密法和明键加密法。
①普通加密法:
加密算法的输入是源文和加密键,输出是密码文。加密算法可以公开,但加密键是一定要保密的。
②明键加密法:
可以随意公开加密算法和加密键,但是相应的解密键时保密的,因此明键法有两个键,一个用于加密,一个用于解密。