数据库安全的制作方法

文档序号:11450686阅读:264来源:国知局
数据库安全的制造方法与工艺

优先权要求

本申请要求2014年11月5日提交的美国临时专利申请第62/075,593号的优先权,这里通过引用将其全部内容合并于此。



背景技术:

本说明涉及数据库安全。数据库可以包括多个表,各表可以包括多行。可以通过控制对这些表各自的访问、或者通过控制对表内的各行的访问,来控制对数据库中所存储的数据记录的访问。可以通过使用与诸如各行的各对象相关联的安全标签来设置行级安全。



技术实现要素:

在一个方面,一种方法,包括以下步骤:自动确定针对具有多个表的数据库的第一表中的各第一记录的安全标签的成分,该自动确定的步骤包括以下步骤:根据外键关系来识别与所述第一记录相关的第二记录;识别针对所述第二记录的安全标签的成分;以及基于所识别出的针对所述第二记录的安全标签的成分来分配针对所述第一记录的安全标签的成分的值;以及将所确定出的安全标签存储在记录中。

实施例可以包括以下特征中的一个或多个。

该方法还包括以下步骤:根据相应的外键关系来识别各自与所述第一记录相关的多个第二记录;识别针对所述第二记录各自的安全标签的成分;以及基于所识别出的针对所述第二记录的安全标签的成分各自的值来分配针对所述第一记录的安全标签的成分的值。

分配针对所述第一记录的安全标签的成分的值的步骤包括:将所识别出的针对所述第二记录的安全标签的成分的多个不同值串接。

分配安全标签的成分的值的步骤包括以下步骤:从所识别出的针对所述第二记录的安全标签的成分的值中识别最高优先级值;以及分配所述最高优先级值作为针对所述第一记录的安全标签的成分的值。

该方法还包括以下步骤:基于记录的属性来自动确定针对所述数据库的第三表中的各第三记录的安全标签的成分,其中,记录的属性是存储在该记录中的值。

该方法还包括以下步骤:基于与所述数据库的第三表相关联的值来自动确定针对所述第三表中的各第三记录的安全标签的成分。

所述第二记录在所述第一表以外的表中。

所述成分是针对记录的安全标签的第一成分,以及所述方法还包括确定安全标签的第二成分。

该方法还包括以下步骤:响应于触发事件而更新针对特定的第一记录的安全标签的成分。

所述触发事件包括所述外键关系的改变。

所述触发事件包括针对与所述特定的第一记录相关的所述第二记录的安全标签的成分的改变。

该方法还包括检测所述触发事件。

该方法还包括接收所述触发事件的通知。

该方法还包括以下步骤:从用户接收用于访问特定的第一记录的请求,其中所述用户与用户安全代码相关联。

该方法还包括以下步骤:基于与所述用户相关联的用户安全代码的成分和针对所述特定的第一记录的安全标签的成分之间的比较,来限制所述用户访问所述特定的第一记录。

该方法还包括以下步骤:在接收到访问请求之前确定针对记录的安全标签。

该方法还包括以下步骤:在接收到特定的第一记录以将所述第一记录存储在所述数据库中的情况下,自动确定针对所述第一记录的安全标签的成分。

在一个方面,一种非暂时性计算机可读介质,用于存储使计算系统执行以下步骤的指令:自动确定针对具有多个表的数据库的第一表中的各第一记录的安全标签的成分,该自动确定的步骤包括以下步骤:根据外键关系来识别与所述第一记录相关的第二记录;识别针对所述第二记录的安全标签的成分;以及基于所识别出的针对所述第二记录的安全标签的成分来分配针对所述第一记录的安全标签的成分的值;以及将所确定出的安全标签存储在记录中。

在一个方面,一种计算系统,包括:处理器,其与存储器耦接,所述处理器和所述存储器被配置为:自动确定针对具有多个表的数据库的第一表中的各第一记录的安全标签的成分,该自动确定包括以下步骤:根据外键关系来识别与所述第一记录相关的第二记录;识别针对所述第二记录的安全标签的成分;以及基于所识别出的针对所述第二记录的安全标签的成分来分配针对所述第一记录的安全标签的成分的值;以及将所确定出的安全标签存储在记录中。

在一个方面,一种计算系统,包括:用于自动确定针对具有多个表的数据库的第一表中的各第一记录的安全标签的成分的部件,该自动确定包括:根据外键关系来识别与所述第一记录相关的第二记录;识别针对所述第二记录的安全标签的成分;以及基于所识别出的针对所述第二记录的安全标签的成分来分配针对所述第一记录的安全标签的成分的值;以及用于将所确定出的安全标签存储在记录中的部件。

在一个方面,一种方法,包括以下步骤:确定具有多个表的数据库的第一表中所存储的第一记录已被更新;自动更新针对所述第一记录的第一安全标签;将更新后的安全标签存储在记录中;以及自动更新针对所述数据库的第二表中所存储的第二记录的第二安全标签,其中所述第二记录根据外键关系与所述第一记录相关。

实施例可以包括以下特征中的一个或多个。

该方法还包括以下步骤:判断对所述第一记录的更新是否影响针对所述第一记录的所述第一安全标签。

该方法还包括以下步骤:确定所述第一安全标签的多个成分中的哪一个或多个成分受对所述第一记录的更新的影响;以及自动更新所述第一安全标签的受影响的一个或多个成分。

所述第二表是所述第一表的子表。

该方法还包括以下步骤:判断对所述第一记录的更新是否影响所述外键关系。

该方法还包括以下步骤:确定多个外键关系中的哪一个或多个外键关系受对所述第一记录的更新的影响;以及根据受影响的外键关系来自动更新针对与所述第一记录相关的各第二记录的第二安全标签。

在一个方面,一种非暂时性计算机可读存储介质,用于存储使计算系统执行以下步骤的指令:确定具有多个表的数据库的第一表中所存储的第一记录已被更新;自动更新针对所述第一记录的第一安全标签;将更新后的安全标签存储在记录中;以及自动更新针对所述数据库的第二表中所存储的第二记录的第二安全标签,其中所述第二记录根据外键关系与所述第一记录相关。

在一个方面,一种计算系统,包括:处理器,其与存储器耦接,所述处理器和所述存储器被配置为:确定具有多个表的数据库的第一表中所存储的第一记录已被更新;自动更新针对所述第一记录的第一安全标签;将更新后的安全标签存储在记录中;以及自动更新针对所述数据库的第二表中所存储的第二记录的第二安全标签,其中所述第二记录根据外键关系与所述第一记录相关。

