为计算过程授予最小特权访问的制作方法

文档序号:6594085阅读:167来源:国知局
专利名称:为计算过程授予最小特权访问的制作方法
为计算过程授予最小特权访问背景设备可被配置成具有控制对资源、应用程序等等的访问的安全基础结构。当前在 移动设备上,基于代码标识,向单个应用程序指派信任。安全基础结构确定什么应用程序可 以在设备上运行,什么应用程序可以被锁定,什么应用程序可以在什么上下文中运行,以及 这样的应用程序可以访问什么资源。当前信任级别包括对于未经签名模块的“受信任”、“普 通”,以及“不受信任”。可以利用受信任的证书或链接到受信任证书存储的证书来对应用程 序或模块进行签名。在此情况下,该模块被视为受信任的,且如此,该模块中的任何代码都 具有对系统上的全部特权API和资源的权限。信任决定基于调用者的应用程序信任级别。然而,上文所提及的当前安全模型存在多个问题。当线程跨系统中的多个受保护 的服务器库(PSL)服务器迁移时,调用链中的立即调用进程具有访问系统资源的许可是可 能的,但是,对整个调用链上下文的检查可能揭示资源不应该是可被访问的。如果安全决 定始终只基于立即调用者的上下文,则这样的安全无法实施。同样,当前安全模型不允许模 仿其中低特权应用程序调用系统服务的不同身份,其中,系统服务被要求基于调用者的上 下文或者其自己的上下文来处理请求。更进一步地,对于异步访问请求,当前安全模型不提 供在其中调用者上下文可能不是完全可用的辅助线程中进行安全检查。正是基于这些及其他考虑才作出了本发明。

发明内容
提供本发明内容是为了以精简的形式介绍将在以下具体实施方式
中进一步描述 的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不 旨在用于帮助确定所要求保护的主题的范围。提供了通过考虑当前线程的身份以及当前线程的调用链上下文来作出安全决定, 以默认地启用最小特权的各实施例。捕捉当前线程上下文,并创建其副本,以供用来异步地 执行安全检查。系统中的每一线程都具有相关联的身份。最初,从父进程导出此身份。然 而,在线程生存期内,此标识可能基于线程的任何模仿而变化。通过阅读下面的“具体实施方式
”并参考相关联的图形,这些及其他特点和优点将 变得显而易见。应该理解,前面的一般性的说明和下面的详细描述只是说明性的,不会对如 权利要求所述的本发明形成限制。附图简述

