本申请要求于2005年2月28日提交的、名称为“DISCOVERABILITY ANDENUMERATION MECHANISMS IN A HIERARCHICALLY SECURE STORAGESYSTEM”的美国临时专利申请第60/657,536号的优先权。上述申请整体通过引用结合在此。
具体实施例
现在参考附图描述本发明,其中相同的参考数字用于贯穿全文指代相同的元件。在下面的描述中,为了说明,提出了大量的细节,为了提供对本发明的全面理解。这可能是明显的,然而,没有这些特定细节也可以实施本发明。在另一个实施例中,框图中示出了熟知的结构和设备,以便方便描述本发明。
作为在本申请中使用,术语“组件”和“系统”意图指示有关计算机的实体,硬件、硬件和软件的组合、软件或执行软件。例如,组件可以是,但不限于处理器上运行的进程、处理器、对象、可执行的、执行线程、编程、和/或计算机。为了说明,服务器上运行的应用程序和服务器都可以是组件。一个或多个组件能驻留在执行进程和/或执行线程内,且组件能位于一台计算机上和/或分布在两台或多台计算机之间。
作为这里使用,术语“推断”或“推论”一般指系统、环境和/或用户通过事件和/或数据、来自捕获的一组观察资料的推理或推断状态。例如,推论可用于标识特定的内容或动作,或能生成状态的概率分布。推论是盖然的,即,对感兴趣的状态的概率分布的计算基于数据和事件的考虑。推论也可指示用于从一组事件和/或数据中合成较高级事件的技术。这种推论导致从一组观察事件和/或存储事件数据构造新事件或动作,无论事件是否在紧密时间接近上相关,以及是否事件和数据来自一个或多个事件和数据源。
本发明的各方面涉及计算机系统,且更为具体地,涉及分层结构安全存储器系统中维护数据的可发现性。如上所述,传统的存储器系统关于有关安全的可发现性机制方面存在限制。为了这个目的,呈现面向数据库的文件系统能支持大量询问并为常用数据单元(例如,Contact)提供系统化的终端用户类型。这些系统化的终端用户类型方便且能提高应用程序关于数据的互操作性。
本发明考虑数据的分层结构表示。更为具体地,本发明考虑数据能被“装入”不同的文件夹且此后被放置进不同的容器。用户能使用这些容器来组织其数据。例如,数据能被组织(例如,装入)成目录,如图片、音乐、文档等等。此外,这些目录能进一步被组织成容器,由此建立数据的分层结构表示。作为例子,在图片内,可能有“我的家庭”、“我的度假”、“我的婚礼”等等图片。同样,子目录能依据这些分层结构而存在。
根据该分层结构表示,本发明能方便把安全策略(例如,安全描述符)与每个对象相关联。应该认识到,对象可以是包含在容器内的任何数据元素以及容器本身。同样,每个对象能以表格的单独行来表示。该基于行的表示在讨论了其后的附图时,会更好地理解。
一方面,安全描述符能为数据访问提供这些对象。作为例子,根据本发明的一方面,安全测量能方便设定“我的度假”文件夹,以允许“我的家庭”组内任何人防问。同样,在“我的度假”内,用户还能限制“我的家庭”的某些成员访问子文件夹(例如,“我的西雅图之旅”)。
根据传统的系统,当到达用户没有列举访问的文件夹时,数据存储器的可访问的探查就结束了。考虑F1包含F2,F2包含F3的分层结构,用户到达没有授予许可的F2时,用户将能观看F3内的数据。即使用户可访问F3,传统系统将阻止可发现性,因为F3包含在没有适当许可的F2内,这是限制。本发明使用户有统一访问,以探究(发现)和/或呈现,因此允许具有适当许可的数据存储器内所有数据的使用。如上所述,这种统一访问能通过与数据存储器内的每个对象相关联的安全策略而方便。将会理解,每个安全策略能与行级项相关联。
传统的文件系统使用两种访问模式来检索文件。第一,这些系统方便了受限的发现方法,其中用户能发现存在适当的安全许可的数据元素。另一种是直接访问机制,其中如果完全路径是已知的且有适当的访问许可,则用户能访问文件。
除了这两种单独的模式之外,本发明能使用第三种模式,这是一种允许基于安全证书的访问和发现的询问模式(例如,数据存储器过滤)。与传统的系统不同,本发明能提供基于定义的指定所有权来询问所有数据,并在该数据上操作的机制。
本发明中,只要访问证书是适当的,则能发现数据,并在其上进行想要的操作。
由此,本发明能在树形结构(例如,分层结构数据组织)的根部设定安全策略(例如,安全描述符),并通过该树形结构传播到该结构的所有子级构。应该理解,传播的安全描述符可基于父安全策略、子安全策略、和/或对象类型。能使用影响生成并在树形结构中传播安全策略的逻辑。如下所述,可使用基于规则的逻辑和/或人工智能来传播安全策略。
考虑用户创建新项的情况。这种情况下,可能有子级继承或组合的父级的某些安全策略(例如,描述符)。在一方面,用户有具有许可的文件夹(例如,容器),且当创建对象时,为该对象的许可可以假设是相同的。或者,传播到最近创建的对象的许可可基于为该文件夹的许可和为该对象的许可来智能确定。前述是根据新颖的创新的各方面的继承的例子。
将会认识到,在传统的文件系统中,这种传播是不可能的。相反,为了改变根据传统系统的许可,管理员必须穿越树形结构的每个子级,并改变许可为可应用。相反,根据本发明的各方面,当改变(或建立)根级许可时,这种许可可自动传播到树形结构的所有部分,包括子级。
很重要的是应该注意,在一些传统系统中,安全许可在更新时,只能在“用户的上下文”中传播。尽管存在其后许可才能改变的情况,但传统系统不能自动更新这些许可。
本发明能在“系统上下文”中传播许可。因此,即使用户没有干预文件夹的许可,但如果次级、次次级等等树形结构的许可适当,则这些许可能根据本发明来传播。通过考虑前述的F1、F2和F3的例子,会更好理解这个方面。
继续这个例子,即使对于F2的许可并不适当,当如果对于F3存在许可,则许可可从F1传播到F3。与区分属性(例如,文件名次、大小、创建时间)和数据(例如,文件的内容)早期文件系统不同,在大量数据的系统中,很难确定属性和数据。同样,创建“项”并用于授予在每“项”基础上的访问许可,而不管数据元素是属性还是数据。因此,关于本发明,安全模型的管理能特别地被简化,因为该系统不需要保持跟踪两个单独安全许可。相反,在一方面,每个项只使用一个“读”和一个“写”许可,而不是每个项使用两个“读”和两个“写”许可。
结果是,本发明能方便用户观看放置适当许可的所有数据的抽象。可在整个存储器上定义这些观看,并在随后呈现给用户。能从连接点和允许的安全许可的集合中定义该观看为可见项的交集。结果是,用户能观看和/或访问该用户具有安全许可以观看和/或访问的连接点下的项。
首先参考图1,示出了方便呈现文件存储器的内容表示的系统100。一般地,系统100能包括询问组件102和行级安全组件104。操作中,询问组件102和行级安全组件104能标识数据组件106内满足安全策略或许可的项。一旦标识,则数据的结果集能被呈现给用户和/或应用程序。例如,如前所述,本发明能通过显示器把结果集呈现给用户。
现在参考图2,示出了行级安全组件104的更为详细的框图。特别是,该行级安全组件104可包括安全描述符表202,以及单个实例表204。下面将对每一个表格作更为详细的描述。
安全组件104能提供行级安全的实现。当用户连接到一共享(例如,数据组件106)时,能在连接的范围内为每个数据类型定义隐含的视图定义。为了对本发明增加上下文,下面时为“Contact”类型的示例性的视图定义。
CREATE VIEW[System.Storage.Contacts.Store].[Contact]AS SELECT ItemId,TypedId,NamespaceName,ContainerId,ItemSyncMetadata,
TREAT(Item AS[System.Storage.Contacts.Store].[Contact])AS Item,PathHadle,
EntityState,ObjectSize,Changeinformation,PromotionStatus FROM[System.Storage.Store].[Table!Item]
WHERE Item IS OF([System.Storage.Contacts.Store].[Contact])AND(@@ITEM_DOMAIN_IS_ROOT=1
OR(PathHandle>=@@ ITEM_DOMAIN AND PathHandle<=@@ITEM_DOMAIN_LIMIT))
每个项作为实体表格(202,204)中的行存储。以上示例性的表示能影响从存储器中全局范围的项中过滤出Contact类型。这种过滤隐含的是,访问控制的维度,用户只能从中看到根据相应的行中的安全描述符的那些可读项。
在这个例子中,视图定义包括以上标识的“WHERE”语句,它限制对连接点项的访问。应该理解,以上的视图定义并不包括安全定义。
如上所述,安全机制是存储在表格(202,204)中的行级安全的功能。这种机制应用于视图的基本表格级,且对该视图有传播作用。当安全能用于每行基础上时,用户不具有读取访问的行不会出现在由询问组件102提供的结果集中。
在文件系统模型中,每个“项”在行内,且每行由与之相关联的安全。行级安全机制104限制行出现在对于用户不具有读取访问的那些行的结果中。给定传送给询问组件102的定义(如以上例子)的视图至少部分基于连接点,限制呈现(例如,观看)。因此,结果集可以是这两个限制的交集。将会认识到,这些安全机制能对于查询定义隐含出现。结果是,用户被屏蔽而不能做任何操作。
本发明使用检查表格(例如,204)内每行的安全描述符的单个实例机制。这单个实例机制使得看起来系统在执行跨每行的检查成为可能。跨行的安全描述符的单个实例能使该机制的检查有效。将会认识到,安全策略(例如,访问控制列表)能适当用于示例性的安全描述符。因此,应该理解,这些额外的新颖方面意图落入本发明及其附属的权利要求的范围内。此外,尽管以上提及ACL,但应该理解,使用不同的安全策略的其他方面也是存在的。这些不同的安全策略意图落入本发明及其附属的权利要求的范围内。
操作中,维护两个表格(202,204),它们是安全描述符的表格202和在安全描述符的散列和安全描述符标识(SDID)(例如,SHA-1)之间映射的单个实例表格。将会认识到,该SDID是唯一值。根据本发明,单个实例指示为存储器中每个唯一安全描述符,该系统维护SDID和安全描述符之间的映射的机制。
因此,对每行,并非存储安全描述符,而是存储与其对应的SDID。一方面,当用户创建项时,用户可选择提供安全描述符或使其为空。如果为空,则能从创建该项的父级继承安全描述符。当用户选择显示地提供安全描述符时,系统能将该显示定义的描述符与带有父级的安全描述符合并,以创建一个描述符。
一旦确定新项上的安全描述符是什么,就做出决定十分它已经存在。如果它确实存在,就使用现存的一个。如果并不存在,则保存新的一个。
为了确定是否存在安全描述符,本发明参考包括安全描述符到安全描述符的散列(例如,SHA-1散列)的映射的单个实例表格204。因此,为了确定是否存在具有相同安全描述符的另一个项,计算主题安全描述符的散列。然后,系统查询单个实例表格204的行,以得知十分任何行包含安全描述符的相同散列(例如,SHA-1)。如果发现匹配,则存在高概率。
接着,进行实际安全描述符的比较,以验证是否存在安全描述符。如果实际安全描述符不相同,则系统独立存储该安全描述符。应该认识到,系统只依赖散列算法(例如,SHA-1)来保证单值性。换句话说,如果该散列值与单个实例表格204中的散列值不匹配,则做出该安全描述符不存在的决定。
安全描述符有三个属性,散列(基于安全描述符的二进制,数学计算出的值)、安全描述符本身(二进制)、以及SDID(指向安全描述符的整数值)。对每一行,系统存储与安全描述符相关的特定行的ID。接着,在单个实例表格204内,系统在散列(例如,SHA-1)和SDID之间映射。在安全描述符表格202中,系统在SDID和二进制之间映射。
因此,单个实例描述符表格204和安全描述符表格202一起给出从SHA-1到SDID到二进制的完全映射。有效地是,这两个表格(202,204)能用于执行单个实例化检查。
安全描述符能有以下逻辑形式:
O:owner_sid
G:group_sid
D:dacl_flags(ace1)(ace2)...(acen)
S:sacl_flags(ace1)(ace2)...(acen)
在以上例子中,O:标识拥有者,G:标识组,D:标识任意访问控制列表(DACL)(本发明的范围内的安全描述符的部分),而S:标识系统访问控制列表(SACL)。DACL是访问控制条目(ACE)的集合,每个ACE可采用下面的形式。
ace_type;ace_flags;account_sid
给定的负责人能授予或拒绝对特定项的访问。因此,拒绝的项能从用户视图中隐含地过滤掉。过滤引擎或询问组件102能扫描存储器内对任何容器语义不可知的所有项,并产生统一集,由此克服传统文件系统中遍历的限制。
两个内部表格(202,204)能用于方便系统中的存储和访问控制。在示例性的方面,系统能使用[System.Storage.Store].[Table!SecurityDdescriptorSingleInstance]表格204(例如,实例表格)和Sys.security_descriptor表格202(例如,安全描述符表格)。Sys.security_descriptor表格202是安全描述符的目录视图。能使用SQL服务器提供的数据定义语言(DDL)原语来创建或删除这些描述符。单个实例表格203能连接系统中的中央处理单元(CPU)和存储器优化。
根据一方面,项的重要数字共享相同的安全策略或描述符是常见的。在一个例子中,访问控制列表(ACL)的最大大小是64KB,因此,给定的安全描述符可以是128KB的数量级。将会认识到,给定每个项以潜在的高度通用性,则存储具有项的这种大小的值可能是无效的。因此,每个唯一安全描述符能存储在Sys.security_descriptor表格202中,而描述符及其SHA-1散列在之间的映射在单个实例表格204中维护。如前所述,SHA-1散列不能保证输出的唯一性,但给定大的输出范围(例如,2^160),冲突是非常不可能的。因为实例表格204有自愈的本性,则能保证系统可自动从恶化或不一致性中恢复。
Item/Extension/Fragment/Link表格有用于SDID的条目,被标记为SECURITY属性。这能确保对这些表格的所有读取访问以及在建立在这些视图顶部的任何视图要经受访问检查请求(FILE_READ_DATA|FILE_READ_ATTRIBUTES)。ItemExtension、Link和ItemFragment表格内的行具有与Item表格内的相应行相同的安全描述符。
以上描述的机制可被认为是用于呈现文件系统读取路径中的授权模型的核心。任何授权模型能固有依赖鉴定模型。在一个例子中,当用户连接到存储器时,使用优选的操作系统鉴定机制(例如,NTLM(NT LAN管理员),Kerberos)来鉴定用户(例如,认为可信赖的)。鉴定的最终结果是代表正在访问文件系统的用户的安全令牌。该令牌其后可用于为负责人做出鉴定决定。
根据本发明的另一方面,使用行级或记录级安全(RLS)确保安全的项可受到保护,同样免于存储器服务计算。为了安全评价,服务计算可被认为是类似任何其他的NT商标的计算。尽管这能特别保证统一的安全语义,但在更新路径中带来感兴趣的问题。例如,考虑用户尝试创建带有给定Namespace名称的项。保证呈现文件系统中的Namespace名称在其包含的文件夹中是唯一的,假设是在明确命名的系统中。在创建期间,该系统通过确保具有相同Namespace名称的相同文件夹中不存在其他项来保证单值性。
在这种情况下,项可能已经存在于具有拒绝服务计算的访问许可的文件夹内。本发明能通过使用签名机制来解决这个问题。请求全局访问存储器的更新原语可用授予“免除RLS”特权的证书来签名。从这种原语的上下文内部,系统能查询存储器,且这种情况下,行级安全将被旁路。
如上所述,传统文件系统已经在属性和数据之间进行区分,以能够遍历语义。可发现性和基于询问的语义的缺乏导致区分属性和数据用于访问控制决定的模型。本发明通过方便类型系统上的所有和没有语义,来提供数据和属性的无缝访问。
下面是示例性的文件系统安全模型的详细讨论。下面的讨论描述了许多不同情况下的组件功能性。应该认识到,所提供的这些描述的情况只是提供本发明的上下文,且并不以任何方式意图限制本发明或其附属的权利要求。
首先参考文件系统安全模型,在一方面,数据可作为指示文件系统中最小单元的一致性的“项”来组织进存储器。“项”可被单独保护、串行化、同步化、复制、备份/恢复等等。将会认识到,文件系统项可被描述为其起源是System.Storage.Item类型的类型实例,它是实体类型。文件系统内的所有项能存储在项的单个全局上下文中。同样,每个项有保证对给定文件系统存储器的所有项是唯一的唯一标识符。
现在参考图3,示出系统300。系统300是根据这种安全讨论的上下文,其中类型系统302中的项可被分类为类属容器类型304和复合项类型306的实例。类属容器304能用于模型化文件夹和其他分层结构数据集合桶。复合项类型306可用于模型化用于应用程序的数据的单个逻辑电路。这些类型实例能为典型数据操作,如复制、移动、同步等等,给出所有或没有的语义。后来的例子包括,但不限于,邮件信息、图片、联络等等。复合项类型306的实例(用虚线表示)能进一步被分类为文件后备项308(FBI)以及非文件后备项310(nFBI)。将会认识到,Win-32商标的访问基于语义被限制为FBI和类属容器。
下面的容器分层结构(例如,树形结构)应用于这些项。类属容器304和复合项容器306能包含包括类属容器的任何其他项类型。这些附加的类属容器内的项也能被独立保护。FBI308不能包含其他项,且因此形成分层结构中的叶子节点。
现在参考图4,将会认识到,文件系统400包括可信任边界402相反一侧上的两个主要组件,存储器组件404和客户机组件406。如所示,存储器组件404包括1到N个对象组件,其中N是整数。对象组件1到N可被单独地或统称为对象组件408。处理对象408的存储和检索的存储器组件404能在存储器组件404和客户机组件406之间形成可信任的文件系统子系统。
能向平台提供编程语义的客户机组件406在用户进程中运行。应该理解,用户在连接时间被认证。检索的对象408(例如,项)能在客户机空间内物化。一方面,客户机在这些对象408上不施加安全检查或访问限制。根据本发明,当编程上下文对存储器组件404是持续一致时,存储器组件404能实施访问控制(通过访问控制组件410)。下面是用户认证的讨论。
文件系统400能揭露相对文件系统存储器404包含的项408执行动作的安全负责人的定义。在本发明的各方面,安全负责人可能是用户或安全组。因此,安全负责人可通过安全标识符(SID)来表示。
如图4所示,到文件系统服务的连接是在被访问控制组件410成功认证的安全负责人的上下文中。应该理解,文件系统认证(例如,通过访问控制组件410)可能是操作系统认证机制的派生物。例如,文件系统认证可能是SQL(结构化查询语言)安全模型中可用的Windows商标认证的派生物。例如,将会认识到,SQL提供叫做SQL认证的、在文件系统400内不支持的另一种内建的认证机制。
继续这个例子,当利用Windows商标提供的认证服务,如Kerberos、NTLM等等的Windows商标时,由Windows商标的用户的尝试连接可由文件系统400鉴定。在这个例子中,鉴定用户映射到SQL中用于存储器404中的认证决定的“公开”角色。一方面,内建的管理员(BA)将被映射到授予BA以SQL管理特权的SQL管理员。另一方面,可仅使用文件系统原语来建立文件系统管理。同样,在另一方面,BA不会是SQL管理员的一员。
认证的最终结果是表示访问文件系统400的负责人的安全令牌。这种数据结构可包括进入的负责人的SID和负责人是其一员的所有组的SID。此外,在连接文件系统400时,用可默认用户持有所有特权。接着下面的讨论,将会更好地理解,这种令牌随后可用于做出鉴定决定。
现在转到认证的讨论,如上所述,文件系统认证可在共享级安全和项级安全上建立。作为说明书中使用,“共享”可指存储器410内的项408的别名。当存储器410被创建时,默认的共享作为根项的别名而创建。具有充分特权的用户能创建作为存储器410内的任何类属容器(例如,项408)的别名的共享。
文件系统能使用通用的命名惯例路径来揭露本地和远程的namespace。因此,文件系统客户机连接到共享,因此连接点和名字的相对分层结构构成了对文件系统对象408的寻址机制。
作为例子,假设用户连接到根共享以访问foo。因此,访问会显示为\\MachineName\StoreName\RoorShare\...\foo。类似地,连接到共享的叫做AliceShare的用户会访问相同的目标\\MachineName\StoreName\RoorShare\...\foo。在这个例子中,项上有效的允许可以是关于连接的共享和项的安全描述符的函数。应该理解,前者定义了共享级安全,而后者定义了项级安全。用于组成有效的安全描述符的这些安全机制的每一个的细节和规则将在以下描述。
以共享级安全的讨论开始,根据本发明的文件系统共享与Windows商标的共享有些类似。为了提供本地和远程访问的统一语义,为每个创建的文件系统共享,也可创建镜像共享。共享可作为项存储在目录存储器内,且可以是使用项安全保护的,这是下文的议题。这些项和共享上的许可可以是在本地和远程访问上相同的授予统一访问语义。
可授予关于项的想要的默认许可。例如,共享内不同的项可具有关于用户特性(例如,本地系统内建管理员、认证、交互......)所施加的不同的默认许可。
类似于Windows商标的共享,为共享安全描述符的默认值是可以使用在LanManServer\DefaultSecurity\SrvsvcDefaultShareInfo的注册设定来配置的。
项安全机制可使用安全描述符来实现访问控制。因此,一方面,可在安全描述符定义语言字符串格式内由API(应用程序接口)来通信安全描述符,并可在Sys.Security_Descriptors(安全描述符表格)的VARBINARY栏下紧缩的(pack)二进制格式存储在数据库内(图2的202)。
图2的新的安全描述符表格202,如上所述,存在Sys.Security_Descriptors,以持有每个唯一Security Descriptor,作为带有唯一ID(SDID)的紧缩的二进制安全描述符存储,用于作为文件系统基本表格中的外部密钥使用。例如,安全描述符表格可表示如下:
SDID |
SecurityDescriptor VARBINARY |
55 |
XXXXXXXXXX |
56 |
XXXXXXXXXX |
尽管上面的安全描述符表格使用为安全描述符的二进制表示,应该认识到,可使用任何适合的表示,而不会脱离本发明及其附属的权利要求的精神和范围。
现在参考安全描述符以及相关数据的表示和存储的讨论,如上所述,本发明使用持有安全描述符相关信息的两个内在表格,安全描述符表格(例如,sys.security_descriptor)和单个实例表格(例如,[System.Storage.Store].[Table!SecurityDescriptorSingleInstance])。
继续这个例子,sys.security_descriptor是由SQL维护的目录视图。该二进制存储在与SDID相应的行内。
该单个实例表格可由文件系统维护。它包含到前述sys.security_descriptor视图或表格内标识的SDID的二进制安全描述符的散列的映射。在一个例子中,可使用SHA-1散列。一方面,如果创建具有相同安全描述符的多个项,则单个条目能存在于两个表格中。
如上所述,本发明的另一个新颖特征是,如果单个实例表格已经恶化,则可将它毁坏,因为它是自愈表格。换句话说,如果出现恶化,则仅通过生成新的散列值并将其与适合的SDID相关联,就能创建新的表格。
一方面,Item/Extension/Fragment/Link表格可具有为标记用于“安全”属性的SDID的条目。应该理解,这能确保对这些表格的任何读取访问以及任何在这些视图上建立的任何视图可经受要求(FILE_READ_DATA|FILE_READ_ATTRIBUTES)的访问检查。还应理解,ItemExtension、Link和ItemFragment表格必须具有与Item表格相同的安全描述符表格。
图5说明根据本发明的一方面初始化的方法。然而,为了说明的简化,这里示出的一种或多种方法,例如,以流程图的形式,作为一系列动作示出和描述,应该理解并认识到,本发明并不被动作的顺序所限制,如根据本发明,一些动作可以不同的顺序出现和/或与这里示出并描述的其他动作同时出现。例如,本领域的技术人员会理解并认识到,方法可替换为一系列相关的状态或事件,如以状态示意图。而且,并非要求所有说明的动作来实现根据本发明的方法。
在建立过程期间建立模型数据库的同时,安全数据结构被初始化。在502,建立表格。在一个例子中,建立表格可包括建立Sys.server_principals、Sys.databaser_principals、Sys.server_role_members和Sys.database_role_members。在504,创建单个实例表格。根据我们的例子,可在504创建[System.Storage.Store].[Table!SecurityDescriptorSingleInstance]。
在506,创建根安全描述符。该根安全描述符对应于存储器的根(例如,具有完全控制的管理员)。在508,创建项级安全描述符。例如,在508,可创建为tombstone项的安全描述符,以便管理员具有完全控制且经认证的用户具有读取访问。在510,这些条目增加到单个实例表格中。
文件系统能支持ACL的等级的继承。例如,从项创建的时间(例如,CreateItem或CreateComplexItem),可使用提供的安全描述符(如果有)、父安全描述符、项的类型和调用者的令牌(例如,NT商标的令牌)为该项计算安全描述符。
现在参考访问检查的讨论,所有更新的API通过调用[System.Storage.Store].[HasSecurityAccess]执行适当的访问检查。API确保授予调用者在共享级和安全描述符(例如,项、记录)级的请求许可比特。在一个特定的方面,在安全描述符(父级的)上执行的访问检查是与在共享上执行的访问检查(DELETE)不同的(FILE_DELETE_CHILD)。对于另外的情况,这两个访问检查是一致的。
继续这个例子,当调用具有新的父级的SetItemSecurity(具有新的DACL或SACL)或MoveItem时,执行ACL贯穿树形结构的传播。在执行适当的访问检查,以确保允许调用者执行该操作之后,可在文件系统的上下文中实现ACL的传播。不对更新ACL的子树形结构执行访问检查。
应该认识到,本发明可使用异步和/或同步传播。下面是同步传播的讨论。应该理解,子树形结构的根与复合项无关。而且,子树形结构的根是类属项,以描述调用SetItemSecurity或MoveItem的节点。
根据同步传播,计算用于根项的新安全描述符。如果不更新DACL或SACL,则如果对于Item、Extension、Fragment、Link表格和该系统更新,则SDID返回。整个项的子树形结构锁定在该项开始。在这个例子中,不是必须锁定任何其他表格(Extension、Fragment、Link)。
接着,可创建包含以上动作中所有项的临时表格。该临时表格可具有以下特性。临时表格可具有ContainerId、ItemId、以及NewSdId。同样,最初,NewSdId对子树形结构除根的所有项都为空。
对临时表格中的每个条目,可使用新的父SD、项的类型以及现存的项SD来计算新的SD。在这个例子中,可使用CreatePrivateObjectSecurityEx(SEF_AVOID_PRIVILEGE_CHECK|SEF_AVOID_OWNER_CHECK)。因此,临时表格可在每次处理已经计算新的父SD的那些行由级到级遍历,而对于该项的新的SDID为空。根据这个例子,一次跨越表格的一级。
迭代的数量为O(例如,树形结构的深度)。要考虑两个问题。第一,可考虑新的安全描述符的计算。第二,可考虑安全描述符在所有子级上的更新。在第二种情况下,理论限制为O(例如,子级的数量)。在第一种情况下,尽管不是必需,但通常为O(树的深度)。如果需要,可创建新的安全描述符(例如,在单个实例和Sys.security_descriptor表格中)。接着,在临时表格中更新临时SDID表格。最后,可使用在临时表格中计算出的数据来更新Item、Extension、Link和Fragment表格。
图6说明询问由行级安全实施的用于SELECT语句的访问控制的用户上下文中操作的主表格视图的T/SQL操作。此外,在用户上下文中进行对文件系统存储器更新API的调用,但在系统上下文中执行。这种实现因此能实施用于调用者的许可检查。
图7说明使用方便了根据本发明的一个或多个特性的自动化的人工智能(AI)的系统700。本发明(例如,连同实现安全策略)可使用各种基于AI的模式,用于实施本发明的各个方面。例如,用于确定是否应该设定安全描述符的进程,如果是,则可通过自动分类器系统和进程而促进使用的安全级。而且,单个实例和安全描述符表格(来自图2的202、204)远程位于多个位置,可使用分类器来确定选择哪个位置用于比较。
分类器是把输入属性矢量,x=(x1,x2,x3,x4,xn)映射到该输入属于一类的置信度,即f(x)=confidence(class)。这种分类可使用概率和/或基于统计的分析(例如,因数分解为分析实用性和成本),以预测或推断用户想要自动执行的动作。
支持矢量机(SVM)是可使用的分类器的例子。SVM通过发现在可能的输入空间内的超曲面来操作,该超曲面尝试从非触发事件中分离出触发准则。直观地,这使得分类正确,用于测试靠近训练数据但与其不同的数据。倘若可以使用不同模式的独立性,则其他定向和非定向模型分类方法包括,例如,但不限于
Bayes、Bayesian网络、判定树、神经网络、模糊逻辑模型、以及概率分类模型。这里使用的分类包含用于开发优先级模型的统计回归。
从说明书中容易认识到,本发明可使用显式训练(例如,通过类属训练数据)和隐式训练(例如,通过观察用户行为、接收外来信息)的分类器。例如,通过分类器构造器和特征选择模块中的学习或训练阶段来配置SVM。因此,分类器可用于自动学习并执行许多功能,包括但不限于根据预定准则的确定。
现在参考图8,示出了适合于执行揭示的结构的计算机框图。为了提供用于本发明的各方面的额外上下文,图8和下面的讨论意图提供适合的其中可实现本发明的各方面的计算环境800的简要、一般的描述。尽管以上已经在可在一台或多态计算机上运行的计算机可执行指令的一般上下文中描述了本发明,但本领域的技术人员承认,本发明也可结合其他程序模块和/或作为硬件和软件的组合来实现。
一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构等等。而且,本领域的技术人员认识到,这种发明性的方法可用其他计算机系统配置来实施,包括单处理器或多处理器计算机系统、微型机、大型机、以及个人计算机、手持计算设备、基于微处理器或可编程的消费电子产品等等,它们每一个都可操作地耦合到一个或多个相关联的设备。
本发明说明性的方面也可在通过通信网络链接的远程处理设备执行特定任务的分布式计算环境中实施本发明。在分布式计算环境中,程序模式可位于本地和远程存储器存储设备中。
计算机一般包括各种计算机可读介质。计算机可读介质可以是可有计算机访问的任何可用介质,并包括易失性和非易失性介质、可移动和不可移动介质。作为例子,而非限制,计算可读介质可包含计算机存储介质和通信介质。计算机存储介质包括可以用于信息存储的任何方法和技术,如计算机可读指令、数据结构、程序模块或其他数据实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字视频盘(DVD)或其他光盘存储器、磁性磁带、磁性录音带、磁盘存储器或其他磁性存储设备、或可用于存储想要的信息且可由计算机访问的任何其他介质。
通信介质一般包含计算机可读指令、数据结构、程序模块或在调制数据信号,如载波或其他传输机制中的其他数据,并包括任何信息传递介质。术语“调制数据信号”意思是具有一个或多个它的特征集或以信号中编码信息的方式变换的信号。作为例子,而非限制,通信介质包括比如有线网络或直接有线连接的有线介质和比如声频、RF、红外线和其它无线介质。以上的任何组合也应该包括在计算机可读介质的范围内。
现在再次参考图8,用于实现本发明的各方面的示例性的环境800包括计算机802,计算机802包括处理单元804、系统存储器806和系统总线808。系统总线808把包括但不限于系统存储器806的系统组件耦合到处理单元804。处理单元804可以是各种商业上可用的处理器的任何一种。也可以使用双处理器和其他多处理器结构作为处理单元804。
系统总线808可以是还可与存储器总线(具有或不具有存储器控制器)、外围总线、以及使用任何一种商业可用的总线结构的本地总线互连的几种总线结构的任何一种。系统存储器806包括只读存储器(ROM)810和随机存取存储器(RAM)812。基本输入/输出系统(BIOS)存储在非易失性存储器810中,如ROM、EPPROM、EEPROM,它包括如启动时帮助在计算机802内的元件间传输信息的例程。RAM812也包括高速RAM,如用于高速缓存数据的静态RAM。
计算机802还包括内部硬盘驱动器(HDD)814(例如,EIDE、SATA),(它也可配置成在适合的底盘(未示出)中外部使用)、磁性软盘驱动器(FDD)816(例如,从可移动盘818中读写)、以及光盘驱动器820(例如,读取CD-ROM盘822或从其他高容量的光学介质,如DVD中读写)。硬盘驱动器814、磁盘驱动器816、以及光盘驱动器820可分布通过硬盘驱动器接口824、磁盘驱动器接口826、以及光盘驱动器接口828连接到系统总线808。用于外部驱动器实现的接口824包括通用串行总线(USB)和IEEE 1394接口技术的至少一种或两种。其他外部驱动器连接技术在本发明的预想之中。
这些驱动器及其相关联的计算机可读介质提供了数据、数据结构、计算机可执行指令等等的非易失性存储。对计算机802,这些驱动器和介质提供以适合数字格式的任何数据的存储。尽管以上计算机可读介质的描述指示HDD、可移动磁盘、以及可移动光学介质,如CD或DVD,但本领域的技术人员应该认识到,计算机可读的其他类型的介质,如压缩(zip)驱动器、磁性磁带、闪存卡、盒式磁带等等也可以用于示例性的操作环境中,且进一步,任何这种介质可包含用于执行本发明的方法的计算机可读指令。
许多程序模块可存储在驱动器和RAM812中,包括操作系统830、一个或多个应用程序832、其他程序模块834、以及程序数据836。操作系统、应用程序、模块、和/或数据的所有或部分也可以高速缓存在RAM812中。应该认识到,本发明可用各种商业上可用的操作系统或操作系统的组合来实现。
用户可通过一个或多个有线/无线输入设备,例如,键盘838和定点设备,如鼠标840向计算机802输入命令和信息。其他输入设备(未示出)可包括话筒、IR远程控制、操纵杆、游戏垫、记录笔等等。这些以及其他输入设备经常通过耦合到系统总线808的输入设备接口连接到处理单元804,但可由其他接口,如并行接口、IEEE1394串口、游戏端口、USB端口、IR接口等等连接。
监视器844或其他类型的显示设备也可以通过接口,如视频适配器846连接到系统总线808。除了监视器844之外,计算机一般包括其他外围输出设备(未示出),如扬声器、打印机等等。
计算机802可以工作在使用到一个或多个诸如远程计算机848的远程计算机的逻辑连接的网络化环境中。远程计算机848可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其他公共网络节点,并且一般包括与计算机802相关的许多或所有上述元件,尽管为了简化的目的,仅说明了存储器/存储设备850。所示的逻辑连接包括到局域网(LAN)852和/或较大的网络,例如,广域网(WAN)854的有线/无线连接。这种LAN和WAN网络环境常见于办公室和公司,并方便了企业范围的计算机网络,如内联网,所有这些可连接到全球通信网络,例如,因特网。
当用于LAN网络环境时,计算机802通过有线和/或无线通信网络接口或适配器856连接到局域网852。适配器856可方便到LAN852的有线或无线通信,它也可以包括放置其上用于和无线适配器856通信的无线接入点。
当用于WAN网络环境时,计算机802可包括调制解调器858、或连接到WAN854上的通信服务器、或用于在诸如因特网的WAN854上建立通信的其他装置。调制解调器858可能是内置或外置以及有线或无线设备,它通过串口端口842连接到系统总线808。在网络化环境内,所述与个人计算机802相关的程序模块或其中的一部分可存储在远程存储器/存储设备850中。应该认识到,所示的网络连接是示例性的,也可以使用在计算机间建立通信的其他装置。
计算机802适合于和可操作地置于无线通信中的任何无线设备或实体,例如,打印机、扫描仪、桌上和/或便携式计算机、便携式数据助理、通信卫星、与无线可检测标记相关联的任何设备或位置(例如,亭子、新闻站、休息室)、以及电话进行通信。这至少包括Wi-Fi和蓝牙无线技术。因此,通信可以是作为传统网络或简单的是至少两个设备之间的专用通信的预定结构。
Wi-Fi、或无线高保真允许从家中的长椅、旅馆房间的床、或者工作会议室到因特网的无线连接。Wi-Fi是类似于使设备,例如计算机发送并接收室内外,在基站范围内的任何地方的数据的蜂窝电话中使用的无线技术。Wi-Fi网络可用于彼此连接计算机、连接到因特网以及有线网络(使用IEEE802.3或因特网)。Wi-Fi网络在未经许可的2.4和5GHZ无线频段上操作,在11Mbps(802.11a)或54Mbps(802.11b)数据速率,例如,或者具有包含所有频段(双频段)的产品,因此这些网络可提供类似于用于许多办公室的基本10BaseT的有线以太网的真实世界的性能。
现在参考图9,示出了根据本发明的示例性的计算环境900的框图。系统900包括一个或多个客户机902。客户机902可以是硬件和/或软件(例如,线程、进程、计算设备)。例如,客户机902可通过使用本发明来容纳cookies(点心文件)和/或相关联的上下文信息。
系统900也包括一个或多个服务器904。服务器904也可以是硬件和/或软件(例如,线程、进程、计算设备)。例如,服务器904可容纳线程,以通过使用本发明执行变换。客户机902和服务器904之间的一个可能的通信可以以适合于在两个或多个计算机进程之间传输的数据分组的形式。该数据分组可包括,例如,cookie和/或相关联的上下文信息。系统900包括能用于方便客户902和服务器904之间的通信的通信框架906(例如,全球通信网络,如因特网)。
可通过有线(包括光纤)和/或无线技术来方便通信。客户机902可操作地连接到可用于存储客户机902本地信息(例如,cookie和/或相关联的上下文信息)的一个或多个客户机数据存储器908。类似地,服务器904可操作地连接到可用于存储服务器904本地信息的一个或多个服务器数据存储器910。上述已经描述的内容包括本发明的例子。当然,为了描述本发明,不可能描述组件或方法的每个可能的组件的组合,但本领域的技术人员会承认,本发明许多进一步的组合和变换是可能的。因此,本发明意图包含落入附加的权利要求的精神和范围内的所有这些替换、修正和变化。而且,详细描述或权利要求中使用术语“包括”的范围,这种术语意图包含当术语“包含”用作权利要求中的过渡词时的解释包括类似的方式。