在一个方面,一种计算系统,包括:用于确定具有多个表的数据库的第一表中所存储的第一记录已被更新的部件;用于自动更新针对所述第一记录的第一安全标签的部件;用于将更新后的安全标签存储在记录中的部件;以及用于自动更新针对所述数据库的第二表中所存储的第二记录的第二安全标签的部件,其中所述第二记录根据外键关系与所述第一记录相关。

通过以下说明书和权利要求书,其它特征和优点将显而易见。

附图说明

图1是框图。

图2a是数据库系统的示例。

图2b是用户访问限制的示例。

图3和4是框图。

图5-8是流程图。

图9是框图。

具体实施方式

这里,说明了用以提供针对数据库的表中的行的行级安全的方法。表中的各行代表数据记录。在各行中存储有安全标签,并且该安全标签可以用来控制对行的访问,例如,用于表示哪些用户具有访问该行所代表的数据记录的许可、或者哪些用户被限制访问该行所代表的数据记录。用于表中的行的安全标签可以基于该行外部的信息、该行内部的信息、以及针对表的信息中的一个或多个来确定。安全标签的传送有时还被称为继承,其是用于基于一个或多个相关行的安全标签的至少一部分来确定行的安全标签的机制。例如,数据库的表中的行可以从同一表中的、或者经由外键关系与该行相关的另一表中的另一行继承其安全标签的成分。安全标签的继承例如可以确保如下:如果用户被限制访问特定数据记录,则用户同样被限制访问依赖于该特定数据记录的任何其它数据记录。

针对行的安全标签可以具有多个成分。可以基于该行外部的信息(诸如同一表的相关行中的信息或者另一表中的相关行中的信息等)来确定针对表中的行的安全标签的一个或多个成分。可以基于该行内部的信息(诸如该行的属性等)来确定针对行的安全标签的一个或多个成分。可以基于表相关信息(诸如与表相关联的恒定值)来确定针对表中的行的安全标签的一个或多个成分。

可以在将数据记录输入到数据库中时确定针对该数据记录的安全标签(有时可替换地使用术语“行”和“数据记录”)。可以响应于诸如数据记录的改变、相关数据记录的改变或者表相关信息的改变等的触发事件来更新针对该数据记录的安全标签。将安全标签存储在数据记录中,以使得在接收到针对该行的访问的任何请求之前已经计算出安全标签并且该安全标签可用。有时,将在接收到针对行的访问的任何请求之前并且不依赖于该接收到针对行的访问的任何请求的安全标签的计算称为安全标签的预计算。安全标签的预计算可以具有一些优点。例如,如果对行的安全标签进行预计算,则可以在无需实时地响应于访问请求而执行计算上昂贵的安全标签计算处理的情况下快速地进行用户是否被限制访问该行的判断。

这里所述的行级安全的方法使得能够保护具有多个相关联的表的数据库中的数据。在这种数据库中,针对一个表中的行的安全标签可以基于针对另一相关表中的行的安全标签来至少一部分地确定。例如,如果用户被限制查看代表项目概要的数据记录,则由于代表项目概要和项目财政的数据记录之间的关系,导致同样可以自动阻止其观看代表项目财政的数据记录。如果在数据库中存在许多行要保护,但是安全性的一部分可以从其他相关行中推断出,则基于这些关系来确定安全标签可以有助于提高安全性,并降低维护成本。

安全标签的预计算以及数据记录中的安全标签的存储使得数据记录的安全性能够容易被理解,并且能够被有效地访问。对安全信息的该迅速访问可以帮助促进数据库系统的审计,可以辅助安全或者故障排除时的信息技术专业人员,并且可以促进涉及与数据库中的各数据记录相关联的许可和限制的理解的其它活动。例如,通过将针对数据记录的安全标签存储在数据记录自身中,审计者或安全专业人员可以在无需执行复杂计算并且无需参考单独的安全文件或表的情况下通过检查该数据记录来判断哪些用户被许可访问或限制访问该记录。

参考图1,位于服务器101上的数据库100可以包括一个或多个表50、52、54和56,这些表各自包括一个或多个数据记录。表可以与数据库100中的一个或多个其它表相关联,例如,存在分层关系或其它类型的关系。两个表之间的关系例如可以是父子关系,其中,子表依赖于一个或多个父表。例如,在图1的示例中,如箭头62所示,部门表52是分区表54之子。例如,如箭头64和66所示,项目表50是分区表54和地区表56这两者之子。有时将父表称为上游表,以及将子表称为下游表。表之间的其它类型的关系也是可能的。

安全模块520判断用户10是被许可访问还是被限制访问数据库100中的数据记录。对于用户10,其表示试图访问数据库100中的数据记录的任何人或实体。图1示出三个特定用户10a、10b和10c。用户安全代码18例如可以基于用户的角色(例如,项目经理、部门经理、总经理或其它角色)、用户的位置(例如东北区、西区或其它位置)、用户的安全等级(例如,绝密、机密、公开或其它等级)、用户的部门(例如,人力资源部、工程部、市场部或其它部门)或者其它特性来与各用户10相关联。在用户10请求访问数据库100中的特定数据记录时,安全模块520基于用户的用户安全代码18和该特定数据记录的安全标签之间的比较来判断是许可访问还是限制访问该特定数据记录。由于在接收到用户的访问请求之前已经计算出了特定数据记录的安全标签,因此安全模块520可以在无需执行潜在地计算上昂贵的针对行的安全标签的确定处理的情况下迅速地判断是否限制该用户访问该数据记录。

可以以行为单位限制对数据库100的访问。例如,表中的各行可以具有其自身的、单独的安全标签,该安全标签与针对同一表中的其它行各自的安全标签相独立,并且与针对数据库100中的其它表中的各行的安全标签相独立。针对行的安全标签可以是统一的安全标签,其具有一个或多个成分,其中,各成分是基于行内部的信息、行外部的信息、针对表的信息、或者以上任意两种信息的组合来独立确定的。针对各行的安全标签可以存储在行自身的栏中。针对数据记录的安全标签的各成分可以表示限制用户访问该数据记录、或者许可用户访问该数据记录。安全模块520可以判断特定数据记录中所存储的安全标签的一个或多个成分是否限制具有特定用户安全代码18的用户访问该特定数据记录。

