数据库安全性和数据的完整性

不安全因素

1、非授权用户对数据库的恶意存取和破坏

  • 一些黑客(Hacker)和犯罪分子在用户存取数据库时猎取用户名和用户口令,然后假冒合法用户偷取、修改甚至破坏用户数据。
  • 数据库管理系统提供的安全措施主要包括用户身份鉴别、存取控制和视图等技术。

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

  • 黑客和敌对分子千方百计盗窃数据库中的重要数据,一些机密信息被暴露。
  • 数据库管理系统提供的主要技术有强制存取控制、数据加密存储和加密传输等。
  • 审计日志分析

3、安全环境的脆弱性

制定的标准

TCSEC/TDI标准包含安全策略、责任、保证、文档四个方面

CC标准包含安全功能要求和安全保证要求

数据库安全性和数据的完整性_第1张图片

 安全性控制

数据库安全性和数据的完整性_第2张图片

用户身份鉴别

是合法用户(账户、密码、脸部识别、虹码识别等)

静态口令:口令不经常修改,安全性较低;

动态口令:每次登录使用新生成的口令;

智能卡等

存储控制机制/角色

Oracle为例:

Oracle将角色和权限分开,角色是一组权限,给用户赋予权限即可。

权限包含:系统权限(session/table/index/view/sequence/trriger的创建权限)

                  对象权限:数据的增删改查

角色:系统一般预定义了DBA、connect、resource三个角色,DBA是管理员,开发一般使用connect和resource。

常用命令:

       (1)SELECT * FROM user_sys_privs;  // 查看当前用户的所有系统权限,ADMIN_OPTION为yes,代表可以转授

数据库安全性和数据的完整性_第3张图片

        (2)SELECT * FROM USER_ROLE_PRIVS; // 查看当前用户的角色   数据库安全性和数据的完整性_第4张图片

         (3)给用户赋予角色

                grant 角色名 to 用户名

                grant 角色权限 on 对象 to 用户  

                grant 角色|权限 on 对象 to 用户 with grant option,是否允许用户转授此权限,不允许循环授权

                grant 角色 to 角色 withi anmin option with admin option是可以把角色再授予其它角色,授予者是角色的创建者或者拥有角色的admin option

GRANT SELECT,DELETE,UPDATE,INSERT ON zhang.person TO CHENMH ;

        (4)SELECT * FROM USER_TAB_PRIVS;  查看当前用户的对象权限

        (5)自定义角色

                create role student; -----创建角色

                grant select on class to student; -----授权角色

                drop role student; -----删除角色

        (6)回收权限

                reovke 权限 on 对象 from 用户 [cascade|restrict] cascade为级联回收,当此用户给别的用户授权过的话,则一起回收,restrict为受限回收,需要先把此用户给别人授过的权限回收后,此权限才能回收。

强制存取控制

自主存取控制仅仅通过对数据的存取权限来进行安全控制,而对数据本身并无安全性标记,比如财务可以看到所有人的工资,其它人看不到所有人的工资,但是财务将数据复制到自己新建的表中,并且允许所有人查看,则会造成所有人都可以看到工资了。

给用户(主体)和对象(客体)设置敏感度标记(绝密>机密>可信>公开),当主体的许可证级别大于或等于客体的密级时,才允许读;当主体的许可证级别小于或等于客体的密级时,才允许写。

视图机制设置访问

前面的都是表和列,无法控制行或者某些符合条件的行,使用视图可以实现根据存储谓词的操作。

审计

前面的都是预防性的措施,审计是监控措施,启动一个专用的审计日志,将用户对数据库的所有操作都记录到日志中。

注:审计日志耗时、耗费性能,并且需要关注文件大小和转储

用户级审计:当前用户

系统级审计:系统管理员

ORACLE为例:

33.Oracle精细化审计_哔哩哔哩_bilibili

(1)查看是否开启审计 show parameter audit;

 第一个是审计日志的目录,第二个是是否开启,sudit_trail是开启的审计级别

数据库安全性和数据的完整性_第5张图片

数据的完整性

        正确性:性别的取值只能是男或者女

        完整性:不同表的关联值不能错误,即选课的课程必须存在

方法:

完整性约束机制(定义、自动检查、违反时违约机制),其中违约后有两种,一种是直接解决,一种是级联,即选课时,课程不存在,则默认加一个课程,此时已经满足了,在插入学生的选课。

实体完整性:关系的主属性不能取空值,使用主键,代表了实体唯一,为防止全表扫描,都会自动建立一个B+索引。

参照完整性:外键或者取空值,或者为关联表某个元组的主码的值,外键即可,

用户定义的完整性:列值非空、列值唯一、列值范围,已在Oracle学习 CSDN

断言:

触发器:

你可能感兴趣的:(数据库,安全)