【吐血整理】数据库的安全性

本文主讲 数据库的安全性,欢迎阅读~


前言:

数据库的一大特点是数据共享
数据共享必然带来数据库的安全性问题
数据库系统中的数据共享不能是无条件的共享
数据库的安全性:
保护数据库以防止不合法使用所造成的数据泄露、更改或破坏
· 系统安全保护措施是否有效是数据库系统主要的性能指标之一


一、数据库安全性概述

1 . 数据库的不安全因素

非授权用户对数据库的恶意存取和破坏
猎取用户名和用户口令,然后假冒合法用户偷取、修改甚至破坏用户数据。
数据库中重要或敏感的数据被泄露
黑客和敌对分子千方百计盗窃数据库中的重要数据,一些机密信息被暴露。
安全环境的脆弱性
数据库安全性与计算机系统安全性紧密联系(计算机硬件、操作系统、网络等安全性)

2 . 安全标准简介
在这里插入图片描述
CC(Common Criteria):2008年,CC V3.1 ISO/IEC15408-2008
CC评估等级分为EAL1、EAL2、EAL3、EAL4、EAL5、EAL6和EAL7共七个等级,等级越高,表示通过认证需要满足的安全保证要求越多,系统的安全特性越可靠。
国际标准化组织(International Organization for Standardization,ISO)


二、数据库安全性控制

非法使用数据库的情况:
① 编写合法程序绕过DBMS及其授权机制
直接(或编写应用程序)执行非授权操作
③ 通过多次合法查询数据库从中推导出一些保密数据

计算机系统中,安全措施是一级一级层层设置的:
在这里插入图片描述
用户标识鉴定用户身份,合法用户准许进入系统
数据库管理系统还要进行存取控制,只允许用户执行合法操作
操作系统有自己的保护措施
数据密文形式存储到数据库中
(ps:数据以密文形式存储在数据库中,即使前三层被攻破,最后看到的是密文的话,是比较有安全性的)

数据库安全性控制的常用方法:
用户标识和鉴定、存取控制、视图、审计、数据加密

数据库管理系统安全性控制模型:
在这里插入图片描述

1. 用户身份鉴别

静态口令鉴别
静态口令一般由用户自己设定,这些口令是静态不变的(例如自己设置的各种登陆密码即静态口令)
动态口令鉴别
口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法(例如有的地方每次登陆需要手机短信验证,每次发的验证码就是动态口令~)
生物特征鉴别
通过生物特征进行认证的技术,生物特征如人脸、指纹等(现在这个技术比较普遍啦,很多智能手机上都有指纹识别和人脸识别)
智能卡鉴别
智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能(例如:IC银行卡,IC卡是以芯片作为介质的银行卡,与磁条卡相比,芯片卡安全性高,卡内敏感数据难以被复制)

2. 存取控制

存取控制机制组成:

  • 定义用户权限
    DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则
  • 合法权限检查
    用户发出存取数据库操作请求DBMS查找数据字典,进行合法权限检查

用户权限定义和合法权检查机制一起组成了DBMS的存取控制子系统
— — — — — — — — — — — — — — — — — — — — — — — —
常用存取控制方法:

  • 自主存取控制(DAC)
    用户对不同的数据对象有不同的存取权限
    不同的用户对同一对象也有不同的权限
    用户还可将其拥有的存取权限转授给其他用户
  • 强制存取控制(MAC)
    每一个数据对象被标以一定的密级
    每一个用户也被授予某一个级别的许可证
    对于任意一个对象,具有合法许可证的用户才可以存取

3. 自主存取控制方法

通过 SQL 的GRANT 语句和REVOKE 语句实现
定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些操作
关系数据库系统中存取控制对象:
在这里插入图片描述
(ps:ALL PRIVLEGES 即全部权限)

4. 授权:授予与回收

① GRANT 授予

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

WITH GRANT OPTION子句:
指定:可以再授予
没有指定:不能传播
语义:将对指定操作对象的指定操作权限授予指定的用户(即写了WITH GRANT OPTION的话,TO之后的用户能继续传播相应的权限)
— — — — — — — — — — — — — — — — — — — — — — — —
这里举例需要用到很多用户,所以咱们先来新建几个用户
关于如何创建登录名和用户,在查阅了大量资料和自己实践后,我写了一篇博客(做了基础的讲解和示范):SQL Server 创建登录名和用户名【详细介绍】
这里我采用如下格式在STUDENT数据库下创建了U1~U7用户及对应的登录名:

CREATE LOGIN U1 WITH PASSWORD = 'henry626626', DEFAULT_DATABASE = STUDENT;
CREATE USER U1 FOR LOGIN U1;  

用以下SQL语句可查看当前数据库下的所有用户:

exec sp_helpuser;

在这里插入图片描述
好了~创建成功啦,接下来一大波例子来袭👣
— — — — — — — — — — — — — — — — — — — — — — — —
🌟来看例 1: 把查询Student表权限授给用户U1:

GRANT SELECT 
ON TABLE Student 
TO U1;

不是,这第一个例子就这么不友好吗……

  • 101
    点赞
  • 405
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值