在一些示例中,基于诸如数据记录的一个或多个属性等的该数据记录内部的信息来确定针对该数据记录的安全标签的成分。数据记录的属性是存储在数据记录的栏中的诸如数值、字符串或其它类型的值的值。这些属性可以表示诸如(以下论述的)角色、用户、用户的组、业务标签、输入函数或其它信息等的信息。在示例中,数据记录的属性可以是该数据记录所表示的公司部门的标识,并且针对数据记录的安全标签的成分可以是基于公司部门的标识来确定的。在示例中,数据记录的属性可以是表示数据记录是绝密(ts)、机密(s)、或公开(p)的等级值,并且针对数据记录的安全标签的成分可以是基于该等级值来确定的。在一些示例中,针对数据记录的安全标签的单个成分可以基于多个属性来确定,例如基于数据记录所表示的公司部门的标识以及针对数据记录的等级值这两者来确定。在一些示例中,针对数据记录的安全标签的多个成分各自可以是基于对应属性来确定的。

在一些示例中,针对数据记录的安全标签的成分是基于数据记录外部的信息来确定的,该信息诸如为针对同一表或不同表的相关数据记录的安全标签的成分等。一个表中的数据记录可以与同一表中的行相关,或者经由外键关系而与不同表中的行相关。外键是第一数据记录所存储的用于唯一识别第二数据记录的值,从而建立第一数据记录和第二数据记录之间的链接。第一数据记录和第二数据记录可以在同一表或不同表中。有时,将例如经由外键关系或其它类型的关系相关的行称为相关行,以及将基于不同表中的相关行中的信息来确定安全标签的成分称为安全标签的成分的继承。在示例中,子表中的各数据记录表示项目,并且经由外键关系与表示公司部门的父表中的数据记录相关。项目表中的各数据记录从公司部门表中的相关数据记录的安全标签的相应成分中继承其安全标签的成分。安全标签的继承可以使得高级访问限制传送至低级表。例如,利用安全标签的继承,如果用户被限制访问表示公司部门表中的工程部的数据记录,则用户同样会被限制访问表示与工程部相关的项目表中的项目数据记录的任意数据记录。

在一些示例中,针对数据记录的安全标签的成分针对属于特定表的全部数据记录是恒定的。例如,特定表中的全部数据记录可以具有恒定值作为安全标签的成分,其中该恒定值是表的属性。在示例中,在包括代表职员的薪水的数据记录的表中,全部数据记录具有安全标签的成分“机密”。

针对行的安全标签的成分可以是基于从多个其它行继承的值。在一些示例中,将从其它行获得的多个值串接,以形成针对该行的安全标签的成分。可以按照字母顺序、数值顺序、基于该行和其它行各自的关系的顺序、或者其它顺序来将这多个值串接。在一些示例中,这多个值可以是有序的或分层的列表的一部分,并且从这多个值中仅使用一个最高优先级值作为针对行的安全标签的成分。例如,如果一个相关行包括具有高优先级值(例如,“ts”)的成分并且另一相关行包括具有较低优先级值(例如,“s”)的成分,则基于这两个行的继承成分将具有高优先级值(“ts”)。

针对行的安全标签的成分可以是基于多个因素的。在示例中,针对行的安全标签的成分可以是基于该行的属性以及从相关行继承的值这两者的。安全标签的成分可以是属性和继承值的串接,可以从属性和继承值中采用较高优先级值,或者可以是以其它方式来进行组合。

针对行的安全标签可以具有多个成分(有时称为统一的安全标签),各成分相对于其它各成分是独立确定的。针对行的安全标签可以包括基于行的属性所确定出的一个或多个成分、通过继承所确定出的一个或多个成分、基于表相关信息所确定出的一个或多个成分、或者上述任意两者或更多者的组合。

一些外键关系可以是可空的,这意味着该外键对于没有引起错误的数据记录而言可以是缺失的。在通过经由可空的外键的继承来确定安全标签的成分的情况下,可以指定针对该成分的默认项。默认项可以向安全标签的成分分配默认值;可以忽视外键关系,从而使得安全标签的成分空白;或者可以基于其它因素来确定针对该成分的值。一些外键关系可以是非可空的,这意味着如果不存在针对外键的值,则会产生错误结果。在通过经由非可空的外键的继承来确定安全标签的成分的情况下,不指定默认。

一个或多个表相关规则指定针对表中的各记录如何确定安全标签的各成分。表相关规则可以针对表中的各数据记录的安全标签的各成分指定在确定安全标签的成分时所要使用的属性、外键和常数中的一个或多个。表相关规则可以指定是否将多个值串接、是否将多个值视为分层或有序的列表等。表相关规则可以在外键关系为空的事件中指定默认。还可以指定其它规则。

在一些示例中,可以使用诸如查找表等的转换表来简化安全标签的成分。转换表将一组值或这些值的组合中的各值映射至其它组值的对应值。例如,在安全标签的单个成分可以包括大量串接值的情况下,转换表是可用的。这种成分可能变得复杂且不实用。转换表可以将可能的串接值的组合各自映射成诸如单值等的更简单的表达,其中,该单值可以用作安全标签中的替代值。

在一些示例中,在将数据记录输入到数据库100中时确定针对数据记录的安全标签。在一些示例中,在改变数据记录或相关数据记录以使得可以改变针对数据记录的安全标签的成分的情况下,更新针对数据记录的安全标签的一个或多个成分。例如,在数据记录的属性发生改变的情况下,可以更新基于属性所确定出的安全标签的成分。在外键发生改变的情况下,可以更新通过经由该外键的继承所确定出的安全标签的成分。在改变经由外键与下游数据记录相关的上游数据记录的情况下,可以更新通过经由该外键的继承所确定出的下游数据记录的安全标签的成分。在删除经由外键与下游数据记录相关的上游数据记录的情况下,可以更新通过经由该外键的继承所确定出的下游数据记录的安全标签的成分。其它情形也可以触发对针对数据记录的安全标签的更新。

可以使用针对行的安全标签来限制对行的访问。数据库系统的各用户具有用户安全代码,其可以在数据库中包括与针对数据记录的安全标签的成分相同的成分。在用户试图访问行时,将用户的用户安全代码的各成分与该行的安全标签的对应成分进行比较。如果任意成分禁止用户访问该行,则用户被限制访问该行。

