控制存取数据库的方法与装置的制作方法

文档序号:6409620阅读:209来源:国知局
专利名称:控制存取数据库的方法与装置的制作方法
技术领域
本发明涉及控制存取数据库的方法与装置。
在数据库系统中,通常若干用户能够与系统交互作用及利用数据库。从而这种系统称作多用户系统。这种系统中出现的一个问题,即数据库中包含某种形式的敏感信息或数据,亦即,这些信息或数据只能供一个特定用户或一个特定的用户组的成员利用。在这一情况中,便实行一种安全策略来限制数据对用户组的可利用性。
支持多用户的数据库管理系统的实例便是ORACLE(Oracle公司的注册商标)。ORACLE是关系数据库管理系统。在关系数据库中,只存在一种数据结构,这便是表,它是数据的行与列的二维结构。可使用一种称作结构化查询语言(SQL)的查询语言以非过程方式存取数据库中的数据。
存在着若干种在数据库管理系统上实现安全策略的方法。例如,在一种方法中向各组用户提供保存在中央数据库中的数据中适合于供该组存取的那一部分的本身拷贝。这一方法曾称作复制法,因为由于至少某些数据存在着一份以上的拷贝而得出重复的数据。很明显,这一方法对于存储器的使用效率非常低。再者,如果更新一个值的特定组的用户以某种方式改变了数据的一份拷贝,则同时必须更新由其它组保持的该数据的若干份其它拷贝。这将是费时的,并且管理系统的方法必须十分精确,以保证如果系统故障时数据能保持在兼容的状态中。
按照本发明,提供了一种控制用户对数据库中的数据存取的方法,包括至少将一部分数据库配置成使得所配置的数据库中至少某些数据是与一个安全标签相关联的,配置用户标识符与关联的用户标签的存储结构,配置用户标签与关联的安全标签的存储结构,以及通过从用户标签与关联的安全标签中确定适合于用户标识符的用户标签的一个或数个安全标签并允许对来自配置的数据库中与这些安全标签相关联的数据的存取而将一个用户标识符映射到数据的至少一个子集中。
通过提供用户标签与安全标签的存储结构,便有可能只通过修正存储结构中的值而无需重新配置数据库或改变与用户名关联的用户标签而改变安全策略。安全标签表示指明相关数据具有诸如安全密级等特殊属性的一个数据项。它可以是一个数字或一个字符或其它数据项。存储结构表示某种数据组合,例如,以树、记录、集合、表的形式或其它存储结构。
按照本发明的第二方面,提供了控制用户对数据库的存取的一种方法,包括建立一个数据与关联的安全标签的数据库,建立一个标识符与标识符标签的第一存储结构,建立一个标识符标签与关联的安全标签的第二存储结构及通过从第一存储结构中确定一个关联的标识符标签及从第二存储结构中确定适合于该确定的标识符标签的至少一个安全标签及从数据库中选择与该一个或多个安全标签相关联的数据,而建立数据库上适合于标识符中至少一个的景象(view)。
景象表示用户在需要时可以操作的数据子集。在SQL中可为一名用户建立允许他在数据中执行操作的一个景象。在定义景象时通过提供一个SQL CHECK(检验)选择项,可使该景象安全,这便是说在不满足CHECK选择项时用户对数据作出的改动不能写回数据库中。当用户对数据库中的数据没有写存取但允许读取数据及操作它只供他自己使用时,这是特别有用的。
按照本发明操作的系统只需要用户共享的一份数据拷贝,从而至少避免了与已知的复制法关联的某些问题,诸如存储器的低效率或要求额外的数据管理与处理时间。
应指出并非整个数据库都需要为安全而配置。某些部分可以是公开的,从而对所有用户开放。
用户标识符与用户标签的存储结构及用户标签与安全标签的存储结构可配置成使得至少某些用户不能得到对存储结构的所有部分的存取。以这一方法,防止被排除在外的用户判定他具有何种安全率并且系统可以认为是“透明的”,即用户不知道安全策略及没有根据认为对中央数据库的某些部分的存取受到拒绝。
按照本发明的又一方面,提供了控制用户对数据库的存取的装置,包括配置下述各部分的装置至少一部分数据库使得所配置的数据库中至少某些数据是与安全标签相关联的;用户标识符与关联的用户标签的存储结构;用户标签与关联的安全标签的存储结构;以及通过从用户标签与关联的安全标签的存储结构中确定适用于该用户标识符的用户标签的一个或数个安全标签并允许该用户存取所配置的数据库中与这一或这些安全标签相关联的数据,而将用户标识符映射到数据的至少一个子集上的装置。
本装置或方法可用于存取雇员记录或诸如有关电信网的信息等其它信息。网络经理可利用这些信息来配置电信网。本装置还可配置成综合网络管理功能与数据库安全功能。
下面参照附图只以示例方式描述本发明的一个特定实施例,附图中

