数据库原理 - 复习(二)

本文深入探讨数据库的安全性与完整性,涵盖身份验证、存取控制、审计、视图、数据加密等方面,详细阐述了自主存取控制、强制存取控制、角色访问控制、事务的ACID特性、并发控制中的封锁协议、死锁处理等关键概念,旨在确保数据的正确性和保护免受不合法访问。
摘要由CSDN通过智能技术生成

第四章 数据库安全性

数据库的数据保护主要包括数据的安全性完整性

4.1 数据库安全性概述

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

安全性:去银行取钱需要输入密码
完整性:取的钱需要小于等于卡里面的钱


4.1.1 数据库的不安全因素

  • 非授权用户对数据库的恶意存取和破坏
  • 数据库中重要或敏感的数据被泄露
  • 安全环境的脆弱性

4.2 数据库安全性控制

存取控制(AC–Acess Control)

  • 自主存取控制方法(DAC):
    用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可以将其拥有的存取权限转授给其他用户。非常灵活。主要通过SQL的GRANT语句和REVOKE语句来实现。
  • 强制存取控制方法(MAC)
    每一个数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。较为严格。

基于角色访问控制(RBAC—Role-Based Acess Control)


数据库的安全性,主要包括身份鉴定、多层存取控制、审计、视图和数据加密等安全技术。

在这里插入图片描述

在这里插入图片描述


存取控制流程:

  • 首先,数据库管理系统对提出SQL访问请求的数据库用户进行身份验证,防止不可信用户使用
  • 然后,在SQL处理层进行自主存取控制和强制存取控制,进一步可以进行推理控制
  • 还可以对用户访问行为和系统关键操作进行审计,对异常用户行为进行简单入侵检测

4.2.1 用户身份鉴别

用户身份鉴别是数据库管理系统提供的最外层安全保护措施

每个用户在系统中都有一个用户标识

每个用户标识都由 用户名(user name) 和**用户标识号(UID) **两部分组成。

静态口令鉴别

  • 其实就是输入密码。所以,这种方式虽然简单,但容易被攻击,安全性较低。

动态口令鉴别

  • 通过生物特征进行认证。例如指纹,虹膜和掌纹等。安全性较高

智能卡鉴别

  • 智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。(就比如你去银行取钱,需要出示的不仅是银行卡号,还有身份证一样)。

4.2.3 自主存取控制方法

用户权限是由两个要素组成:数据库对象和操作类型。(用户可以在数据库的哪些对象上进行哪些操作)在数据库系统中,定义存取权限称为授权。

在关系数据库系统中,存取控制对象不仅有数据本身(基本表中的数据,属性列上的数据),还有数据库模式(包括数据库、基本表、视图和索引的创建等)。

在这里插入图片描述


4.2.4 授权:授予与收回

SQL中使用==GRANT(授予)REVOKE(收回)==语句向用户授予或收回数据的操作权限。

GRANT语法格式:

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

如果添加了WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限再授予给其他用户,但是不允许循环授权,即被授予者不能再把权限授予给授权者或祖先。
在这里插入图片描述


#把查询Student表的权限授予给用户U1
GRANT SELECT 
ON TABLE Student
TO U1;

#把对Student和Course表的全部权限授予给用户U2和U3
GRANT ALL PRIVILEGES
ON TABLE Student,Course
TO U2,U3;

#把对SC表的查询权限给所有用户
GRANT SELECT 
ON TABLE SC
TO PUBLIC;

#把查询Student表和修改学生学号的权限给U1
#注意:对属性列授权时必须明确指出相应的属性列名
GRANT SELECT,UPDATE(Sno)
ON TABLE Studnet
TO U1;

REVOKE语法格式:

REVOKE <权限>[,<权限>]...
ON <对象类型><对象名>[,<对象类型><对象名>]...
FROM <用户>[,<用户>]...[CASCADE|RESTRICT];
#把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno)
ON TABEL Student
FROM U4;

#假设U5还将INSERT权限授予给了U6用户,现在把用户U5对SC表的INSERT权限收回
REVOKE INSERT 
ON TABLE SC
FROM U5 CASCADE;
#注意:这里使用的是CASCADE,有的数据库管理系统默认为RESTRICT,将自动执行级联删除。

创建数据库模式的权限

CREAT USER <username>[WITH][DBA|RESOURCE|CONNECT];
  • 只有系统的超级用户才能授权创建一个新的数据库用户
  • 新创建的数据库用户有三种权限:CONNECT,RESOURCE,DBA
  • 如果创建时没有指定权限,默认为CONNECT权限。拥有CONNECT 权限的用户只能登录数据库。
  • 拥有RESOURCE权限的用户能创建基本表和视图,成为所创建对象的属主,但不能创建模式,不能创建新用户。可以使用GRANT将权限授予给其他用户。
  • 拥有DBA权限的用户是超级用户—无所不能。
    在这里插入图片描述

4.2.5 数据库角色

数据库角色是被命名的一组与数据库操作有关的权限,角色是权限的集合。 使用角色来管理数据库权限可以简化授权的过程。

在SQL中首先用CREAT ROLE 语句创建角色,然后用GRANT语句角色授权,用REVOKE语句回收授予角色的权限。

1.角色的创建

CREAT ROLE <角色名>

2.给角色授权

GRANT <权限>[,<权限>]...
ON <对象类型> 对象名
TO <角色>[,<角色>]...

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

GRANT <角色1>[,<角色2>]...
TO <角色3>[,<用户1>].</
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值