在一些示例中,通过串接一个或多个值来形成行的安全标签的成分。用户被限制访问安全标签包括没有包括在用户的用户安全代码中的一个或多个值的行。例如,特定行可以包括具有包括串接了值“a,b,c”的成分的安全标签。用户安全代码包括针对对应成分的值“a,b”的用户被限制访问该行。根据用户安全代码的成分和行的安全标签的对应成分彼此之间的比较的结果,用户安全代码包括针对对应成分的值“a,b,c,d”的用户可以被许可访问该行。

在一些示例中,可以形成行的安全标签的成分的值是有序或分层列表的一部分。具有针对用户的用户安全代码的对应成分的特定值的用户被限制访问具有比用户的值高的高优先级值的任意行。例如,可以从有序的列表“ts”、“s”和“p”中选择安全标签的成分的值,其中,“ts”表示最高优先级值,以及“p”表示最低优先级值。特定行可以具有包括具有值“s”的成分的安全标签。用户安全代码具有针对对应成分的值“p”的用户被限制访问该行。根据用户安全代码的各其它成分和该行的安全标签的对应成分彼此之间的比较结果,用户安全代码具有值“ts”或“s”的用户可以被许可访问该行

在一些示例中,针对用户10的用户安全代码18的一个或多个成分可以是基于用户的角色的。对于角色,其意味着用户所保持的位置,诸如作业位置、责任组、相对于彼此的位置、或其它类型的位置。角色的示例可以包括总经理角色、经理角色、专业人员角色、辅助角色或其它角色。例如,如图1中的示例中,分区总经理10a、生产员工10b、以及部门经理10c针对基于公司内的各用户角色的用户安全代码18的一个或多个成分中的各成分具有不同的值。

在一些示例中,第一角色可以暗含一个或多个其它角色,这意味着如果用户被分配了第一角色,则该用户还可以自动被分配一个或多个其它角色。然后,该用户还与针对一个或多个其它角色的任意用户安全代码相关联。例如,分区总经理角色可以暗含部门经理角色。结果,具有分区总经理角色的任意用户(例如用户10a)可以被自动分配部门经理角色,从而可以与针对部门经理角色的任意用户安全代码相关联。

参考图2a,示例数据库系统950中的实体包括具有两个不同成分的安全标签。数据库系统950存储了veryspecialdeliveries公司所管理的各次交付的代表出发地、目的地和运输工具的数据。数据库系统950包括利用外键方式以分层关系相关的多个表。交付表910中的数据记录存储针对各次交付的代表出发地、目的地、运输工具和担保者的数据。交付表910的各记录中的出发地和目的地栏各自通过外键关系与地点表920中的记录相关,并且地点表中的记录各自通过外键关系与地区表930中的记录相关。交付表910的各记录中的运输工具栏通过外键关系与运输工具表940相关。交付表910中的各记录的担保者栏通过外键关系与担保者表960相关。在本示例中,仅示出涉及安全的栏。数据记录可以具有在安全标签的确定中未涉及的附加属性、外键或这两者,这在图2a中未示出。

数据库系统950中的许可受具有两个不同且独立的成分(分类成分和位置成分(采用分类:位置的形式来表达))的串接的安全标签约束。在该示例中,分类成分采用从具有低优先级值(u)和高优先级值(s)的有序列表中选择的单值。位置成分可以采用一个或多个值(na或eu);如果位置成分包括多个值,则这些值可以按照字母列表来串接。

在运输工具表940中,针对各记录的安全标签的分类成分是基于记录的“分类”属性来确定的。如果“分类”属性是“u”,则安全标签的分类成分采用值“u”,并且如果“分类”属性是“s”,则安全标签的分类成分采用值“s”。运输工具表940中的记录不具有针对安全标签的位置成分的值。针对运输工具表940的安全标签确定可以利用安全模块520所执行的代码(例如,表示“分类”栏中的值要包括在针对运输工具表940的数据记录的安全标签的分类成分中的代码)来实现。

在地区表930中,针对各记录的安全标签的位置成分是基于该记录的“地区_代码(region_code)”属性来确定的。如果“地区_代码”属性是“na”,则安全标签的位置成分采用值“na”,并且如果“地区_代码”属性是“eu”,则安全标签的位置成分采用值“eu”。地区表930的记录不具有针对安全标签的分类成分的值。针对地区表930的安全标签确定可以利用安全模块520所执行的代码(例如,表示“地区_代码”栏中的值要包括在针对地区表930的数据记录的安全标签的分类成分中的代码)来实现。

针对担保者表960中的全部记录的安全标签的分类成分采用值“s”。与记录的属性或者针对记录的外键关系无关地,值“s”是应用于担保者表960中的全部记录的表相关常数。针对担保者表960的安全标签确定可以利用安全模块520所执行的代码(例如,表示值“s”始终包括在针对担保者表960的数据记录的安全标签的分类成分中的代码)来实现。

地点表920中的记录具有安全标签的分类成分和位置成分这两者。针对各记录的安全标签的分类成分是基于该记录的“分类”属性来确定的。针对地点表920中的各数据记录的分类成分的确定可以利用安全模块520所执行的代码(例如,表示“分类”栏中的值要包括在针对地点表920的数据记录的安全标签的分类成分中的代码)来实现。

针对地点表920中的各记录的安全标签的位置成分是通过继承来确定的。地点表920中的各记录通过“地区”栏中的值、经由外键关系而与地区表930中的记录相关。各地点记录从相关的地区记录的安全标签的位置成分继承其安全标签的位置成分。例如,纽约、芝加哥和白沙地点记录从北美地区记录继承“na”位置成分,并且伦敦地点记录从欧洲地区记录继承“eu”位置成分。针对地点表920中的各数据记录的位置成分的确定可以利用安全模块520所执行的代码(例如,表示要考虑与地区表930的外键的代码)来实现。

与地区表930的外键关系是可空的,这意味着“地区”栏可以在不引起错误的情况下为空白。在该示例中,如果针对特定数据记录外键关系为空(例如,如果针对该数据记录“地区”栏中不存在值),则通过在分类成分中默认为“s”并且在位置成分中无值来确定安全标签。由于针对分类成分“s”是高优先级值,因此该默认确保分类成分将与针对数据记录的分类属性的值无关地采用值“s”。针对可空的外键的默认行为可以利用安全模块520所执行的代码(例如,表示在与地区表930的外键关系是空的情况下安全标签是“s:–”的代码)来实现。

