基于数据驱动角色的安全的制作方法

文档序号:6424075阅读:111来源:国知局
专利名称:基于数据驱动角色的安全的制作方法
技术领域
本发明涉及在数据上下文和对与该数据上下文有关的控制表达式的求值的基础上的基于角色的访问控制。
背景技术
作为关于某些常规系统的背景,经由访问控制系统对数据资源的访问和/或对受保护系统的操作在传统上通过将一个或多个访问特权分配给受保护系统的一个或多个用户来实现。在这点上,常规的基于角色的访问控制(RBAC)技术使得用户能够基于分配给该用户的角色来访问受保护的系统资源。由此,用户被准许基于分配给该角色的一个或多个访问特权来访问受保护系统和/或对其执行操作。例如,可以将诸如“创建存储卷,,和“删除存储卷”之类的受保护系统操作(在这种情况下,存储系统是受保护系统)分配给“管理员”角色。当用户被分配管理员角色时,用户可以创建和/或删除存储系统中包括的任何存储卷。RBAC因此是基于角色和为该角色定义的许可来将系统或系统资源的访问限于经授权的用户的一种方法。在组织内,为各种职业职责,诸如经理或管理员创建角色。将执行特定操作的许可分配给特定角色。员工或其他系统用户的成员被分配特定角色,并且那些用户通过这些角色分配来获得执行特定系统功能的许可。因为许可不是直接分配给用户而是通过他们的角色,所以对各个用户权限的管理变成了向合适的用户分配合适的角色的问题。通常,角色被表示为标识符(角色名或ID)和角色成员ID列表,例如,作为安全标识符 (SID)存储在基于Windows的系统中的用户或组,或者基于Unix的系统中的用户实体名。为了补充角色分配,在常规访问控制列表(ACL)模型中,对象或资源可被分配描述可向其授予对对象或资源的访问权的用户的有效集的角色ID集。通常在操作中,基于用户对操作或资源作出请求的用户上下文,即,基于用户被允许承担什么角色并且基于这些角色根据对正被访问的给定对象或资源施加的访问控制列表(ACL)决定什么许可集,系统作出是否准许给定用户正在采取的动作的确定。在这点上,用户可以承担的角色集和为给定角色在对象上定义的许可集两者都是完全声明性的并因此是静态地定义的。虽然这对于已知范围和规模的系统或资源的分层结构一般是足够的,但当用户数量和角色类型以及他们之间的关系变得重要或频繁变化时,静态地定义访问许可和用户角色并使得他们保持最新并且与正在变化的资源和资源分层结构保持一致可能造成麻烦的安全配置管理挑战。在这点上,传统的访问控制管理模型是基于对象的,由此在该对象或对象容器处 (例如,在ACL中)指定访问控制,并且通常管理员或其他经授权的实体指定要授予该对象的许可。管理员因此将组织授权策略转换成对对象的许可每一对象具有授予表示组织内的各个用户和组的角色的访问许可列表。与必须定义用于控制对给定数据系统的许可的自定义代码的情形相比,RBAC通过允许按用户职业职责来管理许可来简化访问控制管理并提升企业环境中的可管理性。基于角色的访问控制的某些目标可以使用组来实现。组对应于员工角色,而应用管理员可以通过在ACL中向该组授予对对象的许可来指定该角色所需的许可。然而,随着对象集合增长,管理员管理许可的场所数量也随之增长。频繁使用资源组和用户组可以帮助最小化这一效果,但这需要持续的实践和管理员之间的协调以及资源组的精确定义。这些过程减缓了管理过程,所以管理员常常避免使用组。另外,随着对象数量的增长,跨应用查询对特定组或角色的经授予的访问变得困难。例如,为了准确地确定向用户或组授予了什么许可,管理员一般检查每一对象上的许可。因为有太多的对象要查询,所以可能难以验证关于特定组或用户的访问控制的状态。此外,在重要得多的变化发生在组织的资源分层结构中的情况下,诸如例如当人力资源信息管理系统记录到不同部门的职员调动时,可能需要对受影响的用户对象和任何适用的ACL 都进行更新,并且如果未能这么做的话,则可能导致不正确的访问许可或系统的未定义状态。具体地,这些困难是由于在ACL中显式地分配许可而没有顾及受保护资源的扩展属性而导致的。当今基于角色的安全系统的上述缺点仅旨在提供常规系统的一些问题的概览,并且不旨在是穷尽性的。在仔细阅读了以下具体实施方式
后,当今领域的其他问题和各非限制性实施例的对应好处可变得显而易见。

