ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:62.04KB ,
资源ID:4533980      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4533980.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(三权分立的应用.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

三权分立的应用.docx

1、三权分立的应用三权分立的应用三权分立的应用1 三权分立简介摘要:在数据库的应用系统中,有时需要将数据访问的权限控制到行级,通过应用系统实现的方法也有很多,但如何保障高安全性、提高大数据量的查询效率问题一直是人们讨论的话题。达梦数据库(简称DM)三权分立安全管理机制提供了很好的解决方案。利用DM的强制访问控制,可以使数据的访问粒度达到行级,具有控制灵活,高安全性、即使数据量较大时查询效率高等特点。本文从一个实际应用为例,介绍DM三权分立的应用,为应用系统提供一套解决方案以做参考。1 三权分立简介DM三权分立安全管理机制旨在构建高安全性数据库,以三权分立安全管理机制为基础的DM安全版数据库的安全级

2、别已达到B1级。DM在安全管理方面采用了三权分立的安全管理体制,即把系统管理员分为数据库管理员DBA,数据库安全管理员SSO,数据库审计员AUDITOR三类:(1)数据库管理员(DBA)系统预设了数据库管理员账号SYSDBA,每个数据库至少需要一个数据库管理员来管理,他负责安装和升级达梦数据库管理系统、配置达梦数据库参数、创建数据库对象、自主访问权限的分配、数据导入导出以及数据库的备份和恢复。(2)数据库审计员(AUDITOR)系统预设了数据库审计员账号SYSAUDITOR,负责配置数据库的审计设置,定义新的数据库审计员,查看数据库的审计记录。(3)数据库安全员(SSO)系统预设了数据库安全员

3、账号SYSSSO,负责对系统进行强制访问控制,定义新的数据库安全员,设置系统的策略及标记。把数据库的普通用户、审计用户与标记用户的权限及相关处理完全分开,包括系统预设系统登录、用户、系统角色、用户角色及权限分配和控制。它们三者之间互相联系、互相制约,共同完成数据库的管理工作。1.1 策略及标记的概念系统可定义多个策略(policy),每个策略互相独立。一个策略包括一组预定义的标记组件,包括等级分类和非等级类别。一个策略可以应用在多个用户或表上,在单个用户或表上也可以应用多个策略。标记用于标识数据库中主体及客体的敏感度(sensitivity)。一个标记由多个组件组成,其组件包括等级分类(lev

4、el)和非等级类别(category)。每个标记必须包含一个等级分类组件,非等级类别组件则是可选的。(1)等级分类(level):它是一线性有序的名称序列,用L=(l1,l2,lp)表示。其中li(1ip)表示第i个名称,任意两个名称li、lj之间,若ij,则lilj,于是有l1l2lp,其中l1,l2,lp称为等级分类(以下简称等级)。在DM中,一个策略最大可定义9999个等级。用户在定义策略中的等级时,需要为其指定编号,其编号在19999之间(编号小的意味着级别较低)。(2)非等级类别设集合C = c1,c2,cm中每一元素都是一名称,c1,c2,cm间彼此独立,无序,则集合C及其任意子集

5、称为非等级类别集合,其中c1,c2,cm称为非等级类别(以下简称为范围)。在DM5中,最大可定义10000个范围,范围不需要用户设置编号,且没有级别高低之分。1.2 DM的强制访问控制DM5为每个表都提供了自主访问控制(DAC,Discretionary Access Control),除此之外,其还利用标记提供了强制访问控制(MAC,Mandatory Access Control)。当在一个表上应用了基于标记的一个安全策略时,每条元组均具备了与该策略相关的一个标记(LABEL),此标记反应了该元组的敏感度(sensitivity),由此,在该策略上,通过比较用户的标记与元组的标记可决定对该

6、元组的访问级别。DM5的DAC策略优先于MAC策略。为了能访问一条元组,用户不仅首先要满足DAC条件,还必须满足MAC的条件。用户访问表时,必须保证应用于表上的所有策略均适用于该用户,否则访问被拒绝。若表上未应用任何策略,则用户只需满足DAC条件即可。读访问时,要满足用户等级大于等于数据标记的等级,用户能读的范围是数据标记范围的非空子集,则能读取改行数据;写访问(包括增删改)时,要满足用户等级等于数据标记的等级,用户能写的范围是数据标记范围的非空子集。在应用于表的所有策略上,用户插入一条元组时,该元组的标记即为用户的写标记(用户等级加上用户写范围组成的标记);标记列可以被显式更新,必须满足标记

7、列更新前和更新后,用户对该元组都可写,即前后标记值中范围都是在用户写标记的范围内(同时用户标记的等级不小于元组标记的等级)。对于视图及存储过程,当前用户在调用它们访问数据时,其策略标记与视图及存储过程访问的任何基表上元组的策略标记的比较都必须符合上述规则。用户可以通过自己设置连接的读写标记,以便看到不同的数据视图。设置只对该次连接生效,并不改变字典表中用户的读写标记。DM三权分立安全管理机制旨在构建高安全性数据库,以三权分立安全管理机制为基础的DM安全版数据库的安全级别已达到B1级。DM在安全管理方面采用了三权分立的安全管理体制,即把系统管理员分为数据库管理员DBA,数据库安全管理员SSO,数

8、据库审计员AUDITOR三类:(1)数据库管理员(DBA)系统预设了数据库管理员账号SYSDBA,每个数据库至少需要一个数据库管理员来管理,他负责安装和升级达梦数据库管理系统、配置达梦数据库参数、创建数据库对象、自主访问权限的分配、数据导入导出以及数据库的备份和恢复。(2)数据库审计员(AUDITOR)系统预设了数据库审计员账号SYSAUDITOR,负责配置数据库的审计设置,定义新的数据库审计员,查看数据库的审计记录。(3)数据库安全员(SSO)系统预设了数据库安全员账号SYSSSO,负责对系统进行强制访问控制,定义新的数据库安全员,设置系统的策略及标记。把数据库的普通用户、审计用户与标记用户

9、的权限及相关处理完全分开,包括系统预设系统登录、用户、系统角色、用户角色及权限分配和控制。它们三者之间互相联系、互相制约,共同完成数据库的管理工作。1.1 策略及标记的概念系统可定义多个策略(policy),每个策略互相独立。一个策略包括一组预定义的标记组件,包括等级分类和非等级类别。一个策略可以应用在多个用户或表上,在单个用户或表上也可以应用多个策略。标记用于标识数据库中主体及客体的敏感度(sensitivity)。一个标记由多个组件组成,其组件包括等级分类(level)和非等级类别(category)。每个标记必须包含一个等级分类组件,非等级类别组件则是可选的。(1)等级分类(level)

10、:它是一线性有序的名称序列,用L=(l1,l2,lp)表示。其中li(1ip)表示第i个名称,任意两个名称li、lj之间,若ij,则lilj,于是有l1l2lp,其中l1,l2,lp称为等级分类(以下简称等级)。在DM中,一个策略最大可定义9999个等级。用户在定义策略中的等级时,需要为其指定编号,其编号在19999之间(编号小的意味着级别较低)。(2)非等级类别设集合C = c1,c2,cm中每一元素都是一名称,c1,c2,cm间彼此独立,无序,则集合C及其任意子集称为非等级类别集合,其中c1,c2,cm称为非等级类别(以下简称为范围)。:B1,B2B1,B2(2)标记的存储及标记列标记以数

11、字标识的形式存储于数据库中。当一个策略被应用到表上时,需要指定标记的存储列名,此列的类型为VARBINARY,此时表上每条元组的标记均存在于该列中。存储格式为:标志(2)等级(2)范围(N)两个字节的标志位表示范围占用的字节数;等级占用两个字节;范围占用0-2000个字节。在范围字段中,用位图来表示范围是否存在。在应用策略时,还可设置标记列是否被隐藏,即用户在做插入时,若不指定列清单,则在值列表中可以不设置该列的值,另外,在查询时,也不显示该列数据。标记列与表上的其他列的处理基本一样,可以建索引,设置列约束、改列名等,但不能被用户显式删除,除非在表上取消该策略。为了便于用户进行标记的设置及查询

12、等操作,DM提供了一些标记转换函数,用于将其与数字标识进行相互转换。具体如下:VARCHAR(2000)LABEL_TO_CHAR(POLICY_NAME VARCHAR(128),/ 策略名LABEL VARBINARY(1024)/ 标记二进制串该函数用于将标记数字标识转换为字符串格式的标记。BIGINTLABEL_FROM_CHAR(POLICY_NAME VARCHAR(128),/ 策略名LABEL_STR VARCHAR(2000)/ 字符串标记该函数用于将字符串格式的标记转换为其数字标识。2 应用举例现通过一个具体的应用来说明三权分立的应用。2.1 应用背景假设某公司有一套办公O

13、A系统,主要用于填写工作周报。填写工作周报的部门有:开发部(编号:KF)、测试部(编号:CS)、市场部(编号:SC)和人力资源部(编号:HR)。要求每个部门的员工只能写本部门的工作周报,除了人力资源部外每个部门的员工只能查看自己部门的工作周报,不能查看其他部门的工作周报;人力资源部可以查看所有部门员工的工作周报,但不能修改和删除任何工作周报记录。要求将数据权限控制到行级。假设存储工作周报信息的表名为work_info,其表结构如下: 表1 工作周报表结构字段名类型中文说明idvarchar(20)工作周报标识号work_contentcontent工作周报内容user_idvarchar(20

14、)填写周报的员工id张三是开发部员工,李四是测试部员工,王五是市场部员工,小明是人力资源部员工。他们对表work_info中各部门的数据的读写权限矩阵如下:表2 用户对表work_info中数据万维网的读写权限矩阵部门权限张三李四王五小明开发部读权限写权限测试部读权限写权限市场部读权限写权限人力资源部读权限写权限2.2 应用三权分立(1)用SYSDBA用户登录数据库,建立数据库;创建名为sqfldb的数据库,登录名和用户名均为sqfl,密码为123123。脚本如下:- 以SYSDBA登录,创建数据库和登录用户create database sqfldb datafile sqfldb.dbf

15、size 128;set current database sqfldb;create login sqfl identified by 123123 default database sqfldb;create user sqfl;grant dba to sqfl;alter user sqfl related by sqfl;(2)用sqfl用户登录数据库,创建表结构;- 以sqfl登录,创建表结构create table work_info(id varchar(50) not null,work_content clob,user_id varchar(20),primary key

16、(id);(3)用SYSSSO用户登录数据库,创建安全策略,并对表work_info应用此策略;根据需求,可以将每个部门编号设计为安全策略的范围。 - 以SYSSSO登录- 设置当前数据库为sqfldbset current database sqfldb;- 创建名为sp的安全策略create policy sp;- 为策略sp添加名为level1的级别alter policy sp add level level1 as 100;- 为策略sp添加范围KF,CS,SC,HRalter policy sp add category KF;alter policy sp add categor

17、y CS;alter policy sp add category SC;alter policy sp add category HR;- 对表work_info应用安全策略sp,标记列名为label_col,隐藏该列alter table policy sqfl. work_info add sp column label_col hide label level1: ;说明:对应用策略的表,必须要指定标记列名,用于存放标记。可设置标记列是否被隐藏,即用户在做插入时,若不指定列清单,则在值列表中可以不设置该列的值,另外,在查询时,也不显示该列数据。上述脚本指定了标记列的列名为label_c

18、ol,并且设置为隐藏。即表work_info应用安全策略sp后,多了一个隐藏列label_col。(4)为用户sqfl应用策略sp,并设置最大权限;- 以SYSSSO登录- 设置当前数据库为sqfldbset current database sqfldb;- 为用户sqfl应用策略sp,级别level1,对范围KF,CS,SC,HR都有写权限alter user policy sck add sp level level1 category KF write, CS write, SC write, HR write;说明:必须要对用户sqfl设置所有范围的写权限,否则在后续的脚本中,设置当

19、前会话的写权限时,用户sqfl若不具有某范围的写权限,则设置会失败。(5)插入测试数据;通过set_read_label函数设置当前用户的读权限,通过set_write_label函数设置当前用户的写权限。插入的记录的标记列的值为当前连接设置的写标记。设置只对该次连接生效,并不改变字典表中用户的读写标记。- 以sqfl登录- 设置当前连接为张三的权限,对开发部(KF)有读写权限set current database sqfldb;select set_read_label(sp,level1:KF);select set_write_label(sp,level1:KF);insert in

20、to work_info values(W001,张三周报内容W001,张三);- 说明:此时id为W001的记录的标记列label_col已被自动填充为当前连接的写标记,即level1:KF- 设置当前连接为李四的权限,对测试部(CS)有读写权限set current database sqfldb;select set_read_label(sp,level1:CS);select set_write_label(sp,level1:CS);insert into work_info values(W002, 李四周报内容W002, 李四);- 说明:此时id为W002的记录的标记列lab

21、el_col已被自动填充为当前连接的写标记,即level1:CS- 设置当前连接为王五的权限,对市场部(SC)有读写权限set current database sqfldb;select set_read_label(sp,level1:SC);select set_write_label(sp,level1:SC);insert into work_info values(W003,王五周报内容W003, 王五);- 说明:此时id为W003的记录的标记列label_col已被自动填充为当前连接的写标记,即level1:SC- 设置当前连接为小明的权限,对人力资源部(HR)有写权限,其他部

22、门都有读权限set current database sqfldb;select set_read_label(sp,level1:KF,CS,SC,HR);select set_write_label(sp,level1:HR);insert into work_info values(W004,小明周报内容W004, 小明);- 说明:此时id为W004的记录的标记列label_col已被自动填充为当前连接的写标记,即level1:HR2.3 结果验证应用了安全策略的表中的记录能被查询到的前提条件是:假设当前连接设置的读标记为L,如果L的等级大于或等于记录中标记的等级,并且L的范围包含记录

23、中标记的范围,则当前连接可以查询到这些记录;否则查询不到这些记录。应用了安全策略的表中的记录能被修改或删除的前提条件是:假设当前连接设置的写标记为L,如果L的等级等于记录中标记的等级,并且L的范围包含记录中标记的范围,则当前连接可以修改或删除这些记录;否则不可以修改或删除这些记录。应用了安全策略的表,当前连接可以插入数据的前提条件是:必须设置当前连接的安全策略,并且和该表上应用的策略相同。另外,SYSDBA和SYSSSO所做的所有操作都将被审计,受到SYSAUDITOR的监督。用SYSAUDITOR登录数据库,可以查看到所有的审计记录。注意:当设置当前连接的写标记时,读标记中必须包含写标记中的

24、所有范围。现在用以上的规则验证应用了安全策略后的结果:(1)以sqfl登录,用张三的身份查询数据;- 以sqfl登录- 设置当前连接为张三的权限set current database sqfldb;select set_read_label(sp,level1:KF);select set_write_label(sp,level1:KF);select id,work_content,user_id,label_col, label_to_char(sp,label_col) from work_info;查询结果:idwork_contentuser_idlabel_col表达式1-W0

25、01张三周报内容W001张三0x0100640001level1:KF结果说明:由于用户张三只对开发部的数据有读写权限,所以只查询到id为W001的记录。开发部的所有用户都可以看到id为W001的记录。实际上,字符串标记中的等级小于或等于level1的值100且范围中包含有KF的记录都可以被开发部的用户看到。注意:列label_col是表work_info应用策略sp时指定的标记列,该列的数据类型为VARBINARY,通过函数label_to_char可以将标记数字标识解析为字符串格式的标记。另外label_col列的数字标识值(如x010*)会因数据库不同而有可能不同。该说明适用于下面所有使

26、用到label_col列和label_to_char函数的地方。(2)以sqfl登录,用李四的身份查询数据;- 以sqfl登录-设置当前连接为李四的权限set current database sqfldb;select set_read_label(sp,level1:CS);select set_write_label(sp,level1:CS );select id,work_content,user_id,label_col, label_to_char(sp,label_col) from work_info;查询结果:idwork_contentuser_idlabel_col表达

27、式1-W002李四周报内容W002李四0x0100640002level1:CS结果说明:由于用户李四只对测试部的数据有读写权限,所以只查询到id为W002的记录。测试部的所有用户都可以看到id为W002的记录。实际上,字符串标记中的等级小于或等于level1的值100且范围中包含有CS的记录都可以被测试部的用户看到。(3)以sqfl登录,用王五的身份查询数据;- 以sqfl登录-设置当前连接为王五的权限set current database sqfldb;select set_read_label(sp,level1:SC);select set_write_label(sp,level1

28、:SC );select id,work_content,user_id,label_col, label_to_char(sp,label_col) from work_info;查询结果:idwork_contentuser_idlabel_col表达式1-W003王五周报内容W003王五0x0100640003level1:SC结果说明:由于用户王五只对市场部的数据有读写权限,所以只查询到id为W003的记录。市场部的所有用户都可以看到id为W003的记录。实际上,字符串标记中的等级小于或等于level1的值100且范围中包含有SC的记录都可以被市场部的用户看到。(4)以sqfl登录,用小明的身份查询数据;- 以sqfl登录-设置当前连接为小明的权限set current database sqfldb;select set_read_label(sp,level1:KF,CS,SC,HR);select set_write_label(sp,level1:HR );select id,work_content,user_id,label_col, label_to_char(sp,label_col) from work_info;查询结果:idwork_contentuser_idlabel_col表达式1-W001张三周报内容W001

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1