针对交付表910中的数据记录的安全标签的分类成分和位置成分这两者是通过继承来确定的。交付表910中的各记录经由外键关系而与包括地点表920(通过“出发地”和“目的地”栏作为外键)、运输工具表940(通过“运输工具”栏作为外键)和担保者表960(通过“担保者”栏作为外键)的其它表中的一个或多个其它记录相关。

分类成分采用基于有序列表的单值,其中在该有序列表中,“u”是低优先级值,并且“s”是高优先级值。针对特定数据记录的分类成分分配作为针对作为相关的数据记录各自中的分类成分的最高优先级值的值。因而,对于特定数据记录,如果任意相关数据记录包括具有“s”的值的分类成分,则针对分类成分该特定相关数据被分配“s”的值。

位置成分采用针对按字母顺序串接的相关数据记录的位置成分的全部值。因而,对于特定数据记录,如果这些相关数据记录之一包括具有“na”的值的位置成分并且这些相关数据记录中的另一个包括具有“eu”的值的位置成分,则针对位置成分该特定数据记录被分配“eu,na”的值。

在该示例中,与运输工具表940和担保者表960的外键是可空的。针对各可空的外键设置默认。如果针对特定数据记录与运输工具表940的外键为空(例如,针对该数据记录“运输工具”栏无值),则通过在分类成分中默认为“s”并且在位置成分中无值来确定安全标签。与地点表920的外键不是可空的。如果针对特定数据记录与地点表920的外键为空(例如,针对该数据记录“出发地”或“目的地”栏无值),则会发生错误。

针对交付表910中的各数据记录的安全标签的确定可以利用用于识别考虑了各外键关系并且指定是否为空的安全模块520所执行的代码来实现:

关于与出发地的fk(非可空)

关于与目的地的fk(非可空)

关于与运输工具的fk(如果为空则使用“s:–”)

关于与担保者的fk(如果为空则忽略)

具体地,针对d1交付记录的分类成分被分配为针对相关记录的分类成分纽约(“u”)、芝加哥(“u”)和飞机(“u”)中的最高优先级值。“担保者”栏为空,从而忽略与担保者表960的外键关系。因而,针对d1记录的分类成分被分配值“u”。针对d1交互记录的位置成分是通过串接针对相关记录的位置成分纽约(“na”)和芝加哥(“na”)的各不同值来确定的。由于针对位置成分的值适用于全部相关记录,因此不必要进行串接,并且针对d1交付记录的位置成分被分配值“na”。针对d1交付记录的统一安全标签是“u:na”。

针对d2交付记录的分类成分被分配为针对相关记录的分类成分纽约(“u”)、白沙(“s”)和飞机(“u”)中的最高优先级值。“担保者”栏为空,从而忽略与担保者表960的外键关系。“s”是比“u”的优先级值高的优先级值,从而针对d2交付记录的分类成分被分配值“s”。针对d2交互记录的位置成分是通过串接针对相关记录的位置成分纽约(“na”)和白沙(“na”)的各不同值来确定的。因而,针对d2交付记录的统一标签是“s:na”。

针对d3交付记录的分类成分被分配为针对相关记录的分类成分纽约(“u”)、伦敦(“u”)和飞机(“u”)中的最高优先级值。“担保者”栏为空,从而忽略与担保者表960的外键关系。因而,针对d3的分类成分分配值“u”。针对d3交互记录的位置成分是通过串接针对相关记录的位置成分纽约(“na”)和伦敦(“eu”)的各不同值来确定的。按字母顺序来串接两个位置成分值,以形成针对dc交付记录的位置成分:“eu,na”。因而,针对d3交付记录的统一标签为“u:eu,na”。类似地,针对d4交付记录的统一标签同样为“u:eu,na”。

针对d5交付记录的分类成分被分配为针对相关记录的分类成分纽约(“u”)、伦敦(“u”)和潜水艇(“s”)中的最高优先级值。“担保者”栏为空,从而忽略与担保者表960的外键关系。“s”是比“u”的优先级值高的优先级值,从而针对d5交付记录的分类成分被分配值“s”。针对d5交互记录的位置成分是通过串接针对相关记录的位置成分纽约(“na”)和伦敦(“eu”)的各不同值来确定的。因而,针对d5交付记录的统一标签是“s:eu,na”。

与针对相关记录的分类成分的值无关地,d6交付记录具有针对运输工具栏的空的外键关系,从而针对d6记录的分类成分被默认为“s”。针对d6交互记录的位置成分是通过串接针对相关记录的位置成分纽约(“na”)和伦敦(“eu”)的各不同值来确定的。因而,针对d6交付记录的统一标签是“s:eu,na”。

通过选择具有分类成分纽约(“u”)、伦敦(“u”)、飞机(“u”)和担保者(“s”)的相关记录中的最高优先级分类成分来确定针对d7交付记录的分类成分。因而,针对d7的分类成分被分配值“s”。针对d7交互记录的位置成分是通过串接针对相关记录的位置成分纽约(“na”)和伦敦(“eu”)的各不同值来确定的。因而,针对d7交付记录的统一标签是“s:eu,na”。

参考图2b,图2a所示的数据库系统950的各用户包括具有两个不同且独立成分(分类成分和位置成分(采用分类:位置的形式来表达))的用户安全代码。在用户试图访问数据库系统950中的数据记录的情况下,将针对用户的用户安全代码的分类成分的值与针对数据记录的安全标签的分类成分的值进行比较,并且将针对用户的用户安全代码的位置成分的值与针对数据记录的安全标签的位置成分的值进行比较。如果分类成分或位置成分中任一禁止用户访问该行,则用户被限制访问该行。

用户安全代码的分类成分和位置成分各自可以采用分别对数据记录的安全标签的分类成分和位置成分可用的相同的值。例如,用户安全代码的分类成分可以被分配高优先级值“s”或者低优先级值“u”。用户安全代码的位置成分可以被分配“na”、“eu”或“na,eu”。