发明内容
此处提供了简化概述以帮助能够对以下更详细的描述和附图中的示例性、非限制性实施例的各方面有基本或大体的理解。然而,本发明内容并不旨在作为详尽的或穷尽的概览。相反,本发明内容的唯一目的是以简化的形式来提出与一些示例性非限制性实施例相关的一些概念,作为以下各实施例的更为详细的描述的序言。在各实施例中,提供了基于数据驱动角色的安全。在一个实施例中,在登录时,系统采用连接用户的用户上下文来查询与对计算系统的计算对象的访问有关的数据上下文。 然后,当计算系统接收到对计算对象的访问请求时,对为正被访问的计算对象指定的一个或多个控制表达式进行求值。对控制表达式的求值可以引用用户上下文或先前建立的数据上下文,并且基于该数据上下文来形成有效许可集。如果该许可集包括对该访问请求的适当许可,则授予对计算对象的访问。在另一实施例中,计算机实现的系统包括被配置成响应于用户登录来为对计算系统的数据对象的访问请求查询数据上下文的登录组件,其中数据上下文是基于正被访问的数据对象来检索的。该系统还包括被配置成响应于对数据对象的访问请求动态地对访问控制对象的确定有效许可集的控制表达式进行求值的访问控制组件,这进一步确定了是否授予访问权。在另一实施例中,方法包括经由计算设备的用户界面接收关于应用的应用功能的第一输入,对于该应用的应用功能,要为该应用功能的用户应用基于角色的安全控制。该方法还包括经由用户界面接收关于适用于执行应用功能的数据集的至少一个数据字段的第二输入,并且结合对应用功能的潜在使用,经由用户界面接收关于要从该数据集中提取来建立在登录时适用于给定用户的数据上下文的数据实例的第三输入。此外,该方法包括经由用户界面接收第四输入,该第四输入至少部分地基于第一、第二和第三输入来定义用于与对应用功能的潜在使用有关的动态求值的基于角色的访问控制对象的至少一个控制表达式。
5
以下更详细地描述其他实施例和各非限制性示例、场景和实现。


