本申请声明对序列号为60/557,239于2004年3月29日提交的题为“Systemsand Methods for Fine Grained Access Control of Data Stored in Relational Databases”的美国临时专利申请的权利,该申请在此全部引入作为参考。
发明内容
以下显示了本发明的简化归纳,以便提供对本发明一些方面的基本理解。该归纳不是本发明的广泛纵览。它并非旨在标识本发明的关键/重要元素或描绘本发明的范围。其唯一目的是用简化形式表示本发明的一些概念,作为后面呈现的更详细描述的序幕。
本发明提供便于对数据库的安全访问的一种系统和方法。随着计算机越来越普遍,越来越多的数据被存储在例如关系数据库的数据库中。在关系数据库中,大多数数据被存储为一个或多个表格中的行。数据库可由一个或多个实体访问。由于存储在数据库中的数据的特性,授权对该数据的差别访问(例如,不可访问、读访问和/或读/写访问)是非常重要的。
关系数据库之所以普及的实质是对表格执行关联查询的能力。存储在表格中的实体集可使用集合处理语言(例如SQL(结构化查询语言))来访问。该语言将一个或多个表格指定为数据源并仅输出满足给定条件的那些行(如果有的话)。
此外,许多关系数据库基于表格上呈现的各种访问路径或索引来优化这些查询。因而,根据本发明一方面,系统提供一种新颖的技术,它以不受欺骗的方法来定义对这些表格中各行的安全访问,同时保留现有的各种优化技术。
根据本发明一方面,便于对数据库的安全访问的系统具有访问数据库的数据库引擎,并提供安全描述符存储器。可任选地,该系统可包括数据库。
该数据库以结构化格式存储数据。例如,数据库可以是关系数据库、对象数据库和/或对象关系数据库。参照关系数据库,具有相同结构的实体集被称为表格,而每个实体被称为一个行。该结构的各个组件被称为列。关系数据库可包括零个、一个或多个表格。
本发明一方面提供与该数据库相关联的至少一个表格,用以包括存储例如安全描述符(例如存储在安全描述符存储器中的与安全信息相关联的标识符)的安全信息的列。
安全描述符存储器存储一个或多个安全描述符。每个安全描述符控制对与其相关联的一个或多个资源的区别访问。包括在安全描述符中的安全信息可包括如下的一个列表:(1)是否许可或拒绝访问,(2)访问的种类(例如只读和/或读/写的许可),以及(3)应用安全信息的当事者。例如,安全描述符存储器可以是访问控制实体的有序集合。
基于存储在行内的数据特性的安全要求以及通过它访问数据的应用程序的复杂性,安全描述符(例如访问控制列表)很快就会变得非常长。此外,在大多数情形中,与表格的各行相关联的区别访问控制列表的数量比实际的行数小得多。例如,在将文件系统建模为表格时,其中表格中的每一行指向文件或文件夹,在这样的表格中可能会有成千上万行。但是区别访问控制列表的数量是数百个的数量级。换言之,许多行具有与其相关联的相同的安全策略。
数据库引擎例如从用户处接收查询信息。该查询信息包括请求要对数据库执行的查询,以及与查询的启动程序相关联的用户上下文(例如用户名、用户标识符和/或用户的类型)。
在执行该查询时,数据库引擎采用了在查询处理期间访问的与数据库的各行相关联的安全描述符以及与该查询相关联的用户上下文信息,来确定用户是否对该行具有所请求的访问权限。因而,仅向查询的启动程序提供来自用户具有访问权限(例如查看和/或修改)的数据库的信息。
本发明的又一方面提供SQL编程语言(例如TSQL)作为策略规范的一部分,该SQL编程语言用允许创建、修改并删除安全描述符的新的语句集(例如访问控制列表)来扩充。这些安全描述符(例如访问控制列表)可包括其它安全相关信息。例如,安全描述符可不依赖于表格中的各行来提供、可共享、并可包括与一个行相关联时有关什么许可和谁可批准的策略。
在传统的关系数据库中,安全策略与表格的行并不相关联。因而,根据本发明一方面,为了表示数据库系统中特定表格的各个行受安全策略的保护,要创建并修改表格的SQL语句已经扩展以表示该事实。在这些表格定义中的各列之一是可任选地扩展的,它具有表示该列包括安全策略的属性。该列的值指前述安全描述符的身份(例如4字节代码)。在一示例中,如果该列的值为NULL,则该行不受任何策略保护。否则,该行的访问控制策略基于存储在安全描述符存储器中的相应安全描述符以及相关联信息而区分。
为了完成前述内容和相关目标,结合以下说明书和附图详细陈述本发明的某些说明性方面。然而,这些方面是说明性的,仅仅示出了本发明诸原理可在其中采用的各种方式的几种,且本发明旨在包括所有这些方面及其等效方案。参阅附图时,本发明的其它优点和新特征在本发明的以下详细说明中会变得显而易见。
具体实施方式
本发明参照附图进行说明,其中贯穿所有附图相同数字代表相同元件。在以下说明中为作解释,陈述有很多具体细节以便提供对本发明的全面理解。然而没有这些具体细节也可实践本发明是显然的。在另外的实例中,为便于描述本发明,众所周知的结构和设备以框图形式示出。
当用于本发明时,术语“组件”、“处理器”、“模型”和“系统”等等旨在指向计算机相关实体:硬件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是,但不限于是,运行于处理器上的过程、处理器、对象、可执行组件、执行线程、程序和/或计算机。作为说明,运行于服务器上的应用程序和服务器都是组件。一个或多个组件可驻留于执行的进程和/或线程中,且组件可在一台计算机上本地化和/或分布在两台或多台计算机之间。此外,这些组件可从具有存储其上的各种数据结构的各种计算机可读介质中执行。组件可通过本地和/或远程进程通信,诸如根据具有一个或多个数据信息包的信号通信(例如来自与本地系统、分布式系统中另一组件交互的组件的数据,和/或来自通过信号经诸如Internet的网络与其它系统交互的组件的数据)。根据本发明,计算机组件可存储在计算机可读介质上,例如包括,但不限于,ASCI(应用程序专用集成电路)、CD(光盘)、DVD(数字视频盘)、ROM(只读存储器)、软盘、硬盘、EEPROM(电可擦除可编程只读存储器)、以及存储棒。
参看图1,示出根据本发明一方面便于对数据库安全访问的系统100。该系统100包括可访问数据库120的数据库引擎110以及安全描述符存储器130。可任选地,系统100还可包括数据库120。
随着计算机越来越普及,越来越多的数据存储在例如关系数据库的数据库中,在关系数据库中,大多数数据存储为一个或多个表格中的行。数据库可通过一个或多个实体来访问。由于存储在数据库中的数据的特性,而授权对该数据的区别访问(例如不可访问、读访问和/或读/写访问)是很重要的。
关系数据库普及的实质是在表格上执行关联查询的能力。存储在表格中的实体集可使用集合处理语言(例如SQL(结构化查询语言))来访问。该语言将一个或多个表格指定为数据源,并仅输出满足给定条件的那些行(如果有的话)。
此外,许多关系数据库基于出现在表格上的各个访问路径或索引来优化这些查询。因而,根据本发明一方面,系统100提供定义以不受欺骗的方式安全访问这些表格中各行的一种新颖技术,同时保留现有的各种优化技术。
数据库120以结构化格式存储数据。例如,数据库120可以是关系数据库、对象数据库和/或对象关系数据库。对于关系数据库,具有相同结构的同类实体集称为表格,而每个实体称为行。该结构的各个组件称为列。关系数据库可包括一个或多个表格。
根据本发明一方面,至少一个与数据库120相关联的表格包括存储例如安全描述符(例如,与存储在安全描述符存储器130中的安全信息相关联的标识符,如下所述)的安全信息的列。
暂时参看图2,示出根据本发明一方面的示例性表格200。表格200包括数据列210和数据行220。此外,表格200包括安全描述符列230。例如,安全描述符列230可为一特定行存储与该行相关联的安全描述符。在一示例中,安全描述符是与安全描述符存储器130相关联的标识符。
返回图1,安全描述符存储器130存储一个或多个安全描述符所包含的安全信息。该安全信息可包括,例如,(1)是否许可或拒绝访问,(2)访问的种类(例如只读和/或读/写的许可),以及(3)应用安全信息的当事者。例如,安全描述符存储器130可以是访问控制实体的有序集合。
暂时参看图3,示出根据本发明一方面的示例性安全描述符存储器300。该安全描述符存储器300包括一个或多个安全描述符310。
在该示例中,特定的安全描述符310包括访问信息320,例如访问许可和/或访问拒绝。该安全描述符310还包括标识与特定安全描述符310相关联的访问种类的许可330,例如不可访问、只读访问和/或读/写访问。该安全描述符310还包括安全描述符310所应用的当事人340(例如用户名、用户组、用户标识符和/或用户类型)。
基于存储在行内的数据特性的安全要求以及通过它访问数据的应用程序的复杂性,安全描述符310(例如访问控制列表)很快就会变得非常长。此外,在大多数情形中,与表格的各行相关联的区别访问控制列表的数量比实际的行数小得多。例如,在将文件系统建模为表格时,其中表格中的每一行指向文件或文件夹,在这样的表格中可能会有成千上万行。但是不同安全描述符的数量是数百个的数量级。换言之,许多行具有与其相关联的相同的安全策略。此外,在一示例中,所有安全描述符可高速缓存在存储器中用于在访问数据库行时快速查寻。
返回图1,数据库引擎110接收例如来自用户的查询信息。该查询信息包括请求要对数据库120执行的查询,以及与查询的启动程序相关联的用户上下文(例如用户名、用户标识符和/或用户的类型)。
在执行查询中,数据库引擎110估算与数据库120的访问行相关联的安全描述符,以及与该查询相关联的用户上下文信息,以确定用户是否已对该行具有所请求的访问权限。此后,数据库引擎110基于该查询尤其是用户上下文信息来提供对查询信息的响应。因而,仅向查询的启动程序提供来自用户具有访问权限(例如以查看和/或修改)的数据库120的信息。
例如,对于数据库120,具有单个表格,有如下条目:
名字 |
州 |
薪水 |
安全描述符 |
Jeff |
Ohio |
$5,000 |
1 |
Joe |
Washington |
$10,000 |
2 |
Sally |
Ohio |
$25,000 |
3 |
表格1
以及相关联的安全描述符存储器130,有如下安全描述符:
安全描述符 |
访问控制列表(访问:许可:被批准的当事者) |
1 |
Grant:Read:Jeff;Grant:Read/Write:Administrator |
2 |
Deny:Read:Joe;Grant:Read/Write:Administrator |
3 |
Deny:Read:Sally;Grant:Read/Write:Administrator |
表格2
在该示例中,当用户Jeff在数据库120(表格1)中查询“所有条目”时,“Jeff”是向数据库引擎110提供查询的用户上下文。此后,数据库引擎110查询数据库120,并初步接收全部的三行。然而,数据库引擎110随后检索存储在安全描述符存储器130中与三个行的每一行相关联的安全信息,并基于该用户上下文仅返回第一行,因为只有这一行是授权用户Jeff阅读的。然而,如果管理员运行同样的查询(例如“所有条目”),则三行全部返回,因为管理员被授权读和/或写三行的全部。
根据本发明一方面,作为策略规范的一部分,SQL编程语言(例如“TSQL”)用允许创建、修改并删除安全描述符存储器130的新的语句集300(例如访问控制列表)来扩充。这些安全描述符存储器130和300(例如访问控制列表)可包括其它安全相关信息。例如,安全描述符可不依赖于表格中的各行来提供、可共享、并可包括与一个行相关联时有关什么许可和谁可批准的策略。
在传统的关系数据库中,安全策略与表格的行并不相关联。因而,根据本发明一方面,为了表示数据库系统中特定表格的各个行受安全策略的保护,要创建并修改表格的SQL语句已经扩展以表示该事实。在这些表格定义中的各列之一是可任选地扩展的,它具有表示该列包括安全策略的属性。该列的值指前述安全描述符的身份(例如4字节代码)。在一示例中,如果该列的值为NULL,则该行不受任何策略保护。否则,该行的访问控制策略基于存储在安全描述符存储器130、300中的相应安全描述符以及相关联信息而区分。在另一示例中,列的缺省值可设置为包括表格的缺省安全策略的安全描述符的身份。
可以理解,系统100、数据库引擎10、数据库120和/或安全描述符存储器130可以是如在此所定义的术语的计算机组件。
接着参看图4,示出了根据本发明一方面的便于对数据库的安全访问的系统400。该系统400包括数据库引擎110、数据库120、安全描述符存储器130、以及查询组件410。该查询组件410可包括查询优化器420和查询执行器430。可任选地,查询组件410和数据库引擎110可形成查询数据库引擎组件440。
当向查询组件410提出查询时,查询优化器420可确定回答该查询的“最佳方法”(“优化”)。例如,查询组件410可采用基于成本优化的策略,从而选择执行该查询的最便宜方法作为方案。
本领域技术人员将理解优化处理是复杂的。查询组件410可在枚举可能方案并剔除昂贵方案中使用现有技术。表格上的索引在降低对表格中数据的访问成本中起重要作用。可以理解,可采用任何类型的适于实现本发明的优化处理,且所有这样的优化技术类型旨在落于所附权利要求的范围内。
重要的是,当访问由安全描述符形式的安全策略保护的表格的各行时,数据库引擎110甚至在将这些行考虑为用于构建查询结果的输入之前,就通过基于由与每一行相关联的安全描述符确定的策略验证查询的请求者是否具有读取这些行的许可,来实施安全策略。本领域技术人员将理解,在此所述的安全模型将执行一个行对于该查询的当事人的可视性等同于对与该行相关联的安全描述符的成功估算。
常规的数据安全系统通过将检查某行是否可访问的条件嫁接为原始查询的一部分来实施安全策略。在现代的关系数据库系统中,得以执行的查询方案往往与由请求者实际提交的查询颇为不同。进行了表格访问的重新排序,以降低访问各行的成本。作为该重新排序的结果,执行查询的有恶意的人就可能通过提供起副作用的功能作为查询一部分来看到额外的数据。大多数常规的数据库安全系统在尝试实施细化的访问控制时易于遭受这种欺骗攻击。
为了解决该问题同时不干扰优化处理,本发明包含一种新颖的方案,它确保所有到表格的访问路径包含具有安全描述符的列。这些到表格的访问路径包括,但不限于,存储为堆阵(无序集合)或表格上聚集或非聚集索引的索引的表格本身,以及可能定义在表格上的具体化视图。作为在所有访问路径中包括安全描述符的结果,查询优化变得与细化安全实施无关。因此,无论查询如何重新排序(例如由查询优化器410优化),在各个行(例如,表格中的数据元素、索引、具体化视图、以及任何其它访问路径都被视为“行”)通过任何已定义路径取得时,两条相关联信息(即与该行相关联的安全策略和当前的用户上下文)可用。结果是完全不受欺骗的安全实施,而不牺牲优化(例如重新排序)该查询的益处。
可以理解,由于以下事实,即有关行的安全信息与该行的每个部分或全部冗余副本(例如索引记录)物理地存储在一起,且安全的实施可在每当向任一行发出构建结果集合时进行,使这种不受欺骗方案变成可能。
因而,本发明使能在持久实体集合上的面向集合操作,而不急剧改变操作系统定义在持久实体上(即经安全描述符)的安全策略。
可以理解,系统400、查询组件410、查询优化器420和/或查询执行器430可以是如在此所定义的术语的计算机组件。
接着参看图5,示出根据本发明一方面便于对数据库的安全访问的系统500。系统500包括数据库引擎110、数据库120、安全描述符存储器130、查询组件410以及用户会话高速缓存器510。
系统500采用与用户会话相关联的用户会话高速缓存器510。高速缓存器510存储当前安全上下文是否具有与安全描述符相关的给定许可的计算结果。因此,给定一对象的安全描述符来检查当事者是否可访问该对象,在每次查询时仅估算一次。如果表格的两个行具有相同的安全策略,即具有相同的安全描述符,则在第一次估算查询的启动程序是否可访问该行的结果,且该结果存储在高速缓存器510中。所高速缓存的结果用于第二行。
高速缓存器510在许多行具有相同安全策略时特别有用,这是例如在文件系统和相似应用程序中的情形。
可以理解,系统500和/或用户会话高速缓存器可以是如在此定义的术语的计算机组件。
如前所述,系统100、400和/或500可用来便于对数据库中的文件、文件夹、联系人、电子邮件消息和其它持久实体的安全访问。例如,与文件系统相关联的数据库可包括一个或多个表格,这些表格可存储有关文件和/或文件夹的信息。表格可由系统100、400和/或500采用使得信息可使用标准相关技术来推理并搜索。系统100、400和/或500可通过解决需要安全体系结构的持久文件系统方案的需要来增强文件系统,从而可定义并实施有关持久实体的区分访问策略,同时保留基于集合的关联查询能力。
现在暂时参看图6-8,示出可根据本发明实现的各方法。尽管为了进行简单的解释,各方法可显示并描述为一系列框,但可以理解并认为,本发明并不受各框的顺序限制,因为根据本发明部分框可以不同顺序或与在此所示和所述的其它框同时进行。此外,根据本发明并不是所有框都是实现各方法所必需的。
本发明在由一个或多个组件执行的诸如程序模块的计算机可执行指令的一般环境中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、数据结构等。通常,程序模块的功能可按各个实施例所需进行组合或分布。
参照图6,示出根据本发明一方面的安全地访问存储在数据库600中数据的方法。在610,接收查询和用户上下文信息。在620,(例如由查询组件410)执行该查询。在630,对于满足该查询的每一行,该行在构建仅当与该行相关联的安全描述符由用户上下文信息满足时的查询输出期间被视为输入。
然后,参照图7,示出根据本发明一方面的安全地访问存储在数据库700中数据的方法。在710,接收查询和用户上下文信息。在714,取得在构建查询结果时要考虑的行。在720,确定行的安全描述符是否被用户上下文信息满足。如果在720确定为“否”,则处理在730继续。如果在720确定为“是”,则在740确定该行是否提交给该查询结果。如果在740确定为“否”,则处理在714继续。如果在740确定为“是”,则在750,在构建查询结果时使用该行。
在730,确定是否还有其它行。如果在730确定为“是”,则处理在720继续。如果在730确定为“否”,不再进行进一步的处理。
参看图8,示出根据本发明一方面的便于安全数据库800的方法。在810,创建具有安全描述符列的表格。在820,创建与该表格相关联的安全描述符存储器。在830,填充该表格(例如具有安全描述符标识符的表格的至少一行)。
在840,接收查询和用户上下文信息。在850,使用用户上下文信息和该表格的安全描述符来优化并执行查询。在860,优化查询的结果被提供为查询的响应。
为了提供实现本发明各方面的其它上下文环境,图9和以下论述旨在对本发明诸方面可在其中实现的适当计算环境910提供简要、一般的说明。尽管本发明已经在运行于本地计算机和/或远程计算机上的计算机程序的计算机可执行指令的一般上下文环境中进行了描述,本领域技术人员将认识到本发明也可结合其它程序模块实现和/或实现为硬件和软件的组合。然而,通常程序模块包括执行具体任务或实现具体抽象数据结构的例程、程序、对象、组件、数据结构等等。操作环境910仅是适当操作环境的一个示例,并非旨在提出对于本发明使用范围或功能的任何限制。适合用于本发明的其它众所周知的计算机系统、环境和/或配置包括,但不限于,个人计算机、手持式或膝上型计算装置、多处理器系统、基于微处理器的系统、可编程消费电器、网络PC、小型计算机、大型计算机、以即包括以上系统或装置的分布式计算环境等等。
参照图9,用于实现本发明各方面的示例性环境900具有计算机912。计算机912具有处理单元914、系统存储器916、及系统总线918。系统总线918将包括但不限于系统存储器916的系统组件耦合到处理单元914。处理单元914可以是各种可用处理器的任一种。双微处理器和其它多处理器架构也可被用作处理单元914。
系统总线918可以是若干类总线结构的任一种,包括存储器总线或存储器控制器、外围总线或外部总线、和/或使用各种可用总线结构任一种的本地总线,这些总线结构包括,但不限于,工业标准结构(ISA)、微信道结构(MSA)、扩展ISA(EISA)、智能磁盘设备(IDE)、VESA局部总线(VLB)、外围部件互连(PCI)、卡总线、通用串行总线(USB)、高级图形端口(AGP)、个人计算机存储卡国际协会总线(PCMCIA)、火线(IEEE 1394)和小型计算机系统接口(SCSI)。
系统存储器916具有易失性存储器920和非易失性存储器922。包含在计算机912元件间如起动时传送信息的基本例程的基本输入/输出系统(BIOS),存储在非易失性存储器922上。作为说明且无限制,非易失性存储器922可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除ROM(EEPROM)或闪存。易失性存储器920包括作为外部高速高速缓存的随机存取存储器(RAM)。作为说明且非限制,RAM有多种形式可用,如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍数据速率SDRAM(DDRSDRAM)、增强SDRAM(ESDRAM)、同步链接DRAM(SLDRAM)、和直接RambusRAM(DRRAM)。
计算机912还具有可移动/不可移动、易失性/非易失性计算机存储介质。图9示出了例如磁盘存储器924。磁盘存储器924包括,但不限于,象磁盘驱动器、软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、LS-100驱动器、闪存卡、或存储棒的装置。另外,磁盘存储器924可具有单独存储介质或结合其它存储介质包括,但不限于,诸如光盘ROM设备(CD-ROM)、可记录光盘驱动器(CD-R驱动器)、可重写光盘驱动器(CD-RW驱动器)、或数字化通用盘ROM驱动器(DVD-ROM)的光盘驱动器。为便于磁盘存储器924与系统总线918的连接,通常可使用诸如接口926的可移动或不可移动接口。
应当理解,图9描述了作为用户和在适当操作环境900中描述的基本计算机资源间中间件的软件。这种软件包括操作系统928。可存储在磁盘存储器924中的操作系统928,其作用是控制和分配计算机系统912的资源。系统应用程序930得益于操作系统928通过存储在系统存储器916或磁盘存储器924中的程序模块932和程序数据934对资源的管理。可以理解本发明可用各种操作系统或操作系统组合来实现。
用户通过输入设备936将命令或信息输入到计算机912中。输入设备936包括,但不限于,诸如鼠标、跟踪球、笔、触板、键盘、话筒、操纵杆、游戏垫、卫星接收器、扫描仪、电视调谐器卡、数码相机、数字摄像机、网络相机等定点设备。这些和其它输入设备经系统总线918通过接口端口938与处理单元914相连。接口端口938包括例如串行端口、并行端口、游戏端口、和通用串行总线(USB)。输出设备940使用象输入设备936的某些相同类型端口。因此,例如USB端口可用来为计算机912提供输入,并将信息从计算机912输出到输出设备940。输出适配器942被提供用来说明有某些输出设备940象监视器、扬声器、和打印机等等需要特殊适配器。输出适配器942包括,作为说明且非限制,在输出设备940和系统总线918间提供了连接手段的视频卡和声卡。应该注意的是诸如远程计算机944的其它设备和/或设备系统提供输入和输出功能。
计算机912使用与一台或多台远程计算机如远程计算机944的逻辑连接在网络化环境中操作。远程计算机944可以是个人计算机、服务器、路由器、网络PC、工作站、基于微处理器的电气设备、对等设备或其它公共网络节点等等,而且通常包括所述与计算机912相关的许多或全部元件。为简化起见,仅存储器存储装置946与远程计算机944一起图示。远程计算机944经网络接口948与计算机912逻辑连接,然后通过网络连接950进行物理连接。网络接口948包括诸如局域网(LAN)和广域网(WAN)的有线和/或无线通信网络。LAN技术包括光纤分布式数据接口(FDDI)、铜线分布式数据接口(CDDI)、以太网/IEEE 802.3、令牌环//IEEE802.5等等。WAN技术包括,但不限于,点对点链接、象综合服务数字网(ISDN)及其各变种的电路交换网络、分组交换网络、和数字用户线路(DSL)。
通信连接950指被用来将网络接口948连接到总线918的硬件/软件。尽管为了清晰地说明,通信连接950被示为位于计算机912内,但它也可在计算机912之外。与网络接口948连接所必需的硬件/软件具有,仅作为示例,诸如包括常用电话连线的调制解调器、电缆调制解调器和DSL调制解调器的调制解调器、ISDN适配器、和以太网卡等内部和外部技术。
以上所述包括本发明的诸多示例。当然,为描述本发明而对每一能想到的组件或方法组合进行描述是不可能的,但本领域普通技术人员明白本发明的更多排列和组合是可能的。因此,本发明旨在包含所有这样的在所附权利要求书精神和范围内的变更、修改、和变化。此外,就用于具体实施方式或权利要求书的术语“包含”而言,这种术语意在以类似于术语“包括”的作为权利要求中的过渡词方式作包括意义解。