如果用户的用户安全代码的分类成分具有值“u”,则与用户安全代码的位置成分的值和数据记录的安全标签无关地,用户被限制访问安全标签针对分类成分具有较高优先级值(例如,“s”)的任何数据记录。如果用户的用户安全代码的分类成分具有值“s”,则根据针对用户安全代码的位置成分的值和数据记录的安全标签,用户可以被许可访问针对其安全标签的分类成分具有“u”或“s”的数据记录。如果数据记录的安全标签的分类成分是空白,则不存在对分类成分施加的限制,并且通过位置成分来控制用户对数据记录的访问。

如果用户的用户安全代码的位置成分具有值“na”,则用户被限制访问安全标签包括具有“na”以外的任何值的位置成分的任意数据记录。因而,例如,用户将被限制访问安全标签包括具有值“eu”或者“eu,na”的位置成分的数据记录。如果用户的用户安全代码的位置成分具有值“eu,na”,则根据针对用户安全代码的分类成分的值和数据记录的安全标签,用户可以被许可访问针对其安全标签的位置成分具有“na”、“eu”或“eu,na”的数据记录。如果安全标签的位置成分是空白的,则不存在对位置成分施加的限制,并且通过分类成分来控制用户对数据记录的访问。

如果分类成分或位置成分任一限制用户访问数据记录,则用户被限制访问该数据记录。例如,具有“u:na”的用户安全代码的user1被限制访问安全标签针对分类成分具有“s”的任意数据记录以及安全标签在位置成分中包括除“na”以外的任何值的任意数据记录。具有“u:eu,na”的用户安全代码的user2被限制访问安全标签针对分类成分具有“s”的任意数据记录,但是不对位置成分的值进行限制。具有“s:na”的用户安全代码的user3不对分类成分的值进行限制,但是被限制访问安全标签在位置成分中包括除“na”以外的任意值的任意数据记录。具有“s:eu,na”的用户安全代码的user4不对数据记录的访问进行限制。

在本示例中,针对各入口的安全标签具有一个有序成分(分类成分)和一个无序成分(位置成分)。在一些示例中,安全标签可以具有多个有序或分层成分、多个无序成分或这两者。

在本示例中,安全标签的成分的继承通过多个表分层的生成来执行。通过扩展,如果交付表910具有诸如入口通过外键关系而与交付表910的入口相关的交付项表等的子表,则标签继承将以与以上述同样的方式在交付项表中继续。

通过将针对行的安全标签存储在行自身内,针对该行的访问限制可以快速且容易地确定出。例如,在用户试图访问行时,用户对特定行访问的能力可以在无需识别相关行或者实时(例如,在用户试图访问该行期间)计算安全标签的情况下、通过针对该行的安全标签和针对用户的用户安全代码之间的直接比较来确定。因而,该方法可以更快速且更可靠地提供对数据库中的受安全保护的行的访问。由于在无需参考其它表或复杂的逻辑判断的情况下安全标签是可见并且容易理解的,因此通过将针对行的安全标签存储在行自身内还有助于安全审计或安全设置的维护。

参考图3,系统500可以例如通过计算机506来确定针对输入到数据库90中的数据记录504的安全标签502。数据记录504可以是向数据库90添加的新的数据记录,或者可以是对已经存储在数据库90中的数据记录的更新。

检测模块510检测可能影响数据库90中的一个或多个数据记录的安全标签502的成分的属性和外键关系的改变。检测模块510检测进入的数据记录504,并且判断是否将数据记录504转发至用于针对数据记录504的安全标签502的计算的安全模块520。例如,如果数据记录504是新的数据记录,则检测模块510将数据记录504自动转发至安全模块520。如果数据记录504是对先前存储的数据记录的更新,则检测模块510判断对数据记录的更新是否能够影响数据记录504的安全标签的一个或多个成分。能够影响安全标签的一个或多个成分的更新例如包括:对在确定安全标签的成分时所使用的数据记录的属性的更新;对确定安全标签的成分所依赖的外键关系的更新;或者其它更新。不会影响安全标签的任何成分的更新例如包括对不用于安全标签的确定的属性或外键关系的更新。如果检测模块510判断为该更新能够影响数据记录504的安全标签,则检测模块510将更新后的数据记录504转发至安全模块520。如果检测模块510判断为该更新不会影响数据记录的安全标签,则检测模块510可以例如绕过安全模块520而将数据记录504直接转发至(以下所述的)级联模块550。

在一些示例中,检测模块510可以根据规则数据库530、规则文件或以其它方式所存储的一个或多个规则532来判断是否将进入的数据记录504转发至安全模块520。规则532的示例可以指示要经由安全模块520转发新的数据记录504。规则的示例可以指定数据库90的用于针对数据记录的安全标签的成分的确定的特定表(例如,要存储数据记录504的表)中的数据记录的属性,并且指示要经由安全模块520来转发具有向一个或多个指定属性的改变的更新后的数据记录504。规则的示例可以指定数据库90的特定表(例如,要存储数据记录504的表)中的数据记录的哪个或哪些栏包括将更新后的数据记录504与其它数据记录相关联的外键值,并且指示要经由安全模块520来转发具有向一个或多个指定外键栏的改变的更新后的数据记录504。例如,规则532可以指示能够使数据记录504与不同上游数据记录相关的外键值的变化触发经由安全模块520的转发,而指示能够使数据记录504与不同的下游数据记录相关的外键值的变化使得数据记录504直接转发至级联模块550。

安全模块520确定针对进入或更新后的数据记录504的安全标签502。安全模块520可以基于规则数据库530中所存储的规则532来确定安全标签502。数据库90中的各表可以具有一个或多个规则532的各集合。针对特定表的规则指定针对该表中的各记录如何确定安全标签的各成分。针对安全标签的各成分,这些规则可以识别在确定安全标签的成分时所要使用的属性、外键和常数中的一个或多个。这些规则可以指定在确定特定成分时所要使用的多个值是否要被串接或被视为分层列表或有序列表。这些规则可以指定可为空的外键关系为空的事件中的默认,诸如针对安全标签的成分的默认值的指定或者忽略空的外键的指示等。一旦根据这些规则532确定了针对进入或更新后的数据记录504的安全标签502,则向数据记录504添加安全标签502,并且将包括安全标签502的数据记录504存储在数据库90中。

数据记录504还被转发至级联模块550。级联模块550判断作为数据记录504的更新结果,诸如下游记录等的哪些其它记录可能需要重新计算安全标签。例如,级联模块550识别例如经由外键关系而与数据记录504相关的下游记录514,并且将这些下游记录514转发至例如如上所述的用于对相应的安全标签的重新计算的安全模块520。在一些示例中,级联模块550可以根据用于识别将数据记录504与其它下游数据记录相关的外键的一个或多个规则532,来识别下游相关记录514。