图1以示意性方框图形式示出按照本发明的一个实施例操作的一个数据库系统的硬件;图2示出数据库系统支持的一组数据库帐户;图3示出数据库系统的软件视图;图4至6以示意方式示出数据库系统中使用的表;图7为数据库系统的操作的示例图;图8为数据库系统所执行的映射操作的示例图;图9为展示映射操作中的步骤的又一示例图;以及图10以示意性方框图形式示出应用在网络管理应用中的数据库系统。
参见图1,数据库系统1包括若干部件,其中有连接到若干用户终端3、4与5上的诸如DEC Micro VAX等知名类型的主计算机2,各终端包括一台诸如IBM PC等知名类型的微机。连接是用知名类型的同轴电缆6实行的,并且系统1的部件之间的通信是用诸如传输控制协议/互连网协议(TCP/IP)等知名通信协议达到的。
用户终端3、4与5是名义上相同的。各具有一个微处理器3a、4a与5a;存储器3b、4b与5b;输入/输出设备3c、4c与5c;缓冲器3d、4d与5d;视觉显示单元(VDU)3e、4e与5e;以及键盘3f、4f与5f。
容易理解,存储器3b、4b与5b的形式可以是随机存取存储器、只读存储器或两者的组合。存储器可以是如半导体“芯片”或盘(光或磁)等固态形式的或这些形式的组合。
不论形式如何,存储器包括许多存储单元。这些单元中包含用于管理与特定的存储器相关联的微处理器3a、4a与5a的操作的指令。微处理器3a、4a与5a访问存储器来得到指令。在存储器中作为位于若干存储单元中的一个指令集合保存一个用于管理终端的操作的程序。指令是以16进制数的形式的。
存储器以公知的方式用数据总线链接到微处理器上。数据总线还将微处理器链接到终端的其它部件上。输入/输出设备3c、4c与5c作为终端与系统中其它计算机之间的接口工作。
各终端的键盘与VDU以公知的方式通过缓冲器与该终端的微处理器交互作用。它们集体提供系统与要求与系统交互作用的用户之间的接口。
主计算机2具有一个处理器2a、存储器2b、一个输入/输出设备2c、一个外围缓冲器2d及关联的VDU2e与键盘2f。从而,可以看出主计算机2具有与用户终端3、4与5相同的形式。主要差别在于存储器2b的存储容量远比用户终端的存储器的存储容量为大。数据库系统的管理员能利用键盘2f及VDU2e存取该系统。
终端3、4及5与主计算机2用延伸在终端的输入/输出设备3c、4c及5c与主机的输入/输出设备2c之间的同轴电缆6互连。如前面提到的,称作TCP/IP的协议用于系统1的部件之间的通信。
存储器2b中包含一个信息数据库。这些信息可由用户从他们的终端存取。然而各用户允许存取信息的范围可在用户之间变化。系统管理员能存取整个数据库。
可认为系统提供了一组数据库帐户,如图2中所示。管理员具有管理员帐户21而用户则具有用户帐户22、23与24。在本例中用户名为Brown、Smith与Jones而帐户则是相应地加以标记的。
除了数据库以外,存储器2b还保存一个用于控制处理器2a,具体地说各用户存取数据库的方式的程序。从而在软件控制下处理器2a作为一台数据库机器工作。
如图3中所示,Smith、Brown与Jones能输入请求到数据库机器31中而机器则处理根据需要存取数据库32的请求。然后数据库机器31输出应答给查询中的用户。这些请求将由同轴电缆6上的传输携带。
数据库32细分成三个部分,各部分为一张SQL表。第一细分为称作“EMPLOY”(雇员)的表33,第二细分为称作“SECURITY”(安全)的表34,第三细分为称作“USER”(用户)的表35。数据库系统1利用一种称作ORACLE SQL(Oracle公司的注册商标)的编程语言来建立与利用这些表。稍后将描述初始建立这些表的方法。
“EMPLOY”表33中包含关于公司雇员的信息,它包括图4中所示的若干个数据字段。
数据字段中包含称作“EMP NO(雇员号)”的一个数据字段33a,它包含一个特定公司的雇员的雇员参照号。
有一个称作“NAME(姓名)”的数据字段33b,它包含作为30个字符(CHAR)或以下的一个串保持的公司雇员姓名。
下一个数据字段为称作“POSI TION(职位)”的数据字段33c。“POSI TION”数据字段33c中包含有关一个特定雇员在公司中的职位的信息,例如雇员可能是经理、会计或秘书。这一信息也作为10个或以下字符的一个串存储。
下一个数据字段为称作“SAL(工资)”的数据字段33d。它包含用7位数字表示的各雇员的薪金信息。
数据字段33e称作“DEPT(部门)”,它包含雇员在其中工作的部门的名称。这一信息是作为两个字符的一个串保存的。
数据字段33f称作“ROW-TAG(行标签)”。这一数据字段包含指出它属于的信息行的安全状态的一个单个字符的串。这一字段对于允许对“EMPLOY”表33的特定行进行存取的方式具有特别重要性。
“SECURITY(安全)”表34包括两个数据字段,第一数据字段34a称作“ROW-TAG”,第二数据字段34b称作“USER-TAG”,如图5中所示。
“ROW-TAG”数据字段34a中包含与“EMPLOY”表示“ROW-TAG”数据字段33f中相同的字符。它允许稍后要说明的一种映射操作,在该操作中通过选择具有与“SECURITY”表34中的“ROW-TAG”相同的“ROW-TAG”的那些行而选择”EMPLOY“表中的行。
“USER-TAG(用户标签)”数据字段34b中保存一个字符的数据。这一字段的功能为置能上述映射操作,稍后将更全面说明。
如此命名“SECURITY”表34是因为系统安全策略体现在该表中。此表的“ROW-TAG”及“USER-TAG”称作安全标签,因为安全策略是由这些标签控制的。安全策略可通过修改该表而方便地修改。稍后将更全面地说明系统的这一方面。
“USER(用户)”表35示出在图6中并包括一个“USER-TAG”字段35a与一个“USER-NAME(用户姓名)”字段35b。
“USER-TAG”字段35a保存一个字符的数据,它将包含与保存在“SECURITY”表34中的“USER-TAG”字段34b中相同的字符。这将允许执行上述映射操作,如稍后要描述的。
“USER-NAME”字段35b中保存字符串形式的系统的用户的姓名。
图7中示出系统操作的流程图。操作中的第一步为初始化,如框70所表示的。在这一步骤中接通终端3、4与5,以及主计算机2,并准备好使用。
用框71表示的第二步骤为在存储器2b中建立这些表。这是以下述方式使用SQL命令CREATE TABLE(建立表)由数据库机器31完成的。
对于“EMPLOY”表33,数字库机器31实现下述命令语句<pre listing-type="program-listing"><![CDATA[CREATE TABLE EMPLOY (EMP NUMBER(4)NAME CHAR(30),POSITION CHAR(10),SAL NUMBER(7),DEPT CHAR(10),ROW_TAG CHAR(1));]]></pre>“SECURITY”表34是以下述方式使用SQL CREATE TABLE(SQL建立表)命令配置的。
<pre listing-type="program-listing"><![CDATA[CREATE TABLE SECURITY(ROW_TAG CHAR(1),USER_TAG CHAR(1));]]></pre>“USER”表35是以下述方式用SQL CREATE命令配置的。
<pre listing-type="program-listing"><![CDATA[CREATE TABLE USER(USER_TAG CHAR(1),USER_NAME CHAR(10));]]></pre>在下步骤72中,在表中填充数据。这是由网络管理员使用数据库机器31及下述方式的SQL INSERT(SQL插入)命令完成的。
例如为了将关于一各称作Stuart Fitchett的雇员的一行数据插入“EMP LOY”表,管理员发布下述命令。
<pre listing-type="program-listing"><![CDATA[INSERT INTO EMPLOYVALVES(10,‘Stuart Fitchett’,‘CLERK’,1000,‘CS’,‘U’);]]></pre>借此,记录了雇员号10称作Fitchett,它是在客户服务部(缩略为CS)中月薪为1000镑的一名会计,以及读取这一信息所需的安全标签为‘U’。
以类似的方式将数据输入到“SECURITY”表34中。
例如可用下述方式输入前七行数据。
<pre listing-type="program-listing"><![CDATA[INSERT INTO SECURITY VALUES (‘U’,‘A’);INSERT INTO SECURITYVALUES (‘V,’‘A’);INSERT INTO SECURITYVALUES (‘U,’‘B’); INSERT INTO SECURITYVALUES (‘W’ ‘B’);INSERT INTO SECURITYVALUES (‘W’‘C’);]]></pre>以类似方式完成USER(用户)表。
<pre listing-type="program-listing"><![CDATA[INSERT INTO USERVALUES (‘A’,‘SMITH’);INSERT INTO USERVALUES (‘B’,‘JONES’);INSERT INTO USERVALUES (‘C’,‘BROWN’);]]></pre>然后数据库机器31等待用户之一对来目数据库32的信息的请求,如图7的框73所表示的。
接收到一个请求时便处理它,如框74所表示的。完成处理时系统返回到等待请求步骤73。
完成后的表示意性地示出在图8中。
下面参照图9更详细地描述处理请求步骤74。利用实现管理系统1的安全策略的上述映射操作的便是这一处理步骤。
第一步骤为数据库机器31识别作出对存储在数据库32中的信息进行存取的请求的用户,如图9的框90所表示的。
下一步骤为数据库机器31利用“USER-TABLE”35来得出适用于被识别出的用户的“USER-TAG”,如框91所表示的。
再下一步骤,如框92所表示的,为数据库机器31利用“SECURITY”表34来得出适用于在步骤91中识别出的“USER-TAG”的“ROW-TAG”。
最后的步骤,如框93所表示的,当与行相关联的一个“ROW-TAG”与前一步骤92中识别出的“ROW-TAG”匹配时,数据库机器31返回来自“EMPLOY”表33中的一行或数行数据。
下面用一个实例来展示数据库机器31处理一个请求的方式。
USER-NAME为SMITH的用户已赋予了一个USER-TAGA而这可通过“SECURITY”表34映射到ROW-TAG U与V上。这使得SMITH能够得到对EMPLOY表33中已赋予了ROW-TAGU或V的行的存取。从而将SMITH映射到表EMPLOY的行ROW1、ROW2与ROW3上而能观察这些行的数据。
更详细地,假定SMITH想要存取他能够从“EMPLOY”表33存取的全部信息。SMITH发出一条SQL SELECT(SQL选择)命令SELECT*FROM EMPLOY到数据库机器31来做到这一点。
数据库机器31赋予SMITH的这一命令一个变元来识别用户然后执行下述映射操作,其中USER-NAME为“SMITH”。映射操作是提供在管理数据库机器31的程序中的。
<pre listing-type="program-listing"><![CDATA[CREATE VIEW SECURE_EMPLOY ASSELECT EMP, NAME, POSI TION, SAL, DEPT,FROM FMPLOYWHERE EMPLOY.ROW_TAG IN( SELECT SECURITY.ROW_TAG FROM SECURI TYWHERE SECURITY.USER_TAG IN(SELECT USER.USER_TAGFROM USERWHERE USER.USER_NAME=username))]]></pre>这返回给用户SMITH表“EMPLOY”中具有ROW-TAG‘U’或‘V’的行,即表33的行ROW1、ROW2及ROW3。应指出,由于SELECT命令并不包含“EMP LOY”表33的“ROW-TAG”列,这一信息并不返回给用户而用户不能确定管理数据的安全策略。从而,安全策略是对用户透明的。
系统以类似的方式满足BROWN与JONES的存取,而数据库机器所提供的用户名变元则为适当的BROWN或JONES。
如果要实现安全策略中的改变,例如要将以前能存取EMPLOY表33中具有标签‘U’或‘V’的具有USER-TAG‘A’的用户限制为只能存取标签为‘U’的行,则网络管理员只须通过从赋予用户标签A的安全标签中删除来修正SECURITY表34即可。这可以这样应用SQL DELETEFROM表(SQL从表中删除)命令达到<pre listing-type="program-listing"><![CDATA[DELETE FROM SECURITYWHERE SECURITY.USER-TAG=‘A’AND SECURITY.ROW-TAG=‘V’;]]></pre>这样便删除了图8中所示的“SECURITY”表34的第二行,消除了从用户SMITH到“EMPLOY”表33中具有标签‘V’的第二行的映射路径。
为了扩大具有USER-TAG‘B’的用户组对EMPLOY表33的可存取的量,例如,使其能存取具有ROW-TAG‘V’或ROW-TAG‘X’的行,这样应用SQL命令INSERT INTO TABLE(插入到表中)<pre listing-type="program-listing"><![CDATA[INSERT INTO SECURITYVALUES(‘V’,‘B’);INSERT INTO SECURITYVALUES(‘X’,‘B’);]]></pre>这将进一步提供从用户表到EMPLOY表的另外两条映射路径,如图8中用虚线所示。
在某些数据库安全系统中,可能希望防止某些用户组更新数据库中的数据。达到这一目的的一种方法为建立一个EMPLOY表33上的景象,它从提供一个检验选择项以防止用户在数据库中他以后不能从其中删除信息的一部分中插入一个项的意义上是安全的。只有满足SQL“WHERE”语名时才允许插入数据或更新数据。例如<pre listing-type="program-listing"><![CDATA[CREATE VIEW SECURE EMPLOY_2 ASSELECT*FROM EMPLOYWHERE EMPLOY.ROW_TAG IN(SELECT SECURITY.ROW_TAGFROM SECURITYWHERE SECURITY.USER_TAG IN(SELECT USER.USER_TAGFROM USERWHERE USER.USER_NAME=USERNAME))WITH CHECK OPTION]]></pre>在第一个描述的实施例中,数据库中包含有关雇员的信息,即该数据库是一个人事数据库。其它类型的信息也能存储。
图10示出用在网络经理的按照本发明的系统1。在该系统中,数据库中包含一个电信网100的诸如配置管理信息等信息,电信网100包括若干网络部件101至103及它们的部件经理104至106。以前面描述的相同方法向诸如网络经理等系统1的关心网络100的操作与控制的用户提供对数据库的不同部分的存取。
权利要求
1.一种用于控制用户对数据库存取的方法,包括将至少一部分数据库配置成使所配置的数据的至少某些数据与一个安全标签相关联,配置用户标识符与关联的用户标签的一个存储结构,配置用户标签与关联的安全标签的一个存储结构,及通过从用户标签与关联的安全标签的存储结构中确定适用于用户标识符的用户标签的一个或数个安全标签并允许用户对来自配置的数据库中与这些安全标签相关联的数据进行存取,而将一个用户标识符映射到数据的至少一个子集上。
2.权利要求1中所要求的方法,其中输入到数据库中的数据是与适用于输入数据的用户的用户标识符的用户标签的一个安全标签相关联的。
3.权利要求1或2中所要求的方法,其中的数据库和/或存储结构为表。
4.一种用于控制用户对数据库存取的方法,包括建立数据与关联的安全标签的一个数据库,建立标识符与关联的标识符标签的第一存储结构,建立标识符标签与关联的安全标签的第二存储结构,以及通过从第一存储结构中确定一个关联的标识符标签并从第二存储结构中确定至少一个适用于该确定的标识符标签的安全标签并从数据库中选择与该一个或数个安全标签相关联的数据,而在数据库上建立一个适用于至少一个标识符的景象。
5.前面任何权利要求中所要求的方法,其中的数据库为电信网数据库。
6.用于控制用户对数据库存取的装置,包括配置下述装置至少一部分数据库使得所配置的数据库的至少某些数据与一个安全标签相关联;用户标识符与关联的用户标签的一个存储结构;用户标签与关联的安全标签的一个存储结构;及通过从用户标鉴与关联的安全标鉴的存储结构中确定一个或数个适用于用户标识符的用户标签的安全标签并允许用户存取所配置的数据库中与这些安全标签关联的数据而将一个用户标识符映射到至少数据的一个子集的装置。
7.权利要求6中所要求的装置,包括将输入数据库中的数据与适用于输入数据的用户的用户标识符的用户标签的一个安全标签相关联的装置。
8.管理包含权利要求6或7中所要求的装置的电信网的装置。
9.一个数据集合,用权利要求1至5中任何一项中所要求的方法存取。
全文摘要
本发明提供了控制对数据库(32)中的数据(行1至行5)的存取的方法与装置,包括配置至少一部分数据库(32)使得所配置的数据库(33)的至少某些数据(行1至行5)与安全标签(ROM-TAG)相关联,配置用户标识符(USER-NAME)与关联的用户标签(USER-TAG)的一个存储结构(35),配置用户标签(USER-TAG)与关联的安全标签(ROW-TAG)的一个存储结构(34),及通过从用户标签(USER-TAG)与关联的安全标签(ROW-TAG)的存储结构(34)中确定适用于用户标识符(USER-NAME)的用户标签(USER-TAG)的一个或数个安全标签(ROW-TAG)并允许对所配置的数据库(33)中与这些安全标签(ROW-TAG)相关联的数据(行1至行5)进行存取而将一个用户标识符(USER-NAME)映射到数据(行1至行5)的至少一个子集上。通过提供用户标签(USER-TAG)与关联的安全标签(ROW-TAG)的一个存储结构(34),便有可能只修改存储结构(34)中的数据而不需要修改所配置的数据库(33)中的数据(行1至行5)便能改变安全策略。
文档编号G06F21/62GK1141091SQ95191658
公开日1997年1月22日 申请日期1995年2月14日 优先权日1994年2月16日
发明者基思·哈特 申请人:英国电讯有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1