数据库:安全性,角色权限,审计加密,存储过程 您所在的位置:网站首页 数据的安全性保护包括 数据库:安全性,角色权限,审计加密,存储过程

数据库:安全性,角色权限,审计加密,存储过程

2024-07-12 04:26| 来源: 网络整理| 查看: 265

1,数据库安全性概述

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

数据库的不安全因素:

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

数据库的安全标准:

D级 :将一切不符合更高标准的系统均归于D组C1级(非常初级的自主安全保护):能够实现对用户和数据的分离,进行自主存取控制(DAC),保护或限制用户权限的传播。C2级(安全产品的最低档次):提供受控的存取保护,将C1级的DAC进一步细化,以个人身份注册负责,并实施审计和资源隔离。 B1级(标记安全保护):对系统的数据加以标记,对标记的主体和客体实施强制存取控制(MAC)、审计等安全机制。 B2级(结构化保护):建立形式化的安全策略模型并对系统内的所有主体和客体实施DAC和MAC。B3级(安全域):该级的TCB必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程。A1级:验证设计,即提供B3级保护的同时给出系统的形式化设计说明和验证以确信各安全保护真正实现。 2,数据库安全性控制 2.1,数据库安全性控制概述

非法使用数据库的系统:

用户编写一段合法的程序绕过DBMS及其授权机制,通过操作系统直接存取、修改或备份数据库中的数据;直接或编写应用程序执行非授权操作;通过多次合法查询数据库从中推导出一些保密数据;破坏安全性的行为可能是无意的,故意的,恶意的;

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

2.2,用户识别和鉴定

用户身份鉴别是数据库管理系统提供的最外层安全保护措施。每个用户在系统中都有一个用户标识。每个用户标识都由用户名和用户标识号(UID)两部分组成。UID在系统的整个生命周期内是唯一的。系统内部记录着所有合法用户的标识,系统鉴别是指系统提供一定的方式让用户表示自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供使用数据库管理系统的权限。

也就是系统用户,非系统用户禁止访问。

用户身份鉴别方法静态口令鉴别   静态口令一般由用户自己设定,这些口令是静态不变的动态口令鉴别   口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法生物特征鉴别   通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等智能卡鉴别   智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能 2.3,存取控制

存取控制机制主要包括定义用户权限和合法权限检查两部分。

确保系统用户有访问数据库和操作数据库的权限。

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

用户对某一数据对象的操作权力称为权限。DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则。在数据库系统中,为了保证用户只能访问他有权存取的数据,必须预先对每个用户定义存取权限。

合法权限检查

用户发出存取数据库操作请求,DBMS查找数据字典,根据他的存取权限定义对他的各种操作请求进行合法权限检查,确保他只执行合法操作。 自主存取控制用户对不同的数据对象有不同的存取权限不同的用户对同一对象也有不同的权限用户还可将其拥有的存取权限转授给其他用户强制存取控制每一个数据对象被标以一定的密级每一个用户也被授予某一个级别的许可证对于任意一个对象,只有具有合法许可证的用户才可以存取 2.4,授权与回收

用户权限是由两个要素组成:数据库对象和操作类型。

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

对象类型

对象

操 作 类 型

数据库

模式/库

CREATE DATABASE

基本表

CREATE TABLE,ALTER TABLE

视图

CREATE VIEW

索引

CREATE INDEX

数据

基本表和视图

SELECT,INSERT,UPDATE,DELETE,REFERENCES,ALL PRIVILEGES

属性列

SELECT,INSERT,UPDATE, REFERENCES,ALL PRIVILEGES

授权:GRANT [,] ON [, ] TO [,] [WITH GRANT OPTION];

发出GRANT语句可是数据库管理员、数据库对象创建者或拥有该权限的用户;按受权限的用户可以是一个或多个具体用户,也可以是PUBLIC(即全体用户); 指定了WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限再授予其他的用户;否则该用户只能使用该权限,不能传播该权限;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];

【例】:把用户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 ;

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

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

2.5,数据库用户

创建用户:CREATE  USER  [WITH][DBA|RESOURCE|CONNECT];

CREATE USER不是SQL标准,各个系统的实现相差甚远只有系统的超级用户才有权创建一个新的数据库用户新创建的数据库用户有三种权限:CONNECT、RESOURCE和DBA CONNECT(默认)拥有CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库。RESOURCE用户能创建基本表和视图,成为所创建对象的属主。但不能创建模式,不能创建新的用户DBA(超级用户)可以创建新的用户、创建模式、创建基本表和视图等;DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户。

拥有的权限

可否执行的操作

CREATE USER

CREATE DATABASE

CREATE TABLE

登录数据库 ,执行数据查询和操纵

DBA

可以

可以

可以

可以

RESOURCE

不可以

不可以

不可以

不可以

CONNECT

不可以

不可以

不可以

可以,但必须拥有相应权限

2.6,数据库角色

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

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

创建角色:CREATE ROLE

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

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

将角色授权给其他角色或用户:GRANT  [,] TO  [,] [WITH ADMIN OPTION]

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

角色权限回收: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  赵玲;

3、视图机制

视图机制把要保密的数据对无权存取这些数据的用户隐藏起来,视图机制更主要的功能在于提供数据独立性,其安全保护功能太不精细,往往远不能达到应用系统的要求。

★视图机制与授权机制配合使用

首先用视图机制屏蔽掉一部分保密数据视图上面再进一步定义存取权限间接实现了支持存取谓词的用户权限定义

★视图的优点:数据安全性、数据独立性、操作简便性。