一旦通过安全模块520处理了下游数据记录514,则在数据库90中更新其安全标签,并且将下游数据记录514转发至级联模块550,以使得可以重新计算该数据记录514的下游数据记录的安全标签。安全标签重新计算的该级联可以继续直到例如没有其它可用的下游数据记录为止。

系统500可以在从数据库90删除数据记录时进行安全标签重新计算。检测模块510检测到数据记录要从数据库90删除,并且将该数据记录转发至级联模块550。级联模块550判断作为数据记录504的更新结果,诸如下游记录等的哪些其它记录可能需要重新计算安全标签。例如,级联模块550识别例如经由外键关系而与数据记录相关的下游记录514,并且将这些下游记录514转发至例如如上所述的用于对相应的安全标签的重新计算的安全模块520。

在一些示例中,安全模块520可以保持安全标签计算的日志518。例如,日志518可以包括计算或重新计算安全标签的数据记录的标识符、改变的日期、改变的时间、安全标签的先前值、改变的原因(例如,触发重新计算的上游相关记录的识别或者数据记录是新的或被更新的指示)或者其它信息、或者这些信息中的两者以上的组合。

参考图4,系统500可以响应来自用户600的用以访问数据库90中所存储的数据记录602的请求。用户具有用户安全代码604。在用户600请求访问数据记录602时,安全模块520从数据库90中检索针对数据记录602的安全标签606。然后,安全模块520根据规则532将针对数据记录602的安全标签606的各成分与用户的用户安全代码604的对应成分进行比较。如果用户的用户安全代码604的各成分满足安全标签606的对应成分,则使得用户600能够访问数据记录602。如果用户的用户安全代码604的一个或多个成分不满足安全标签606的对应成分,则用户被限制访问该记录。可以将视图610呈现给用户600,这使得用户600可以访问其被允许访问的一个或多个数据记录602。

参考图5,在确定针对进入的数据记录的安全标签的一般方法中,接收数据记录(800),以将数据记录存储在数据库的表中。检索指示如何针对该数据记录来确定安全标签的一个或多个规则(802)。根据这些规则来确定安全标签的各成分(804)。安全标签的成分的确定可以包括基于数据记录的属性来确定安全标签的成分(806)。安全标签的成分的确定可以包括基于从经由外键关系所关联的其它数据记录的值的继承来确定安全标签的成分(808)。安全标签的成分的确定可以包括基于与表相关联的恒定值来确定安全标签的成分(810)。将安全标签存储在数据记录的栏中(812)。

参考图6,在用于更新针对已经更新了的数据记录的安全标签的一般方法中,接收对数据库中所存储的数据记录的更新(600)。检索指示针对该数据记录要如何确定安全标签的一个或多个规则(602)。如果该更新影响在针对数据记录的安全标签的成分的确定中所使用的属性,或者如果该更新影响更新后的数据记录与上游数据记录之间的外键关系,或者这两者(604),则例如如上所述,重新计算针对数据记录的安全标签的受影响的成分(606)。如果该更新不会影响在对安全标签的确定中所使用的数据记录的任意元素(604),则不针对数据记录重新计算安全标签(608)。识别下游相关数据记录(610)。如果针对数据记录重新计算安全标签,或者如果该更新影响更新后的数据记录和下游数据记录之间的外键关系,则针对各下游相关记录执行安全计算处理(612)。在没有其它下游记录存在的情况下,处理终止(614)。

参考图7,在从数据库中删除数据记录的一般方法中,删除数据记录(900)。识别下游相关数据记录(902)。例如如上所述,针对各下游相关记录重新计算安全标签的成分(904)。在没有其它下游记录存在的情况下,处理终止(906)。

在一些情况下,针对行的安全标签控制哪些用户被许可或者被限制读取该行。在一些情况下,针对行的安全标签控制哪些用户被许可或者被限制写入该行。在一些情况下,各行可以具有两个安全标签,其中一个标签控制哪些用户可以读取行,以及另一个标签控制哪些用户可以写入行。

在一些示例中,如上所述的,针对表中的行的安全标签的成分是基于其它表中的一个或多个相关行各自中的信息来确定的。在一些示例中,针对表中的行的安全标签的成分可以是基于同一表中的一个或多个相关行的各行中的信息来确定的。可以在表中的行之间的关系不循环的情况下(诸如在行之间的关系是分层的情况下),基于同一表的相关行中的信息来进行针对行的安全标签的成分的确定。

在一些示例中,针对表中的特定行的安全标签的成分可以是基于经由多个参考的链而与该特定行相关的行中的信息来确定的,而不是基于参考的链中的一个或多个中间行中的信息来确定的。例如,表a中的各行可以与表b中的行相关,并且表b中的各行可以与表c中的各行相关。针对表a中的各行的安全标签的成分可以是基于表c中的相关行中的信息来确定的,而不是基于表b中的相关行中的信息来确定的。

在一些示例中,针对表中的各行的安全标签可以是基于同一表或者默认的其它表中的任意相关行中的信息来确定的。在一些情况下,用户可以重写该默认,以使得针对行的安全标签不会遵循任何外键关系,或者不会遵循一个或多个特定的外键关系。在一些示例中,针对表中的各行的安全标签无法遵循默认的任何外键关系。在一些情况下,用户可以重写该默认,以使得针对表中的各行的安全标签遵循一个或多个特定的外键关系,或者遵循全部外键关系。

在一些示例中,外键关系的默认方法可以依赖于外键的性质。例如,如果特定外键是可空的,则该默认可以在确定安全标签时不遵循外键关系,而如果特定外键不是可空的,则该默认可以在确定安全标签时遵循外键关系。尽管如此,如果特定外键不是可空的而是空的,则可以指定可回撤的安全标签,诸如限制性最大的安全标签、最频繁使用的安全标签、用户指定的安全标签或者其它安全标签。

在一些示例中,对数据库中的全部表施加行级安全,例如,该行级安全是基于表外部的信息的。在一些示例中,仅对数据库中的一些表施加行级安全。

在一些示例中,可以与针对行级安全所述的方式同样的方式设置列级安全。例如,可以在表中设置附加行,以包括列级安全标签。针对列级安全行中的栏的值可以基于表外部的信息、表内部的信息或者这两者。

