数据库的不安全因素

对数据库安全性产生威胁的因素

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

应对策略:数据库管理系统提供的安全措施主要包括用户身份鉴别、存取控制和视图等技术。

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

应对策略:数据库管理系统提供的主要技术有 强制存取控制、数据加密存储和加密传输等。(审计日志分析)

3、安全环境的脆弱性

对应策略:建立一套可信计算机系统的概念和标准

4、安全标准简介 ( 扩展,自己看教材 )

最有影响的两个标准:TCSEC 和 CC

数据安全控制:

数据库安全控制的常用方法(重点理解):

用户身份鉴别

存取控制

视图机制

审计

数据加密

用户身份鉴别

用户身份鉴别是系统提供的最外层安全保护错去,其方法是由系统提供一定的方式让用户标识自己的名字或身份。主要手段是用户的标识和口令。

用户登陆操作系统需要用户标识和口令

用户登录DBMS需要用户标识和口令

用户身份鉴别有多种方法(需掌握):

1、静态口令鉴别

一般由用户自己设定,在用户不修改情况下是不变的。

特点:简单安全性较低

2、动态口令鉴别:

这种口令是动态变化的( 据特定算法生成不可预测的随机数字组合 ),每次鉴别时均需使用动态产生的新口令。特点,一次一密的方法,安全性高一些。

动态口令的获取:短信方式、动态令牌(银行较为常见,类似U盘的形式)方式。( 动态令牌:是用来生成动态口令终端  )

3、生物特征鉴别:

        是一种通过生物特征进行认证的技术。强调唯一性,如指纹。

        这种方式通过图像处理和模式识别技术实现鉴别认证。

        特点:较复杂,安全性较高。

4、智能卡鉴别

        智能卡是一种不可复制的硬件,内置芯片,具有硬件加密功能。

        通过读卡器进行身份验证

存取控制:只有授权用户才能访问他权限范围i内的数据。

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

1、定义用户权限,并将用户权限登记到数据字典中。

2、合法权限检查。DBMS对发出存取数据请求的用户作合法权限检查。

存取控制方法:

(1)强制存取控制(MAC, 部分DBMS支持,安全级别可达到B1  级 , 了解即可)

(2)自主存取控制(可以自主的决定授权和收权, 目前大型DBMS一般都支持,安全级别可达C2级 ):

SQL通过 grant 语句 和 revoke 语句来实现

用户权限是由两个要素组成:数据库对象和操作类型(权限可以授权也可以收权)

定义一个用户的存取权限就是要定义这个用户可以在哪些数据库对象上进行哪些类型的操作取,这种定义存取权限的操作称为授权

对象类型

对象操 作 类 型
数据库模式/库CREATE DATABASE
基本表CREATE TABLE,ALTER TABLE
视图CREATE VIEW
索引CREATE INDEX
数据基本表和视图SELECT,INSERT,UPDATE,DELETE,REFERENCES,ALL PRIVILEGES
属性列SELECT,INSERT,UPDATE, REFERENCES,ALL PRIVILEGES

发出GRANT语句可是数据库管理员(DBA)数据库对象创建者拥有该权限的用户
按受权限的用户:

可以是一个或多个具体用户,也可以是public(即全体用户); 

授权语法

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

说明:

(1)功能是将对数据库对象的指定操作权限授予用户。
(2)指定了WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限再授予其他的用户;否则该用户只能使用该权限,不能传播该权限;

(3)SQL标准允许具有WITH GRANT OPTION的用户把相应权限或其子集授予其他用户,但不允许循环授权(即被授权者不能把权限再授权回给授权者或其祖先);

【例】:把查询Student表权限授给用户U1
	GRANT  SELECT  ON  TABLE  Student  TO  U1;
【例】:把对Student表和Course表的全部权限授予用户U2和U3
	GRANT  ALL  PRIVILIGES  ON  TABLE  Student,Course  TO U2,U3;
【例】:把对表SC的查询权限授予所有用户
	GRANT SELECT ON TABLE SC  TO PUBLIC;
【例】:把查询Student表和修改学生学号的权限授给用户U4
	GRANT UPDATE(Sno), SELECT ON TABLE Student  TO U4;
【例】:把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
	GRANT INSERT  ON TABLE SC  TO U5  WITH GRANT OPTION;

回收语法

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

说明: 

CASCADE:级联,回收U6,U7被U5授予的权限,如果U6,U7被其他用户授予同样的权限,照样回收。

RESTRICT:自动级联,回收U6,U7被U5授予的权限, 如果U6,U7被其他用户授予同样的权限,仍然可用

【例】:把用户U4修改学生学号的权限收回
	REVOKE UPDATE(Sno) ON TABLE Student FROM U4;
【例】:收回所有用户对表SC的查询权限
	REVOKE SELECT ON TABLE SC FROM PUBLIC;
【例】:把用户U5对SC表的INSERT权限收回
	REVOKE INSERT ON TABLE SC FROM U5 CASCADE ;

数据库用户(角色)

创建用户:

CREATE  USER  <username> [WITH][DBA|RESOURCE|CONNECT];

CREATE USER不是SQL标准,各个系统的实现相差甚远
只有系统的超级用户才有权创建一个新的数据库用户
新创建的数据库用户有三种权限:CONNECT、RESOURCE和DBA

CONNECT(默认)拥有CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库。
RESOURCE用户能创建基本表和视图,成为所创建对象的属主。但不能创建模式,不能创建新的用户
DBA(超级用户)可以创建新的用户、创建模式、创建基本表和视图等;DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户。
拥有的权限可否执行的操作
CREATE USERCREATE DATABASECREATE TABLE登录数据库 ,执行数据查询和操纵
DBA可以可以可以可以
RESOURCE不可以不可以不可以不可以
CONNECT不可以不可以不可以可以,但必须拥有相应权限

 

数据库角色:

数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。

可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。

(1)创建角色CREATE ROLE<角色名>

        创建的角色是空的,没有实际内容。可以用GRANT为角色授权

(2)角色授权:GRANT<权限>[,<权限>] On<对象类型>对象名 TO <角色> >[,<角色>],可以将权限授予一个或几个角色

(3)将角色授权给其他角色或用户:GRANT  <角色1>[,<角色2>] TO  <角色3>[,<用户1>] [WITH ADMIN OPTION]

指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色

(4)角色权限回收:REVOKE <权限> [,<权限>] ON <对象类型> <对象名> FROM  <角色>[,<角色>]

REVOKE执行者是角色的创建者或是拥有在这个(些)角色上的ADMIN OPTION
 

例:通过角色来实现将一组权限授予一个用户

1、首先创建一个角色R1

CREATE  ROLE  R1;

2、然后使用GRANT语句,使角色R1拥有Student表的  SELECT、UPDATE、INSERT权限

GRANT SELECT, UPDATE, INSERT   ON TABLE Student  TO R1;

3、将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限

GRANT  R1  TO 王平,张明,赵玲;

4、可以一次性通过R1来回收王平的这3个权限

REVOKE  R1 FROM 王平;

5、授予张明对Student表的DELETE权限

GRANT DELETE ON TABLE Student TO 张明;

6、收回赵玲对Student表的INSERT权限

REVOKE SELECT ON TABLE Student  FROM  赵玲;

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