【例】:建立计算机系学生的视图,把对该视图的SELECT权限授于王平,把该视图上的所有操作权限授于张明 先建立计算机系学生的视图CS_Student CREATE VIEW CS_Student AS SELECT * FROM Student WHERE Sdept='CS'; 在视图上进一步定义存取权限 GRANT SELECT ON CS_Student TO 王平; GRANT ALL PRIVILIGES ON CS_Student TO 张明; 4,审计

★启用一个专用的审计日志(Audit Log),将用户对数据库的所有操作记录在上面

★DBA可以利用审计日志中的追踪信息,找出非法存取数据的人

★C2以上安全级别的DBMS必须具有审计功能

★审计功能的可选性:审计很费时间和空间、DBA可以根据应用对安全性的要求,灵活地打开或关闭审计功能、审计功能主要用于安全性要求较高的部门。

审计事件

服务器事件   审计数据库服务器发生的事件。系统权限事件   对系统拥有的结构或模式对象进行操作的审计,要求该操作的权限是通过系统权限获得的。语句事件   对SQL语句,如DDL、DML、DQL及DCL语句的审计。模式对象事件   对特定模式对象上进行的SELECT或DML操作的审计。

审计功能

基本功能:提供多种审计查阅方式提供多种审计查阅方式。多套审计规则:一般在初始化设定。提供审计分析和报表功能。审计日志管理功能:①防止审计员误删审计记录,审计日志必须先转储后删除;②对转储的审计记录文件提供完整性和保密性保护;③只允许审计员查阅和转储审计记录,不允许任何用户新增和修改审计记录等;提供查询审计设置及审计记录信息的专门视图。

用户级审计

任何用户可设置的审计。主要是用户针对自己创建的数据库表和视图进行审计。

系统级审计

只能由数据库管理员设置。监测成功或失败的登录要求、监测授权和收回操作以及其他数据库级权限下的操作。 5,数据加密

数据加密:是防止数据库中数据在存储和传输中失密的有效手段。

加密的基本思想:根据一定的算法将原始数据—明文变换为不可直接识别的格式­—密文。

存储加密

透明存储加密内核级加密保护方式,对用户完全透明将数据在写到磁盘时对数据进行加密,授权用户读取数据时再对其进行解密数据库的应用程序不需要做任何修改,只需在创建表语句中说明需加密的字段即可内核加密性能较好,安全完备性高。非透明存储加密通过多个加密函数实现

传输加密

链路加密

①在链路层进行加密

②传输信息由报头和报文两部分组成

③报文和报头均加密

端到端加密

①在发送端加密,接收端解密

②只加密报文不加密报头

③所需密码设备数量相对较少,容易被非法监听者发现并从中获取敏感信

6,存储过程

存储过程是用户定义的一系列SQL语句的集合,涉及特定表或其他对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。

存储过程用于执行特定的操作,可以接受输入参数、输出参数、返回单个或多个结果集。在创建存储过程时,既可以指定输入参数(IN),也可以指定输出参数(OUT),通过在存储过程中使用输入参数,可以将数据传递到执行部分;通过使用输出参数,可以将执行结果传递到应用环境。存储过程可以使对数据库的管理、显示数据库及其用户信息的工作更加容易。

存储过程存储在数据库内,可由应用程序调用执行。存储过程允许用户声明变量并且可包含程序流、逻辑以及对数据库的查询。

存储过程的优点:

存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和运算。存储过程可保证数据的安全性。通过存储过程可以使没有权限的用户在权限控制之下间接地存取数据库中的数据,从而保证数据的安全。通过存储过程可以使相关的动作一起发生,从而维护数据库的完整性。在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。可以降低网络的通信量,因为不需要通过网络来传送很多SQL语句到数据库服务量。把体现企业规则的运算程序放入数据库服务器中,以便集中控制。当企业规则发生改变时,在数据库中改变存储过程即可,无须修改任何应用程序。企业规则的特点是哟啊经常变化,如果把体现企业规则的运算程序放入应用程序中,那么当企业规则发生变化时,就需要修改应用程序,工作量非常大(修改、发布和安装应用程序)。如果把体现企业规则的运算放入存储过程中,那么当企业规则发生变化时,只要修改存储过程就可以了,应用程序无须任何变化。 #Oracle中创建存储过程 CREATE [OR REPLACE] PROCEDURE procedure_name [(argment[{IN|OUT|IN OUT}]Type, argment[{IN|OUT|IN OUT}]Type)] {IS|AS} BEGIN EXCEPTION END[存储过程];

存储过程和函数:存储过程和函数都是存储在数据库中的程序,可由用户直接或间接调用,它们都可以有输出参数,都是由一系列SQL语句组成的。

标识符不同。函数的标识符为FUNCTION,存储过程的标识符PROCEDURE.函数必须有返回值,且只能返回一个值,而存储过程可以有多个返回值。存储过程无返回值类型,不能将结果直接赋值给变量;函数有返回值类型,在调用函数时,除了用在SELECT语句中,在其他情况下必须将函数的返回值赋给一个变量。函数可以在SELECT语句中直接使用,而存储过程不能。例如,假设已有函数FUN_GETAVG()返回NUMBER类型绝对值,那么SQL语句“SELECT FUN_GETAVG(COL_A) FROM TABLE”是合法的。

存储过程和触发器:存储过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的,而是由一个事件来触发运行,即触发器是当某个事件发生时自动地隐式运行。

触发器存储过程当某类数据操纵DML语句发生时隐式地调用从一个应用或过程显示地调用在触发器内禁止使用COMMIT、ROLLBACK语句在过程体内可以使用所有PL/SQL,块中都能使用SQL语句,包括COMMIT、ROLLBACK不能接收参数输入可以接收参数输入


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有