在一些示例中,行级安全可以经由诸如数据库中的分层对象类等各种对象类来传送。例如,行级安全可以在数据库级中、在架构级、或在表级中、或者其它级中施加。

参考图8,在用于判断用户是否被限制访问记录的一般方法中,从用户的方面接收用以访问数据记录的请求(850)。接收用户的用户安全代码(852),该用户安全代码可以包括一个或多个成分。针对所请求的数据记录检索安全标签(854)。检索用于管理用户访问限制的一个或多个规则(856),并且将用户的用户安全代码的各成分与数据记录的安全标签的对应成分相比较(858)。如果用户的用户安全代码的任意成分禁止用户访问数据记录(860),则拒绝对数据记录的访问(862)。如果用户的用户安全代码中没有成分禁止用户对数据记录的访问(860),则使得用户能够访问数据记录(864)。

参考图9,在一些示例中,可以在包括数据源102和执行环境104的数据处理系统150中实现上述技术。数据源102可以包括诸如存储装置或者至线上数据流的连接等的一个或多个数据源,其中该一个或多个数据源各自可以以各种存储格式(例如,数据库表、电子表格文件、非结构文本(flattext)文件或大型机所使用的原本格式)中的任何存储格式来存储或提供数据。执行环境104包括预处理模块106和执行模块112。执行环境104可以在诸如unix操作系统的版本等的适当的操作系统的控制下安装在一个或多个通用计算机上。例如,执行环境104可以包括多节点并行计算环境:该多节点并行计算环境包括使用多个中央处理单元(cpu)或处理器内核的计算机系统的结构,可以是本地的(例如,诸如对称多处理(smp)计算机等的多处理器系统)、本地分布式的(例如,作为集群所连接的多个处理器或大规模并行处理(mpp)系统)、远程或远程分布式的(例如,经由局域网(lan)和/或广域网(wan)连接的多个处理器)、或者它们的任何组合。

预处理模块106读取来自数据源102的数据,对该数据进行任何适当处理,并存储处理后的数据。提供数据源102的存储装置相对于执行环境104可以是本地的,例如,可以存储在连接至安装有执行环境104的计算机的存储介质(例如,硬盘驱动器108)上。存储装置相对于执行环境104还可以是远程的,例如,安装在经由(例如,云计算基础设施所提供的)远程连接与安装有执行环境104的计算机进行通信的远程系统(例如,大型机110)上。

执行模块112使用预处理模块106所生成的处理后的数据来执行特定处理。预处理模块106可以输出数据114,该数据114可以存储回数据源102或者存储回在执行环境104可访问的数据存储系统116中,或者被使用。数据存储系统116也可以访问开发环境118,其中在开发环境118中,开发者120能够对数据处理应用程序进行开发。在一些实现中,开发环境118是用于开发作为计算图或数据流图的应用程序的系统,其中计算图或数据流图包括顶点(表示数据处理组件或数据集),并且这些顶点通过顶点之间的有向链接(directedlink)(表示工作元素(即,数据)的流)相连接。例如,在标题为“managingparametersforgraph-basedapplications”的美国专利公开号2007/0011668中更详细地说明了这种环境。在标题为“executingcomputationsexpressedasgraphs”的美国专利5,966,072中说明了用于执行这种基于图的计算的系统。根据该系统所制作的数据流图提供用于将信息输入至图组件所表示的个别处理或从图组件所表示的个别处理获得信息的方法、用于在处理之间移动信息的方法以及用于定义处理的运行顺序的方法。该系统包括用于从任何可用方法中选取处理间通信方法的算法(例如,与图的链接相对应的通信路径可以使用tcp/ip或unix域套接字或者使用共享存储器在处理之间传递数据)。

使用开发环境118所开发的数据流图可以存储在例如数据存储系统116中,并且可以被执行环境104访问。执行环境104可以执行该数据流图,以执行与该数据流图的组件相关联的处理,从而处理从数据源102接收到的数据。

上述的生成连接的方法的可以使用执行适当软件的计算系统来实现。例如,数据处理系统100可以使用具有用于执行指令的一个或多个数据处理器的计算系统来实现。例如,该软件可以包括在一个或多个编程或可编程计算系统(可以具有诸如分布式、客户端/服务器或网格式等的各种架构)上执行的一个或多个计算机程序中的过程,其中该一个或多个编程或可编程计算系统各自包括至少一个处理器、至少一个数据存储系统(包括易失性和/或非易失性存储器和/或存储元件)、至少一个用户接口(用于使用至少一个输入装置或端口来接收输入、并且用于使用至少一个输出装置或端口来提供输出)。该软件可以包括例如提供与数据流图的设计、配置和执行有关的服务的较大程序的一个或多个模块。可以将该程序的模块(例如,数据流图的元素)实现为数据结构或符合数据储存库中所存储的数据模型的其它有组织数据。

可以将软件设置在诸如cd-rom或(例如,利用通用或专用计算系统或装置可读取的)其它计算机可读介质等的有形非瞬态介质上、或者经由网络的通信介质(例如,以编码在传送信号中的形式)传递至执行该软件的计算系统的有形非瞬态介质。可以在专用计算机上、或者使用诸如协处理器或现场可编程门阵列(fpga)或专用集成电路(asic)等的专用硬件来进行该处理的一部分或全部。可以以利用不同的计算元件来进行软件所指定的计算的不同部分的分布式方式来实现该处理。优选将这种计算机程序各自存储在通用或专用可编程计算机可访问的存储装置的计算机可读存储介质(例如,固态存储器或介质、或者磁性或光学介质)上或者下载至该计算机可读存储介质,以在利用计算机读取存储装置介质以进行这里所述的处理的情况下配置计算机并使该计算机进行工作。本发明的系统还可被视为作为配置有计算机程序的有形非瞬态介质来实现,其中如此配置成的介质使计算机以特定的预定义方式进行工作,以进行这里所述的处理步骤中的一个或多个。

已经说明了本发明的多个实施例。然而,应当理解,上述说明意图例示而并非限制由所附权利要求书的范围所定义的本发明的范围。因此,其它实施例同样处于所附权利要求书的范围内。例如,可以在没有背离本发明的范围的情况下进行各种修改。另外,上述步骤中的一部分可以是顺序独立的,因而可以以与所述顺序不同的顺序来进行。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1