各非限制性实施例参考附图来进一步描述,附图中图1是采用树来表示数据对象和属性的基于角色的安全系统的说明性示例的框图;图2是可以结合保护图1的数据对象来使用的访问控制对象的说明性示例的框图;图3是图1的说明性示例的框图,其中将员工重新组织到组织的不同部分和相应
结果;图4是基于图3中示出的员工的重新组织对图2的访问控制对象作出的变更的框图;图5是示出基于数据驱动角色的安全的非限制性实施例的系统图;图6是示出根据基于数据驱动角色的安全的一个方面的在用户登录时对数据上下文的检索的框图;图7是示出根据基于数据驱动角色的安全的一个实施例的访问控制对象中的控制表达式的示例求值的框图;图8是示出基于从访问控制对象的控制表达式的求值中导出的访问控制对象的许可集的对访问的授予(或拒绝)的框图;图9是用于定义控制表达式以结合访问控制对象来使用以实现基于数据驱动角色的安全的示例性、非限制性用户界面的框图;图10是根据一个实施例的基于数据驱动角色的安全的示例性、非限制性过程的流程图;图11是根据一个实施例的基于数据驱动角色的安全的另一示例性、非限制性过程的流程图;图12是表示其中可实现此处所描述的各实施例的示例性、非限制性联网环境的框图;以及图13是表示其中可实现此处所描述的各实施例的一个或多个方面的示例性、非限制性计算系统或操作环境的框图。
具体实施例方式概览如在背景技术中所讨论的,基于角色的访问控制允许管理员通过创建被称为角色的对象来按照公司的组织结构指定访问控制。用户被分配角色来执行相关联的职业职责。 角色定义资源集上的授权许可。在RBAC模型中,管理员使用角色来管理许可和分配。例如, 公司可以创建被称为销售经理的角色,该角色具有销售经理为他们的工作所需的许可。在雇用销售经理时,他们被分配销售经理角色并且因此立即具有该职业的许可。当他们离开销售经理的职位时,他们从销售经理角色中被移除并且不再具有销售经理访问权。因为角色允许按照公司的组织模型来授予访问权,所以RBAC是管理员指定访问控制的一种直观的方式。简言之,RBAC将用户角色映射到应用许可,从而使得访问控制管理可以按用户角色来实现。RBAC系统随后将用户的角色成员资格转换成应用许可。因为许可是经由角色来授予的,所以可以经由角色而不必检查特定资源来查询和改变许可。然而,如以上背景技术中所提到的,复杂组织的实际情况是在角色之间存在数据依赖性,从而使得在可能导致对编辑给定资源的许可的授予的一个时刻适用的用户角色在另一时刻可能导致对编辑该给定资源的访问权的拒绝。例如,对于跟踪员工信息的人力资源应用,每一员工进而具有经理,而经理又具有经理,后者进而还有经理,以此类推,该序列在最高层员工,例如,公司的创建者处终止。因此,术语“经理”作为角色具有意义并且该经理角色具有特定许可,但这些许可是针对由该经理管理的人的而不是针对所有员工的。因此,当个体改变公司内的子组织时,许可结构方面的改变多于该个体许可的改变。具体地,该个体的经理的许可结构改变,并且作为该个体调职到不同子组织的结果, 取决于先前由该个体管理的人最终在组织结构中的位置,他们的许可和角色也可能已经改变。因此应该将这些改变传播到ACL,ACL管理组织的人员对各个合适资源的访问权,以确保个体不再对该个体曾经具有访问权的特定的先前资源具有访问权,并且确保该个体对适于分层结构中的新职位的特定新资源具有访问权。如果未作出这些改变,则将得到不正确的许可,甚至更糟的是,系统可能进入可能难以从中恢复的未定义状态。下面提供这些和其他各示例性、非限制性实施例和场景的进一步细节。基于数据驱动角色的访问如所提到的,在基于角色的许可的上下文中,在大量的分层结构重新组织的情况下,底层数据的复杂分层结构可能引入极大的负担,以及作为该重新组织的结果可能受到影响的数据依赖性。更一般地,对于其安全不仅取决于请求许可的个体是谁,还取决于可能频繁变更的其他底层数据的任何应用,个体信息和相关连的ACL的更新对于系统的管理员确保对应用施加正确的许可结构而言可能是一个沉重的负担。作为说明性示例,图1示出跟踪公司的全球员工和员工属性的人力资源应用,如树结构100所表示的。虽然用相对较少数量的员工来示出图1,但可以理解,某些全球最大的公司具有几万或几十万员工,并且因此,该示例是为了概念说明的简明起见,而非旨在弱化由可能导致管理具有内部对象依赖性的大量数据对象的问题所引入的复杂性或负担。如所描绘的,顶层员工具有用户(例如,用户名或ID) 102,接着是向用户102报告的用户104、 106和108。用户104和108进而具有向他们报告的员工(未示出),并且用户106具有向用户106报告的用户110、112和114。在这点上,用户对象拥有可能适用于给定应用,此处作为示例为人力资源应用的特定属性120。例如,属性120可以包括地址信息122(例如,家庭地址)、头衔信息124(例如,产品单元经理)、联系信息126(例如,电话号码或电子邮件地址)或工资/级别信息128。在这点上,这些属性120中的某些可由用户114直接编辑,诸如家庭地址信息122。 然而,某些属性可能是不可编辑的,诸如头衔信息124。某些信息对于全体人员或全体人员的子集可能是公共的,诸如联系信息126。其他信息对除了所选的少数个体之外的全体人员可能是不公开的,诸如工资/级别信息128。例如,情况可能是只有用户114的经理,即用户 106或用户102可以改变与用户114相关连的头衔信息124。
在ACL侧,为实现这些种类的许可,例如,谁可以查看以及谁不可以查看,谁可以授权变更或作出变更以及谁不可以等等,与用户114相关连的ACL将指定什么角色可以编辑头衔、改变工资等等。然而,与在这样的大型组织内的角色有关的问题是角色“经理”对不同的员工具有不同的意义,因为大多数员工具有不同的经理。并且因此,将在ACL中为给定用户对象,诸如用户114对象指定特定经理,S卩,图1中的用户106和102,而用户108尽管在用户114之上但无法改变用户114的头衔信息124,因为用户108不是用户114的经理。为了说明,图2示出与用户114相关联的对象,即,表示用户114和属性120的数据。在这点上,为实现ACL的安全,ACL 130包括角色和这些角色的许可的列表。如所提到的,因为经理角色140本身不是确定给定用户是否具有改变与用户114相关联的头衔信息的许可的足够信息,所以在ACL 130中枚举确实具有许可的经理ID,例如,用户102(例如, 经理IDl 142)和用户106(例如,经理ID2 144)两者都被标识为具有编辑头衔或对用户 114执行其他动作的许可,因为他们是用户114名副其实的经理。ACL 130中未列出的用户 114的任何经理将不能够作为关于用户114的经理进行动作。如所提到的,当用户114(或任何用户)切换到树结构100的不同部分时问题产生了,例如,从公司的一个子组重新组织到另一子组,诸如从一个产品组到另一产品组。员工本身从树结构100的一个部分到另一部分的移动是相对直接的。在这种情况下,一旦移动被授权并如图3所示,管理员将用户114从树结构100的一个部分重新定位到另一部分。然而,树结构100中的这种移动不改变与表示用户114的对象相关联的安全设置。如图4所示,这种重新组织还将伴随与用户114相关联的ACL的手动变更。例如,如果需要更新的许可集,则要改变与经理角色140相关联的、定义哪些经理能够执行与用户114有关的经理角色的经理ID。具体地,用户106不再是用户114的经理并因此用户106将从ACL 130中被删除,并且表示用户104的经理ID3 146被添加到定义谁可以用关于该个体的经理角色来进行动作的经理ID列表。如果这种类型的事件偶尔发生,或者如果树相对较小,则管理开销保持相对较低。 然而,如果树较大或如果移动发生地较频繁,或者如果经由ACL对对象授予的许可集较大且复杂,则管理负担可能是压倒性的。另外,如果管理员无法正确地更新ACL,或在这么做的时候犯了错误,则安全系统在授予许可时可能易于出错,或到达其他依赖性被破坏的不稳定状态或变成循环。因此,在各非限制性实施例中,提供了数据驱动的基于角色的系统。具体地,代替 ACL中的显式ID或除此之外,可以提供基于该用户的当前数据上下文来进行求值的控制表达式,从而极大地简化复杂安全要求的设计,其中单个角色不能被推广用于承担该角色的职责的所有成员。而在过去,系统使用自定义应用代码来处理复杂的安全表达式的求值,这些系统花费时间来设计,并且如果安全要求频繁地改变,则每一次更新自定义应用代码都牵涉到极大的开发和维护成本。如果这些自定义应用代码包含逻辑或编程差错,则可能无意地损害安全或者可能招致系统停机时间。因此,除了应用本身之外,根据底层数据用编程方式驱动安全访问决策的能力是有益的。因此,在各实施例中,提供了用于基于角色的安全的数据驱动机制来实现使用数据本身作为访问控制决策的输入的基于角色的访问控制。在某些合适的应用中,依赖上下文且通常无法用上下文无关的方式被映射到用户列表的概念可被表示为安全角色。现有方法的某些非限制性好处是围绕许可管理的减少的开销和访问控制意图的更直接的表达式。如所提到的,访问控制的常规方法依赖于与数据集分开维护的静态许可授予集, 该许可授予集授权用户、组或角色集来访问特定数据元素。虽然是可推广的,但在受保护数据集的结构足以具备描述性来通知访问控制的情况下,例如,经理可以修改Employee. Salary (员工.工资),如果 User. ID (员工.ID) = Employee. ManagerID (员工.经理 ID), 则能够用公式方式来表达访问控制意图是有用的。作为对比,常规的基于角色的安全过程迫使组织中的每个个体经理被授予修改他们的直接下属的工资的许可。因此,使用根据此处描述的各实施例的数据驱动的机制提供了一种关于在受保护数据集中定义的结构表达访问控制策略的方式。然后,可以将诸如上面的经理定义之类的一次性表达式形的安全角色定义用于访问控制,而不必将用户身份的特定集合指定为经理角色的成员。以下结合依赖数据的角色的实现、依赖数据的角色成员资格确定和依赖数据的许可求值来讨论附加详细内容和示例。在一个实施例中,用于数据安全的数据驱动的机制包括两个部分。第一部分是基于角色的访问控制的一般框架内的一种新的安全角色,它可以被称为派生角色(DROL),因为DROL用来表达不是由用户ID的显式枚举来填充,而是由他们出现在其中的数据上下文的某一方面来定义的角色。第二部分是对访问控制过程的修改,它可以被称为依赖数据的角色访问控制(DRAC)。当用户试图访问数据元素时适用的DRAC具有通过DROL决定的该数据元素上的许可授予。包括这两部分的机制可以单独地实现或者作为普通的基于角色的访问控制系统的扩充来实现。如所提到的,常规的安全角色由名称和/或ID来标识并且具有成员列表。另一方面,对于DR0L,例如如下动态地确定成员资格。DROL具有三个应用定义的参数相关联的实体、成员查询和控制表达式。在一个实施例中,在认证用户并确定了角色成员资格时,首先,捕捉用户认证权标的有用方面,例如,文本用户名和二进制SID以及任何可用的应用级标识信息。接着,针对相关联的实体执行成员查询,该实体提供来自先前步骤的元素作为查询变量。接着,如果查询返回了一实体,则确认角色成员资格并且将所返回的实体保存在用户上下文中作为在DRAC过程中后续使用的角色上下文。使用DRAC过程来评估是否要在运行时兑现通过DROL决定的许可授予。根据DROL 中指定的控制表达式,针对角色上下文来对数据元素或控制上下文进行求值。在一个实施例中,出于这种求值的目的,将控制上下文和角色上下文作为对象类型的变量来对待。如果控制表达式求值为真,则兑现许可授予。如果否,则忽略许可授予。图5是示出将控制表达式包括在ACL 508中用于动态求值的基于数据驱动角色的安全的非限制性实施例的系统框图。在这点上,用户500在510处登录到系统502的应用 504。可以理解,此处描述的DRAC技术可以在系统级以及应用级实现。为了概念说明,此处的描述适用于基于员工的数据的示例,但还可以将类似的技术应用于文件系统的对象,或者需要基于动态角色限制对对象的访问的任何情况。在登录时,登录组件550检索适用于用户500使用应用504的数据上下文520。例如,登录组件可以响应于接收到基于标识用户的用户凭证的登录来查询数据上下文。因此,当用户500做出对数据506的请求时,访问控制组件560相对于数据上下文520动态地对ACL 508的控制表达式进行求值来在540处确定是否可以向给定用户请求授予许可。例如,访问控制组件560可针对数据对象的当前版本动态地对程序表达式进行求值。图6是示出根据基于数据驱动角色的安全的一个方面的在用户登录时对数据上下文的检索的框图。为了在先前结合图1-4讨论的示例的上下文中说明基于数据驱动角色的安全,考虑用户114已经被重新组织到用户104之下而非用户106之下的情况。如所提到的,因为当用户104在树中的位置改变时安全设置不会自动更新,所以根据一个实施例, 当用户104登录到应用时,查询会自动地返回用户104的数据上下文。在这点上,可以将任何属性120作为用户104的数据上下文160的数据的实例来返回。例如,属性120可以包括列出由该个体管理的人的受管ID 150,诸如用户114(或者可以通过检查应用于组织图表的树结构来提取该信息)。在当前示例中,假定系统/应用想要确定用户104的直接下属是谁,因为用户104希望对其中的一个员工的头衔作出变更。作为对最新信息的实时检索的结果,在这种情况下,作为数据上下文160的一部分,通过检查受管ID 150来确定作为重新组织的一部分,用户104将用户114作为直接下属。图7是示出根据基于数据驱动角色的安全的一个实施例的访问控制对象中的控制表达式的示例求值的框图。在这点上,如所提到的,用户114的职位变更不会自动地改变用户104或用户114的相关联的ACL。因此在当前示例中,定义包括DROL的ACL 700,例如经理角色740,它可任选地包括某些显式受管ID 760(例如,明确被枚举为用户104的直接下属的那些人),并且还可包括来自可动态地从根据图6的示例过程检索出的数据上下文中导出的控制表达式的受管ID 770。在相对于数据上下文进行动态求值之后,确定用户 114实际上是用户104的直接下属之一,并因此根据该角色将准许作为经理被准许的任何操作。图8是示出基于从访问控制对象的控制表达式的求值中导出的访问控制对象的许可集的访问的授予(或拒绝)的框图。在这点上,根据图6-7的示例,如果用户104请求对表示用户114的对象的变更800,则基于ACL 700中的控制表达式的动态求值,将授予该请求,假定对象中正被改变的项在经理角色的范围之内。图9是用于定义控制表达式以结合访问控制对象来使用以实现基于数据驱动角色的安全的示例性、非限制性用户界面的框图。由此,所示具有用户界面900的工具只是用于创建用于如上所述地定义动态角色的控制表达式的工具的一个示例,并且不应该被认为是限制性的。例如,经由诸如经理之类的给定角色的简单UI,该工具的用户可以选择给定应用的功能910,例如,编辑、查看、打印、分发等等,并且还可以输入哪些数据字段920适用于该应用功能。例如,在以上示例中,受管ID数据字段将与改变经理角色的能力有关。接着, 还选择当用户登录到应用时要作为数据上下文的一部分的实例来被检索的数据字段940。 基于这些片段,控制表达式输入组件930可以形成控制表达式,例如通过指定当角色条件由数据上下文满足时求值为真的布尔表达式。结果,可输出该控制表达式来由基于数据驱动角色的安全系统在基于角色的访问控制对象中使用,诸如输出以用作具有这些控制表达式 950 的 ACL。图10是根据一个实施例的基于数据驱动角色的安全的示例性、非限制性过程的流程图。在1000处,系统查询与代表用户身份的计算设备对计算系统的计算对象的潜在访问有关的数据上下文。例如,查询可以包括响应于接收到基于标识用户身份的凭证的登录来查询数据上下文。在1010处,计算设备接收访问计算对象的请求。在1020处,基于数据上下文来动态地对管理对计算对象的访问的对象的控制表达式进行求值以形成许可集。求值可包括针对一个或多个计算对象的一个或多个当前版本来对程序表达式进行求值。在 1030处,如果许可集包括对访问请求的许可,则授予对计算对象的访问。图11是根据一个实施例的基于数据驱动角色的安全的另一示例性、非限制性过程的流程图。在1100处,经由计算设备的用户界面接收关于应用的应用功能的输入,对于该应用的应用功能,要为该应用功能的用户应用基于角色的安全控制。在1110处,接收关于适用于执行该应用功能的数据集的数据字段的进一步输入。在1120处,接收关于要从该数据集中提取来建立数据上下文的数据实例的输入,结合对应用功能的潜在使用,该数据上下文在登录时适用于给定用户。在1130处,经由用户界面基于各种输入来接收附加输入,该附加输入定义用于与不同用户对应用功能的潜在使用有关的动态求值的访问控制对象的控制表达式,并结合根据此处描述的一个或多个实施例的数据驱动角色的安全系统来确定它们的许可。示例性联网和分布式环境本领域普通技术人员可以理解,此处所描述的基于数据驱动角色的安全的方法和设备的各实施例和有关的各实施例可以结合任何计算机或其它客户机或服务器设备来实现,该任何计算机或其它客户机或服务器设备可作为计算机网络的一部分来部署或者被部署在分布式计算环境中,并且可以连接到任何种类的数据存储。就此,此处所描述的各实施例可以在具有任意数量的存储器或存储单元以及出现在任意数量的存储单元上的任意数量的应用程序和进程的任何计算机系统和环境中实现。这包括但不限于具有部署在具有远程或本地存储的网络环境或分布式计算环境中的服务器计算机和客户计算机的环境。附图12提供了示例性联网或分布式计算环境的非限制性示意图。该分布式计算环境包括计算对象或设备1210、1212等以及计算对象或设备1220、1222、12M、1226、12 等,这些计算对象或设备可包括如由应用1230、1232、1234、1236、1238表示的程序、方法、 数据存储、可编程逻辑等。可以理解,计算对象或设备1210、1212等以及计算对象或设备 1220、1222、1224、1226、1228等可包括不同的设备,诸如PDA、音频/视频设备、移动电话、 MP3播放器、膝上型计算机等。计算对象或设备1210、1212等以及计算对象或设备1220、1222、1224、1226,1228 等可经由通信网络1240或直接或间接地与一个或多个其他计算对象或设备1210、1212等以及计算对象或设备1220、1222、12M、1226、12 等通信。即使在附图12中被示为单个元件,但网络1240可包括向附图12的系统提供服务的其他计算对象或解释设备,和/或可表示未示出的多个互连网络。计算对象或设备1210、1212等或计算对象或设备1220、1222、 1224U226U228等还可以含有应用,诸如可以利用API或其他对象、软件、固件和/或硬件的、适于实现或与根据各实施例所提供的基于数据驱动角色的安全进行通信的应用1230、 1232、1234、1236、1238。存在支持分布式计算环境的各种系统、组件和网络配置。例如,计算系统可以由有线或无线系统、本地网络或广泛分布的网络连接在一起。当前,许多网络被耦合至因特网, 后者为广泛分布的计算提供了基础结构并包含许多不同的网络,但任何网络基础结构可用于变得与如各实施例中所描述的技术相关联的示例性通信。因此,可以利用诸如客户机/服务器、对等、或混合体系结构等网络拓扑结构和网络基础结构的主机。在客户机/服务器体系结构中,尤其在联网系统中,客户机通常是访问由例如服务器等另一计算机提供的共享的网络资源的计算机。在图12的图示中,作为非限制性示例,计算对象或设备1220、1222、1224、1226,1228等可被认为是客户机而计算对象或设备1210、1212等可被认为是服务器,其中服务器提供数据服务,诸如从诸如计算对象或设备1220、1222、12对、1226、12观等客户机接收数据、存储数据、处理数据、向诸如计算对象或设备1220、1222、12M、1226、12 等客户机发送数据等,但任何计算机都可取决于环境而被认为是客户机、服务器或两者。这些计算设备中的任一个可以处理数据,或请求可指示如此处参考一个或多个实施例描述的基于数据驱动角色的安全和有关技术的服务或任务。服务器通常是可通过诸如因特网或无线网络基础架构等远程网络或本地网络访问的远程计算机系统。客户机进程可以在第一计算机系统中活动,而服务器进程可以在第二计算机系统中活动,它们通过通信介质彼此通信,从而提供分布式功能并允许多个客户机利用服务器的信息收集能力。按照用户简档来利用的任何软件对象可以单独提供或跨多个计算设备或对象分布。例如,在其中通信网络/总线1240是因特网的网络环境中,计算对象或设备1210、 1212等可以是诸如计算对象或设备1220、1222、1224、1226,1228等经由诸如HTTP等多种已知协议中的任一种与其通信的web服务器。诸如计算对象或设备1210、1212等的服务器还可用作诸如计算对象或设备1220、1222、12M、1226、12 等的客户机,这可以是如分布式计算环境的特性。示例性计算设备如所提到的,此处描述的各实施例适用于其中可能需要实现基于一段或多段数据驱动角色的安全的任何设备。因此,应当理解,构想了结合此处描述的各实施例使用的所有种类的手持式、便携式和其它计算设备和计算对象,即,在设备可以结合基于数据驱动角色的安全提供某些功能的任何地方。因此,在下面的图13中描述的以下通用远程计算机仅是一个示例,且所公开的主题的各实施例可用具有网络/总线互操作性和交互的任何客户机来实现。尽管并不是必需的,但各实施例的任意一个可以部分地经由操作系统来实现,以供设备或对象的服务开发者使用,和/或被包括在结合可操作组件来操作的应用软件中。 软件可以在由诸如客户机工作站、服务器或其它设备等一个或多个计算机执行的诸如程序模块等计算机可执行指令的通用上下文中描述。本领域的技术人员可以理解,网络交互可以用各种计算机系统配置和协议来实施。因此,图13示出了其中可实现一个或多个实施例的合适的计算系统环境1300的一个示例,尽管如上所述,计算系统环境1300仅为合适的计算环境的一个示例,并非旨在对各实施例中的任意一个的使用范围或功能提出任何限制。也不应该将计算环境1300解释为对示例性操作环境1300中示出的任一组件或其组合有任何依赖性或要求。参考图13,用于实现此处的一个或多个实施例的示例性远程设备可以包括手持式计算机1310形式的通用计算设备。手持式计算机1310的组件可以包括但不限于处理单元1320、系统存储器1330和将包括系统存储器在内的各种系统组件耦合至处理单元1320 的系统总线1321。
计算机1310通常包括各种计算机可读介质,例如但不限于,数字多功能盘(DVD)、 闪存、内部或外部硬盘、紧致盘(CD)等等,并且可以是可由计算机1310访问的任何可用介质,包括远程驱动器、云存储盘等。系统存储器1330可以包括诸如只读存储器(ROM)和/ 或随机存取存储器(RAM)等易失性和/或非易失性存储器形式的计算机存储介质。作为示例而非限制,存储器1330还可以包括操作系统、应用程序、其他程序模块、和程序数据。用户可以通过输入设备1340向计算机1310输入命令和信息。监视器或其他类型的显示设备也经由接口,诸如输出接口 1350连接至系统总线1321。除监视器之外,计算机还可以包括其他外围输出设备,如扬声器和打印机,它们可以通过输出接口 1350连接。计算机1310可使用至一个或多个远程计算机,诸如远程计算机1370的逻辑连接在网络化或分布式环境中操作。远程计算机1370可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点、或任何其他远程媒体消费或传输设备,并且可以包括上面关于计算机1310所描述的任何或全部元件。附图13所示的逻辑连接包括诸如局域网 (LAN)或广域网(WAN)等的网络1371,但也可以包括其他网络/总线。这样的联网环境在家庭、办公室、企业范围计算机网络、内联网和因特网中是常见的。如上所述,虽然结合各计算设备、网络和广告体系结构描述了示例性实施例,但还可将底层概念应用于其中想要结合与云或网络服务的交互来发布、构建应用或消费数据的任何网络系统和任何计算设备或系统。有多种实现此处描述的一个或多个实施例的方式,例如,使应用和服务能使用基于数据驱动角色的安全的适当的API、工具包、驱动程序代码、操作系统、控件、独立或可下载的软件对象等等。可以从API (或其他软件对象)的观点以及从便于提供根据所描述的实施例中的一个或多个的基于数据驱动角色的安全的软件或硬件对象来构想各实施例。此处描述的各种实现和实施例可以具有完全采用硬件、部分采用硬件并且部分采用软件、以及采用软件的方面。在本文中使用的词语“示例性”意味着用作示例、实例或说明。为避免疑惑,本文公开的主题不受限于这样的示例。此外,本文描述为“示例性”的任何方面或设计不必解释成优于其他方面或设计或比其他方面或设计有利,它也不旨在排除本领域的普通技术人员所知的等效示例性结构和技术。而且,就术语“包括”、“具有”、“包含”和其他类似的词语在详细描述或权利要求书中的使用而言,为避免疑惑,这样的术语旨在以类似于术语“包括”作为开放的过渡词的方式解释而不排除任何附加或其他元素。如上所述,此处所述的各种技术可结合硬件或软件,或在适当时以两者的组合来实现。如在此所使用的,术语“组件”、“系统”等同样指的是计算机相关实体,或者是硬件、 硬件和软件的组合、软件或执行中的软件。例如,组件可以是,但不限于是,在处理器上运行的进程、处理器、对象、可执行码、执行的线程、程序和/或计算机。作为说明,运行在计算机上的应用程序和计算机本身都可以是计算机组件。一个或多个组件可以驻留在进程和/或执行的线程中,并且组件可以位于一个计算机内和/或分布在两个或更多的计算机之间。已经关于若干组件之间的交互描述了前述系统。应该理解,这样的系统和组件可以包括根据前述的各种置换和组合的那些组件或指定的子组件、指定的组件或子组件中的某一些、和/或另外的组件。子组件也可以被实现为通信耦合至其他组件而非被包括在父组件(分层)内的组件。另外,应注意到一个或多个组件可被组合成提供聚集功能的单个组件,或被分成若干单独的子组件,且诸如管理层等任何一个或多个中间层可被设置成通信耦合到这样的子组件以便提供集成功能。此处描述的任何组件也可以与在此未具体描述但本领域的技术人员公知的一个或多个其他组件交互。考虑到以上描述的示例性系统,参考各附图的流程图将可以更好地理解依照所公开的主题实现的方法。尽管为了简洁起见,作为一系列框示出和描述了方法,但是,应该理解,所要求保护的主题不仅限于所描述的框的顺序,一些框可以按与此处所描绘和描述的不同的顺序进行和/或与其他框并发地进行。尽管经由流程图示出了非顺序或分支的流程,但可以理解,可实现达成相同或类似结果的各种其他分支、流程路径和框次序。此外,并非所有的所示出的方框都是实现下面所描述的方法所必需的。虽然在某些实施例中,说明了客户机侧观点,但要出于避免存在相对应的服务器观点的疑问来理解,反之亦然。类似地,在实施方法的地方,可以提供具有存储和被配置成经由一个或多个组件实施该方法的至少一个处理器的相对应的设备。尽管结合各附图的优选实施例描述了各实施例,但可以理解,可以使用其他类似的实施例,或可以对所描述的实施例进行修改和添加来执行相同的功能而不背离本发明。 而且,此处描述的各实施例的一个或多个方面可以在多个处理芯片或设备中实现或跨多个处理芯片或设备实现,且存储可以类似地跨多个设备来实现。因此,本发明不应限于任何单个实施例,而是应该根据所附权利要求书的广度和范围来解释。
权利要求
1.一种方法,包括查询(1000)与代表用户身份的至少一个计算设备对计算系统的一个或多个计算对象的潜在访问有关的数据上下文;所述至少一个计算设备接收(1010)对所述一个或多个计算对象中的至少一个计算对象的访问请求;基于所述数据上下文来对管理对所述至少一个计算对象的访问的对象的控制表达式进行求值(1020)以形成许可集;以及如果所述许可集包括对所述访问请求的许可,则授予(1030)对所述至少一个计算对象的访问。
2.如权利要求1所述的方法,其特征在于,所述求值(1020)包括针对所述计算系统的所述一个或多个计算对象的一个或多个当前版本来对程序表达式进行求值。
3.如权利要求1所述的方法,其特征在于,还包括如果所述许可集不包括对所述访问请求的许可,则拒绝对所述至少一个计算对象的访问。
4.如权利要求1所述的方法,其特征在于,所述求值(1020)包括基于所述数据上下文来对管理对所述至少一个计算对象的访问的访问控制列表的控制表达式进行求值。
5.如权利要求4所述的方法,其特征在于,所述求值(1020)包括对所述控制表达式进行求值来形成许可列表。
6.如权利要求1所述的方法,其特征在于,所述求值(1020)还包括对管理对所述至少一个计算对象的访问的对象中所包括的静态许可集进行求值。
7.如权利要求1所述的方法,其特征在于,所述查询(1000)包括响应于接收到对所述至少一个计算对象的附加访问请求来查询更新的数据上下文。
8.如权利要求1所述的方法,其特征在于,还包括从用户界面接收管理对所述至少一个计算对象的访问的对象的控制表达式的定义,所述定义表达了访问控制和所述计算系统的所述一个或多个计算对象之间的关系。
9.一种计算机实现的系统,包括被配置成响应于用户登录来查询对计算系统的数据对象的访问请求的数据上下文的登录组件(550),所述数据上下文是基于所述数据对象来被检索的;访问控制组件(560),所述访问控制组件(560)被配置成响应于对所述数据对象中的至少一个数据对象的访问请求来动态地对控制是否授予访问的访问控制对象的至少一个控制表达式进行求值以确定许可集,并且被配置成基于所述许可集来授予许可。
10.如权利要求9所述的系统,其特征在于,所述访问控制组件(560)被配置成针对所述数据对象的当前版本动态地对程序表达式进行求值。
11.如权利要求9所述的系统,其特征在于,所述访问控制组件(560)还被配置成如果所述许可集不包括对所述访问请求的许可,则拒绝对所述至少一个数据对象的访问。
12.如权利要求9所述的系统,其特征在于,所述访问控制组件(560)被配置成对管理对所述至少一个数据对象的访问的对象中所包括的静态许可集进行求值。
13.如权利要求9所述的系统,其特征在于,所述登录组件(550)被配置成响应于接收到基于标识用户的用户凭证的登录来查询所述数据上下文。
14.如权利要求9所述的系统,其特征在于,所述登录组件(550)被配置成响应于接收到对所述至少一个数据对象的附加访问请求来查询更新的数据上下文。
15.如权利要求9所述的系统,其特征在于,所述登录组件(550)被配置成查询与对表示企业员工的数据对象的访问有关的数据上下文。
全文摘要
提供了基于数据驱动角色的安全。在登录时,系统查询与对计算系统的计算对象的访问有关的数据上下文。当计算系统接收到对计算对象的访问请求时,对为正被访问的计算对象指定的一个或多个控制表达式进行求值。对控制表达式的求值可以引用用户上下文或先前建立的数据上下文,并返回有效许可集。如果该许可集包括对该访问请求的适当许可,则授予对该计算对象的访问。
文档编号G06F21/22GK102236763SQ201110122748
公开日2011年11月9日 申请日期2011年5月4日 优先权日2010年5月5日
发明者J·A·巴罗斯, S·伊万诺夫 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1