图1示出了根据本发明的一个实施例的安全标识符(SID) 100 ;图2示出了根据本发明的一个实施例的安全令牌结构200的布局;图3示出了根据本发明的一个实施例的安全描述符布局300的简化视图;图4示出了根据本发明的一个实施例的访问控制列表(ACL)400 ;图5示出了根据本发明的一个实施例的访问控制条目(ACE)500的结构;图6示出了根据本发明的一个实施例的安全描述符(SD)600的结构布局;图7示出了根据本发明的一个实施例的线程700的令牌列表布局;
图8示出了根据本发明的一个实施例的PSL调用800中的线程的调用堆栈列表;图9是示出了根据本发明的一个实施例的线程900的模仿列表和调用堆栈列表之 间的链接的框图;图10示出了根据本发明的一个实施例的消息队列系统1000 ;图11示出了其中可以实现本发明的各实施例的计算环境。
具体实施例方式各实施例提供一安全基础结构,该安全基础结构可以被配置成在现有操作系统上 运行以控制什么资源可以被应用程序访问,以及应用程序可以调用什么API。通过考虑当前 线程的身份以及当前线程的调用链上下文来作出安全决定,以默认地启用最小特权。捕捉 当前线程上下文,并创建其副本,以用于异步地执行安全检查。系统中的每一线程都具有相 关联的身份。最初,从父进程导出此身份,但是,在线程生存期内,此身份可能基于线程执行 的任何模仿而变化。各实施例不仅分析什么调用或应用程序正在请求什么,而且还分析调用来自哪 里。各实施例还可以为系统提供开放的安全基础结构,如此,最终用户或最终操作员可以安 装可能不处于他们自己的控制之下的不同应用程序。如此,系统中的所有线程都可以默认 地以最小的特权运行,以基于线程被从线程没有权限访问的资源不正确地访问来防止安全 问题发生。相反地,分析对特定资源的访问、当前线程上的所有调用者,以确保每一调用者 和线程可以访问该资源。只有在每一调用者和线程都可以访问该资源的情况下才给予调用 者对该资源的访问。本发明的各实施例可以使用提供安全基础结构的数据结构来实现,该安全基础结 构用于控制哪些资源可以被应用程序访问以及应用程序可以调用什么API。该数据结构包 括下列元素安全标识符(SID)、安全令牌、安全描述符(SD)、访问控制列表(ACL),以及访 问控制条目(ACE)。图1示出了根据本发明的一个实施例的安全标识符(SID) 100。SID 100是一可变 长度数据结构110,其在系统内定义唯一 ID,并指定特定线程正在在什么帐户上运行。SID 100也可以被视为看起来象一用户帐户。例如,当某人登录到计算机上时,可以使用适当的 登录口令来访问各种用户帐户。用户帐户标识登录到计算机的人。SID 100只是标识线程 或过程的帐户。SID 100只在特定设备内是唯一的。然而,本领域技术人员将在分析此处对 本发明的各实施例的描述之后认识到,可以使用全局安全标识符。在台式机上,可以向单个用户帐户、某些系统帐户、以及某些用户组指派SID 100。 注意,例如,WINDOWS CE操作系统中的帐户不一定与关于台式机WINDOWS 操作 系统中所使用的有相同的定义。尽管如此,本领域的技术人员将理解什么构成帐户。此处, 假设SID 100为映射到帐户数据库中的条目的跨整个操作系统——例如WINDOWS CE 操作系统——的唯一标识符。帐户数据库中的条目指定向特定帐户指派什么基本和扩展特 权(也叫做SID)。图2示出了根据本发明的一个实施例的安全令牌结构200的布局。使用安全令牌 200来定义一组身份和指派给那些身份的特权集合。通常,安全令牌200与诸如进程、线程、 同步之类的运行时对象相关联,并与消息队列中的单个消息相关联。安全令牌200包括用于标识结构的版本202、标记204、偏移量206,立即组207的数量和组ID的总数208的字 段。安全令牌200的结构还可以存储主要拥有者SID 210、组SID 212、基本特权214和扩 展特权216。主要210和组212SID定义与具有此安全令牌200的对象相关联的身份。基本214 和扩展216特权定义对于与此安全令牌200相关联的对象允许什么特权。基本特权214是 对安全令牌200中指定的身份有效的一组特权。类似地,扩展特权216是为安全令牌200 中的SID列表定义的自定义特权。基本安全令牌结构200具有指向安全令牌200的扩展(可选)数据的偏移量指针 206,如与此安全令牌200相关联的主要210和组212SID,以及与此安全令牌200相关联的 扩展特权216。安全令牌200中的每一单个SID 210,212用于AccessCheck API(访问检 查)调用中,以确定给定安全令牌200是否具有对已指定了其SD的对象的所需访问权。同 样,安全令牌200中的基本[[212]] 214和扩展[[214] ] 216特权用于I^rivilegeCheck API 调用中,以确定给定安全令牌200是否具有所需的特权。将参考对此处所描述的令牌API 的讨论来比较详细地讨论API和安全令牌200的使用。创建帐户的字符串表示,并将该字符串表示映射到用于安全令牌结构200中的双 字。然后,安全令牌200是与系统中的读取线程相关联的对象。因此,每一线程都以特定安 全令牌200为开始。安全令牌200包括具有身份列表的基本令牌结构220,这些身份表明此 特定线程属于带有特定帐户ID的特定腔室(chamber),还表明该线程是某些组的成员。每 一安全令牌200通过设置来表示。如此,安全令牌结构包括结构和多个设置。第一设置是 拥有者设置。这意味着,唯一 ID被给予系统中的每一腔室或系统中的每一帐户。然后,可 以有零个或多个组成员资格,组帐户ID。这些都在扩展令牌数据222中给出。台式机的安全令牌结构是类似的。例如,可以有为重置台式机而定义的特权或为 安装驱动程序而定义的特权。如此,如果一特定调用者具有特定特权设置,那么,只有该调 用者才可以进行该API调用,且只有该调用者才可以重置设备或安装驱动程序。这些是特 定特权。基本特权可以只是一个双字,由此它连接到基本特权[[212]]214,于是,可以有任 意数量的扩展特权[[214]] 216,它们是扩展令牌数据222的一部分。可以有许多特权214,216,但是,特权214,216工作的方式与对于资源进行访问检 查的方式完全相同。如此,如果特定API要求特定特权或要求特定调用者具有特定特权,那 么,联系链中的每一调用者都必须具有该特定特权。只有在所有调用者序都具有该特权的 情况下才允许调用经过。每一令牌都应该具有至少与基本令牌结构220同样多的信息。扩展令牌结构222是可选设置。如此,作为示例,帐户可以是一个或多个组的成 员。因此,它具有可变大小,即,大小不是固定的,而基本令牌结构大小是固定的。安全令牌 200与每一进程相关联,于是,进程中的每一线程都在开始时接收或复制该安全令牌200。 随着安全令牌200迁移到不同服务器,安全令牌200可以改变。迁移的安全令牌200与服 务器的安全令牌相交。实际数据结构不会改变。图3示出了根据本发明的一个实施例的安全描述符布局300的简化视图。安全描 述符300是用于将许可与资源相关联的数据结构。对于特定资源,安全描述符300定义什 么帐户具有对该资源的什么访问权限,并定义涉及该特定对象的所有规则。通常,对象的安 全描述符300定义拥有者SID 320、组SID 330,以及相关联的ACL 3400
由于所有这些都是可选条目,因此,SD 300被定义为具有在结构的末尾列出的拥 有者SID 320 JiSID 330,以及ACL 340的可变大小结构。在SD结构300中提供了版本字 段310和标记字段312,以指定什么值被包括在SD 300中。还提供了字段314,用于定义SD 结构300的总大小。安全令牌(S卩,在图2中,200)和安全描述符300之间的关系确定对访问权限的控 制。当一线程访问资源时(例如,创建照片,创建文件,例如,/Vind0WS/myph0t0S/),[[。]] [[该]],该调用最终进入服务器,且服务器确定调用者是否具有访问此资源的权限。服务 器构建定义从该调用访问资源的权限的安全描述符300。因此,一旦服务器具有标识谁可以 访问此资源的安全描述符300,则,服务器就查看调用者的安全令牌(S卩,在图2中,200),并 确定调用者的身份。然后,服务器试图确定在安全描述符中所定义的身份是否位于ACE中 的一个里。如果在安全描述符中所定义的身份位于ACE中的一个里,则服务器确定对于该 身份有什么访问权限。如果该身份的访问被拒绝,那么,该调用被拒绝。如果该身份的访问 权限是读取,那么,只为此调用者给予读取权限。因此,必须使用安全令牌来标识调用和接收该调用的特定资源之间的交集,并且 必须确定该身份在安全描述符300中具有什么权限。在一个操作系统内,可以提供很多个 帐户ID。开始在进程内运行的每一线程都将继承具有该进程的帐户ID的令牌。随着线程 对服务的不同域进行调用,令牌被更新。图4示出了根据本发明的一个实施例的访问控制列表(ACL)400。ACL 400是访问 控制条目(ACE)集合,其中包括ACE头部420,422,以及与ACE相关联的SID430,432。ACE 标识为给定SID定义了什么访问权限。在图4中,ACL 400包括修订版字段402、未使用的 字段404,定义结构406的总大小的字段,定义ACL 408结尾处的ACE的数量的字段和第二 未使用的字段410。由于ACE的数量未预先定义,因此,ACL 400是可变长度结构。每一 ACE都指定帐户ID以及该帐户ID对该对象具有什么权限。例如,一个特定 ACE可以帐户ID获得,其中,权限是对于该特定对象进行只读。另一特定ACE可以是帐户 ID管理员访问读/写,其提供所有不同ACE的集合,且这些ACE中的每一个为特定帐户定义 为此资源指定了什么权限。在台式机上,ACE为每一个条目提供不同访问权限。不同访问权限包括允许、拒绝, 以及审核。在WINDOWS CE操作系统中,对于给定ACE授予权限。当在ACL中没有带有 所需访问屏蔽的ACE时,默认返回是“拒绝”。图5示出了根据本发明的一个实施例的访问控制条目(ACE)500的结构。每一 ACE 500都定义什么类型的权限被此ACE 510允许以及允许给哪一个身份(由SID给出)520。 由于SID 520是可变长数据项,因此,ACE 500也是可变长度结构。与ACE 500相关联的SID 数据520在ACE结构500的末尾处开始。ACE 500还包括标记530的字段、用于标识结构 532的总大小的字段和屏蔽字段534。图6示出了根据本发明的一个实施例的安全描述符(SD)600的结构布局。安全 描述符(SD)600包括头部610。SD头部610标识SD 600的版本、标记和大小。接下来,SD 600包括拥有者安全标识符(SID)620和组安全标识符(SID)630。其余的数据构成访问控 制列表(ACL) 640。ACL 640包括ACL头部642和一个或多个访问控制条目(ACE) 650。ACL 头部642标识ACE 650的版本、大小和数量。每一 ACE 650都包括ACE头部652和相关联的安全标识符(SID)肪4。根据本发明的一个实施例的安全基础结构是当创建进程或线程时通过安全描述 符、安全标识符、访问控制列表和访问控制条目来提供的。例如,进程令牌是不可改变的,是 在创建进程时指派的。默认地,如果没有提供安全性,则所有进程都被平等地对待(对于令 牌特权),且向进程指派预先定义的系统令牌。这是未启用安全性的系统上的默认行为。在 这样的系统中,信任边界是用户模式和内核模式之间的过渡点。进程令牌可以潜在地是多个数据点的组合,诸如·将映射到帐户数据库中的ID的Exe证据(路径、散列、证书)。·帐户数据库中的给定帐户的基本特权·帐户数据库中的给定帐户的扩展特权·基于调用者令牌的组ID的列表作为给定可执行程序的证据的第一信息段是由安全加载器组件确定的,且超出了 本文档的范围。出于此特征的目的,假设证据映射到帐户数据库中的ID。由此,OS将从帐 户数据库中的帐户信息创建令牌。当创建进程时,此令牌与进程对象相关联,并在进程的生 存期内保持不变。当创建线程时,创建线程令牌,并将其与线程对象相关联。默认地,线程令牌与同 线程的拥有者进程相关联的令牌相同。进程令牌和线程令牌之间的主要区别是,线程令牌 可以在线程的生存期内变化,而进程令牌在进程的生存期内保持不变。例如,线程令牌可以 在下列情况下变化·对樽仿给定令牌的调用这将把调用线稈的活动令牌改变为传入调用以进行模 仿的安全令牌。·对还原先前樽仿的调用这将把线稈令牌更新为樽仿调用之前的令牌。·对樽仿当前讲稈的调用这将把当前线稈令牌更新为当前活动讲稈的令牌。 线程从API调用返回在API调用返回时,内核将自动地删除与线程从其返回的 PSL上下文相关联的所有线程令牌。在此情况下,与线程相关联的当前令牌也被更新到API 调用之前的令牌。图7示出了根据本发明的一个实施例的线程700的令牌列表布局。为管理给定线 程的多个令牌,提供了令牌列表700。令牌列表700是与线程相关联的所有令牌的链接列 表。线程的当前活动令牌710始终是在令牌列表700的前头的令牌节点。换言之,令牌列 表700的行为就象LIFO(后进先出)队列(也叫做堆栈)一样,其中,列表中最后添加的令 牌是线程的当前令牌。对当前线程的所有访问和特权检查是只使用该特定令牌和该线程的 当前上下文来处理的。此外,当线程从API调用返回时,内核自动地删除由关于受保护的服 务器库(PSL)712的上下文中的模仿调用来添加到此列表的任何令牌节点。此自动还原防 止了 API调用上的任何特权泄漏。在操作系统中,例如,在WINDOWS CE中,线程可以通过过渡到处理相对应的 API调用的服务器进程来进行API调用。由于每一线程都具有相关联的令牌——该令牌带 有为该令牌定义的一组身份/特权,API服务器需要考虑该线程的当前特权来决定在当前 线程上是否允许API调用。API服务器可以用来完成API调用的可能的令牌有两个 调用者的令牌在此情况下,API服务器调用CeAccessCheck(GetCurrentToken(),...)(Ce访问检查(获得当前令牌(),...)。如果API调用是从高特权腔室到低特权腔 室,则这种情况将是潜在的安全风险。实际上,没有高或低特权的概念。然而,出于此讨论 的目的,假设高特权腔室具有低特权腔室的所有特权以及某些附加特权。·当前讲稈令牌在此情况下,API服务器调用CeAccessCheck(ImpersonateCurre ntProcessO,. . .)(Ce访问检查(模仿当前进程(),...),其中,当前线程的令牌被更新到 当前进程(API服务器的令牌)。如果API调用是从低特权腔室到高特权腔室,则这种情况 将是潜在的安全风险。每一线程开始时都以拥有者进程令牌720为开始。因此,在图7的底部列出了拥 有者进程令牌720,图7示出了线程700的令牌布局。线程可以从不同的调用者或从消息队 列异步地接收令牌。然后,此时线程希望基于该令牌访问资源。线程不希望使用进程令牌, 而是希望改变其身份。如此,线程可以调用和模仿API中的一个,这将令牌推到令牌列表的 顶部。因此,每当线程调用和模仿令牌时,该令牌变为列表的顶部。在图7中,所模仿的令 牌730被示为在拥有者进程令牌720的上面。在图7中,示出了一连串N个所模仿的令牌 730-750。对照顶部令牌750,S卩,在当前令牌710内,检查线程访问的任何资源。每当调用 模仿时,模仿令牌750始终与拥有者进程令牌720相交。如此,每当线程访问资源时,拥有 者进程令牌720必须在该资源上展现访问权限,且刚刚模仿的令牌750也必须具有对该资 源的访问权限。以此方式,线程可以在它过渡到不同服务器时对不同服务器进行API调用。 此外,如果在联系链上有任何服务器,则所有服务器都必须具有对该资源的访问权限。如果验证了所有三个检查,则允许对线程的访问。重要的是,此进程不同于提供单 个特权。例如,如果动作只基于当前令牌750,并且如果当前令牌750碰巧具有较高的特权, 那么,这将是特权的提升。相反,如果动作只基于调用者的令牌720,那么它已经从高特权服 务器迁移到低特权服务器。如此,在这两种情况下,当由于可能的特权提升而只使用单个特 权时,会产生安全风险。一旦完成API调用,并返回API调用,就利用在服务器中执行的任何模仿还原令 牌,以防止任何特权迭代的泄漏。如此,当API调用返回时,即使服务器忘记还原它模仿的 令牌,服务器也自动地还原。以此方式,当API调用返回该令牌时,客户机也将始终还原到 它在API调用之前的任何模样。正如您可以看到的,如果我们只使用调用者的线程令牌或只使用当前进程线程令 牌,则会有安全问题。为解决此问题,我们建议,当检查给定线程对于一个资源的访问时,要 考虑下列各项·与线程的当前令牌相关联的所有身份都应该具有对资源的访问权限。·与当前线程调用堆栈(直到模仿边界)中的所有腔室相关联的所有身份都应该 具有对资源的访问权限。·与为该线程保存的上下文相关联的所有身份都应该具有对资源的访问权限。此 检查主要是在代表除调用线程以外的不同线程中的调用者执行访问检查时使用。此改变将影响如何对于给定线程和对象检查访问权限/特权。为使代码获得对任 何对象的访问,线程的当前令牌750和API服务器的令牌(即,拥有者进程/线程令牌720) 两者都应该具有对该对象的访问。为使代码获得任何特权,线程的当前令牌750和API服
权利要求
1.一种包括可执行指令的计算机可读介质,当执行所述可执行指令时,提供用于控制 相关联的主体对资源的访问的安全基础结构,通过提供用于为相关联的主体定义唯一标识符并用于指定与所述相关联的主体相关联的 帐户的安全标识符100 ;将所述唯一标识符映射到帐户数据库中的条目,以便确定指派给所述安全标识符100 的基本214和扩展216特权;随着所述相关联的主体的迁移,累积相关联的主体的标识210,212 ; 创建用于基于所述对指派给所述安全标识符100的基本214和扩展216特权的确定, 来定义一组身份210,212和指派给所述一组身份的特权集合的安全令牌200 ;以及通过对所述相关联的主体的所有所述累积的身份210,212和所述特权214,216的集合 求交集来确定所述相关联的主体的访问特权。
2.如权利要求1所述的计算机可读介质,其特征在于,所述相关联的主体包括进程或 进程的线程。
3.如权利要求1所述的计算机可读介质,其特征在于,所述确定所述相关联的主体的 访问特权214,216还包括捕捉所述当前相关联的主体的调用链上下文以及分析所述当前 相关联的主体,以在赋予对所述资源的访问之前验证所述调用链中的每一累积的身份210, 212和每一相关联的主体都具有对所请求资源的访问,由此默认地启用最小特权。
4.如权利要求1所述的计算机可读介质,其特征在于,所述安全令牌200和所述安全描 述符300之间的关系确定对由相关联的主体对所请求资源的访问权限的控制。
5.如权利要求1所述的计算机可读介质,其特征在于,所述确定访问特权214,216使 用安全令牌200中的每一安全标识符100来确定安全令牌是否请求访问由安全描述符300 所指定的资源,仅当在所述联系链中的每一调用者都具有准许访问所请求资源的特权时才 准许对所述所请求资源的访问。
6.如权利要求1所述的计算机可读介质,其特征在于,还包括 构建定义对所述资源的访问权限的安全描述符300 ;根据所述安全令牌200标识所述相关联的主体;确定所述安全描述符300中定义的所述身份320,330是否被包括在所述安全描述符中 的访问控制条目500中;基于所述访问控制条目来确定对所述身份可用的访问权限;以及 根据所述确定的访问权限来向给所述身份320,330赋予访问权限。
7.如权利要求1所述的计算机可读介质,其特征在于,还包括在安全令牌列表700中维 护与相关联的主体有关的所有令牌200的列表,其中,当前活动令牌710始终在所述安全令 牌列表的前头,对所述当前相关联的主体的所有访问和特权检查是使用所述当前活动安全 令牌710和所述相关联的主体的当前上下文,通过将相关联的主体请求访问的资源与位于 所述安全令牌列表700的所述前头的当前活动安全令牌进行比较来处理的。
8.如权利要求1所述的计算机可读介质,其特征在于,还包括在客户机1020侧,在消息 队列中写入相关联的主体的安全上下文,在服务器1030侧,从所述消息队列中异步地检索 所述相关联的主体的所述安全上下文,通过复制要模仿的所述相关联的主体的所述检索到 的安全上下文来模仿所述相关联的主体。
9.如权利要求1所述的计算机可读介质,其特征在于,还包括当与相关联的主体的当 前安全令牌710相关联的所有身份210,212都具有对请求的资源的访问、所述与当前相关 联的主体的调用堆栈800中的所有腔室相关联的所有身份都具有对所述请求的资源的访 问、以及与所述相关联的主体的所保存的上下文相关联的所有身份都具有对所述所请求的 资源的访问时,准许对所述所请求的资源的访问。
10.如权利要求1所述的计算机可读介质,其特征在于,还包括将安全联系存储在脱机 数据库中以便进行脱机处理。
11.一种安全基础结构,包括用于为相关联的主体定义唯一标识符并用于指定与所述相关联的主体相关联的帐户 的安全标识符100 ;用于基于对指派给所述安全标识符100的基本214和扩展216特权的确定来定义一组 身份和指派给所述一组标识的特权集合的安全令牌200 ;用于定义具有对所请求资源的访问的帐户以及与所述进程有关规则的安全描述符;以及访问控制列表400,所述访问控制列表包括用于标识安全标识符100的访问权限的至 少一个访问控制条目500。
12.如权利要求11所述的安全基础结构,其特征在于,所述安全令牌200包括用于标识 所述结构的版本202、标记204、偏移量206,立即组的数量207和组标识符的总数208的字段。
13.如权利要求12所述的安全基础结构,其特征在于,所述安全令牌200还包括主要拥 有者安全标识符210、组安全标识符212、基本特权214和扩展特权216。
14.如权利要求13所述的安全基础结构,其特征在于,所述主要210和组212安全标识 符定义所述安全令牌200的相关联的主体的身份。
15.如权利要求13所述的安全基础结构,其特征在于,基本特权214包括对在所述安全 令牌200中指定的所述身份有效的一组特权。
16.如权利要求13所述的安全基础结构,其特征在于,扩展特权216包括为所述安全令 牌200中的安全标识符100定义的自定义特权。
17.一种用于向相关联的主体准许最小特权访问的方法,包括提供用于为相关联的主体定义唯一标识符并用于指定与所述相关联的主体相关联的 帐户的安全标识符100 ;将所述唯一标识符映射到帐户数据库中的条目,以便确定指派给所述安全标识符100 的基本214和扩展216特权;随着所述相关联的主体的迁移,累积相关联的主体的身份210,212 ; 创建用于基于所述对指派给所述安全标识符100的所述基本214和扩展216特权的确 定来定义一组身份210,212和指派给所述一组身份的特权集合的安全令牌200 ;以及通过对所述相关联的主体的所有所述累积的身份210,212和特权214,216的集合求交 集来确定所述相关联的主体的访问特权。
18.如权利要求17所述的方法,其特征在于,所述确定所述相关联的主体的访问特权 214,216还包括捕捉所述当前相关联的主体的调用链上下文以及分析所述当前相关联的主体,以在准许访问所述资源之前验证所述调用链中的每一累积的身份210,212和每一相关 联的主体都具有所述所请求资源的访问,由此默认地启用最小特权。
19.如权利要求1所述的方法,其特征在于,还包括在客户机1020侧,在消息队列中写入相关联的主体的安全上下文,在所述服务器1030侧,从所述消息队列中异步地检索所述相关联的主体的所述安全 上下文,通过复制要模仿的所述相关联的主体的所述检索到的安全上下文来模仿所述相关联 的主体。分析所述复制的安全上下文750以构建定义对所述请求的资源的访问权限的安全描 述符300 ;根据所述安全令牌200标识所述相关联的主体;确定所述安全描述符300中所定义的所述身份320,330是否被包括在所述安全描述符 中的访问控制条目500中;以及基于所述访问控制条目500来确定对所述身份320,330可用的访问权限。
20.如权利要求1所述的方法,其特征在于,还包括当与相关联的主体的当前安全令牌 710相关联的所有身份210,212都具有对所述请求的资源的访问、所述与当前相关联的主 体的调用堆栈800中的所有腔室相关联的所有身份都具有对所述请求的资源的访问、以及 与所述相关联的主体的所保存的上下文相关联的所有身份都具有对所述所请求的资源的 访问时,准许访问所述所请求的资源。
全文摘要
各实施例提供可以被配置成在现有操作系统上运行的安全基础结构,以控制什么资源可以被应用程序访问,以及应用程序可以调用什么API。通过考虑当前线程的身份以及当前线程的调用链上下文来作出安全决定,以默认地启用最小特权。捕捉当前线程上下文,并创建其副本,以供用于异步地执行安全检查。系统中的每一线程都具有相关联的标识。为获取对特定资源的访问,分析当前线程上的所有调用者,以确保每一调用者和线程可以访问该资源。只有在每一调用者和线程都可以访问该资源的情况下才向调用者给予对该资源的访问。
文档编号G06F15/16GK102112990SQ200980124867
公开日2011年6月29日 申请日期2009年6月24日 优先权日2008年6月27日
发明者A·R·瓦尔斯, A·罗杰斯, B-M·谢, C·R·乔丹, M·G·莱昂斯, N·L·科尔斯, S·R·谢尔, U·R·桑达蒂, Y·格帕兰 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1