用于动态应用环境的可证明身份的安全部署的制作方法

文档序号:7938835阅读:158来源:国知局
专利名称:用于动态应用环境的可证明身份的安全部署的制作方法
技术领域
本发明涉及动态应用环境,尤其涉及用于动态应用环境的可证明身份的安全部
1W O
背景技术
计算机安全地通信是常见的。计算机可具有可证明的身份,另一计算机能够评估所述可证明身份以确定第一计算机是它声称自己是的计算机(例如,特定公司的登录和授权服务器)。公司或其他实体部署由虚拟机(VM)组成的服务器场也很常见。在这些服务器场中,多个VM可以被同源地(homogenously)配置并向客户机(诸如远程桌面或远程应用)提供资源。在管理这样一个服务器农场的过程中,VM可被摧毁和(重新)创建。VM可因多种原因被摧毁然后重新创建,诸如通过用已知机器状态来重建它以防止偏离已知机器状态。在VM被摧毁并创建的这些部署中,每个VM都可以具有可证明的身份。为部署的 VM建立可证明的身份有许多问题,其中一些问题是众所周知的。

发明内容
因此,提供用于为服务器农场的VM建立可证明身份的技术是对现有技术的一项改进。现有技术所中有而被本发明减少或消除的一个问题是它们建立VM的可证明身份所需要的时间量。现有技术需要相对大量的时间来执行。在机器一旦被设定就将运行很长时间段的静态环境中,这种时间开销可能不是主要问题。然而在VM部署环境中,诸如在微软hure云计算平台中,VM可具有相对短的寿命,且可被重新创建许多次。VM的这种大数量的创建活动和创建后相对短的寿命意味着在创建后建立VM的可证明身份的这种相对大的开销将占据大量的VM时间,而VM将有较少的可完全工作的时间。在本发明的一个实施例中,控制器管理服务器场的VM。控制器可以例如是微软的 Azure结构控制器,该控制器监控、维护并预配(provision)微软hure云计算环境部署中的VM。部署还包括被配置成向服务器场的客户机提供令牌的安全令牌服务,其中客户机可使用该令牌来确认服务器场中的VM的可证明身份。在一个实施例中,当控制器部署新的VM实例时,它将一段密码数据(“秘密”)注入到VM将要从其启动的镜像文件中。其它实施例可实现其它传输秘密的方式,诸如经由分开建立的安全网络信道,或其中VM生成秘密并通过安全网络信道将其传送到控制器。控制器将此同一密码数据(或与该密码数据相对应的其它密码数据,诸如其中该密码数据是私钥,且该其它密码数据是不对称密钥对的公钥)以及安全令牌服务用于生成对于新的VM的声明的其它信息发送至安全令牌服务。在控制器部署新的VM实例之后,新的VM经由安全协议来发送它拥有该秘密的安全令牌服务证据,并且响应而接收完全声明令牌。当客户机连接于服务器场时,它将试图建立与其连接的VM的可证明身份。为了这样做,客户机从安全令牌服务取回公钥,其中安全令牌服务使用该公钥签署声明。客户机还从VM接收完全声明令牌,并使用来自安全令牌服务的公钥和来自VM的完全声明令牌来确定VM的身份是否被证明。此处描述的示例实施例讨论了客户机连接于服务器场的VM的情形。如所描述的, 客户机可以被认为执行传统上被认为由服务器执行的角色——认证VM的身份的角色。还存在在通信中反转角色的实施例,其中VM认证客户机的身份。在任一类型的实施例中,可以部署本发明以建立服务器场的VM的安全可证明身份。在另一实施例中,当控制器将单一应用实例重新部署进服务器场内(或者如果该应用例如由于地理限制而迁移的话甚至部署到不同的数据中心中)的另一 VM主机中时实现本发明。由于底层操作系统经历打安全补丁、或重启、或其中底层硬件经受失败,应用实例可能频繁地移动。因此,本发明提供一种在空间和时间上持久的安全可证明身份,所以即便在该应用实例被迫移动到不同物理服务器时,该安全可证明身份也保持不变。这是对现有技术的改进,在现有技术中安全可证明身份绑定于底层的物理硬件。


参考附图来进一步描述用于为服务器场的虚拟机建立可证明身份的系统、方法和计算机可读介质,附图中附图1描绘了其中可体现此处描述的技术的示例通用计算环境。图2描绘了可在具有可证明实体的虚拟机内体现的示例远程呈现会话服务器。图3描绘了其中可实现此处所描述的技术的示例虚拟机主机。图4描绘了其中可实现此处所描述的技术的第二示例虚拟机主机。图5描绘了实现本发明的实施例的一个方面的示例服务器场。图6描绘了实现本发明的实施例的一个方面的另一示例服务器场。图7描绘了实现本发明的实施例的一个方面的另一示例服务器场。图8描绘了服务器场为该服务器场的VM建立可证明身份的示例操作过程。图9描绘了服务器场的客户机验证服务器场的VM的可证明身份的示例操作过程。
具体实施例方式各实施例可以在一个或多个计算机系统上执行。图1和以下讨论旨在提供其中可以实现所公开的主题的适当计算环境的简要描述。贯穿本说明书使用的术语“处理器”可包括诸如硬件中断控制器、网络适配器、图形处理器、基于硬件的视频/音频编解码器等硬件组件,以及用于操作这些硬件的固件。术语“处理器”还可包括微处理器、专用集成电路、和/或一个或多个逻辑处理器,例如由从固件和/或软件中读取的指令配置的多核通用处理单元的一个或多个核。逻辑处理器可由指令来配置,指令具体化可用于执行从例如RAM、R0M、固件和/或大容量存储等存储器加载的功能的逻辑。现在参考图1,描绘了示例性通用计算系统。该通用计算系统可包括常规的计算机 20等,它包括至少一个处理器或处理单元21、系统存储器22和在系统处于操作状态时将包括系统存储器在内的各种系统组件耦合到处理单元21的系统总线23。系统总线23可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线,以及局部总线。系统存储器能包括只读存储器(ROM)M和随机存取存储器(RAM) 25。基本输入/输出系统沈¢10 被存储在ROM M中,该基本输入/输出系统沈包含了诸如在启动期间帮助在计算机20内的元件之间传输信息的基本例程。计算机20还可包括用于对硬盘(未示出)进行读写的硬盘驱动器27,用于对可移动磁盘四进行读写的磁盘驱动器28,以及用于对如CD ROM或其它光介质等可移动光盘31进行读写的光盘驱动器30。硬盘驱动器27、磁盘驱动器28和光盘驱动器30被示为分别通过硬盘驱动器接口 32、磁盘驱动器接口 33和光盘驱动器接口 34来连接到系统总线23。驱动器以及它们相关联的计算机可读介质为计算机20提供了对计算机可读指令、数据结构、程序模块, 及其他数据的非易失性存储。虽然这里描述的示例性环境采用硬盘、可移动磁盘四和可移动光盘31,但本领域技术人员应理解,在该示例性操作环境中也能使用可存储能由计算机访问的数据的其它类型的计算机可读介质,如闪存卡、数字视频盘、随机存取存储器(RAM)、 只读存储器(ROM)等。通常,这些计算机可读存储介质能够被用于一些实施例中来存储实现本公开的各方面的处理器可执行指令。包括计算机可读指令的若干程序模块可存储在诸如硬盘、磁盘四、光盘31、ROM 24或RAM 25之类的计算机可读介质上,包括操作系统35、一个或多个应用程序36、其他程序模块37、以及程序数据38。一旦由处理单元执行,计算机可读指令使得下文中更详细描述的动作被执行或使得各种程序模块被实例化。用户可以通过诸如键盘40和指点设备42 之类的输入设备向计算机20中输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些及其他输入设备常常通过耦合到系统总线的串行端口接口 46连接到处理单元21,但是,也可以通过诸如并行端口、游戏端口或通用串行总线(USB)端口之类的其他接口来连接。监视器47、显示器或其他类型的显示设备也可以通过诸如视频适配器48之类的接口连接到系统总线23。除了显示器47之外,计算机通常还包括其他外围输出设备(未示出),如扬声器和打印机。图1的示例性系统还包括主适配器55、小型计算机系统接口(SCSI)总线56和连接到SCSI总线56的外部存储设备62。计算机20可以使用到一个或多个远程计算机(如远程计算机49)的逻辑连接,以在联网环境中操作。远程计算机49可以是另一个人计算机、服务器、路由器、网络PC、对等设备或其它公共网络节点,并通常可包括以上对个人计算机20描述的许多或所有元件,但是在图1中只示出存储器存储设备50。图1中所描绘的逻辑连接可包括局域网(LAN) 51和广域网(WAN)52。这样的联网环境在办公室、企业范围的计算机网络、内联网和因特网中是普遍的。当用于LAN网络环境中时,计算机20可通过网络接口或适配器53连接到LAN 51。 当用于WAN网络环境中时,计算机20通常包括调制解调器M,或用于通过诸如因特网之类的广域网52建立通信的其他手段。可以是内置的或外置的调制解调器讨可通过串行端口接口 46连接到系统总线23。在联网环境中,参考计算机20所描述的程序模块,或其某些部分,可以存储在远程存储器存储设备中。可以理解的是,所示的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他手段。虽然可构想本发明的许多实施例尤其适用于计算机化的系统,然而在本说明中不意味着将本发明限于那些实施例。
计算机20的系统存储器22可以包括在由计算机20执行时使得计算机20实现本发明(诸如图5或图6的操作过程)的指令。一般地,图2描绘了可被配置成包括本发明的各方面的服务器环境的高级概览。 服务器204可以在图1的计算机20中实现,其中系统存储器22包括在由处理单元21执行时使得处理单元21执行实现本发明的操作的指令。参照该图,描绘了服务器204,所述服务器204可包括配置成实现远程呈现会话服务器的电路,或者在其他实施例中,服务器204 可包括配置成支持远程呈现连接的电路。在所描绘的示例中,服务器204可被配置成生成用于连接客户机的一个或多个会话,诸如会话1到N(其中N是大于1的整数)。简言之, 在本发明的示例实施例中,会话一般可包括由被配置成与服务器204的内核214交互的多个子系统(例如,软件代码)实现的操作环境。例如,会话可包括实例化诸如桌面窗口之类的用户界面的进程、跟踪该窗口内的鼠标移动的子系统、将图标上的鼠标点击转换成实现程序实例的命令的子系统等。会话可由服务器204在逐个用户的基础上生成,例如在服务器204通过网络连接接收来自客户机201的连接请求时由服务器204生成。一般而言,连接请求首先可由传输逻辑210处理,传输逻辑210例如可由服务器204的电路实现。在一些实施例中,传输逻辑210可包括网络适配器、可被配置成接收连接消息并将其转发给引擎212的固件和软件。如图2所示,在一些实施例中,传输逻辑210可包括每个会话的协议栈实例。一般而言,每个协议栈实例可被配置成将用户接口输出路由到客户机,以及将从客户机接收到的用户输入路由到与其会话相关联的会话核心M4。继续图2的一般性描述,在本发明的一些示例实施例中,引擎212可被配置成处理对会话的请求;确定每个会话的功能;通过为会话分配一组物理资源来生成会话;以及实例化会话的协议栈实例。在一些实施例中,引擎212可由能实现上述操作过程中的一部分的专门电路组件来实现。例如,一些示例实施例中,该电路在可包括存储器以及配置成执行实现引擎212的代码的处理器。如图2所描绘地,在一些情况下,引擎212可接收连接请求并确定例如许可证可用,并且可为该请求生成会话。在服务器204是包括远程呈现会话能力的远程计算机的情形中,引擎212可被配置成响应于连接请求生成会话而不检查许可。 如图2所示,会话管理器216可被配置成接收来自引擎212的消息,并且响应于该消息,会话管理器216可将会话标识符添加到表中;向该会话标识符指派存储器;以及在指派给该会话标识符的存储器中生成系统环境变量和子系统进程的实例。如图2所示,会话管理器216可实例化诸如运行时子系统240之类的环境子系统, 该子系统可包括诸如会话核心244之类的内核模式部分。例如,在一实施例中,环境子系统被配置成将一些服务子集展示给应用程序并向操作系统214的内核提供接入点。在示例实施例中,运行时子系统240可控制进程和线程的执行,并且会话核心244可向内核214的执行程序发送请求以向线程分配存储器并调度执行它们的时间。在一实施例中,会话核心244 可包括图形显示界面246 (⑶I)、安全子系统250和输入子系统252。在这些实施例中,输入子系统252可被配置成经由与该会话相关联的协议栈实例接收来自客户机201的用户输入并将该输入传送给合适会话的会话核心M4。在一些实施例中,用户输入可包括指示绝对和 /或相对鼠标运动命令、鼠标坐标、鼠标点击、键盘信号、操纵杆运动信号等的信号。例如图标上的鼠标双击的用户输入可被会话核心244接收,并且输入子系统252可被配置成确定图标位于与该双击相关联的坐标处。输入子系统252随后可被配置成向可执行与该图标相关联的应用的进程的运行时子系统240发送通知。除了接收来自客户机201的输入之外,还可从应用和/或桌面接收绘制命令并由 ⑶I 246来处理。⑶I 246 —般可包括能生成图形对象绘制命令的进程。在该示例实施例中,⑶I 246可被配置成将其输出传递给远程呈现子系统254,在那里,针对附连到该会话的显示驱动器,命令被格式化。在某些示例实施例中,一个或多个物理显示器可被附连到服务器204,例如在远程呈现会话情形中。在这些示例实施例中,远程呈现子系统2M可被配置成对由远程计算机系统的显示驱动器呈现的绘制命令制作镜像,并经由与该会话相关联的栈实例将镜像信息传送给客户机201。在服务器204是远程呈现会话服务器的另一示例实施例中,远程呈现子系统2M可被配置成包括可不与物理上附连到服务器204的显示器相关联的虚拟显示驱动器,例如服务器204可无头地(headless)运行。在该实施例中,远程呈现子系统2M可被配置成接收针对一个或多个虚拟显示器的绘制命令并将它们经由与该会话相关联的栈实例传送给客户机201。在本发明的实施例中,远程呈现子系统2M可被配置成确定每个显示驱动器的显示分辨率,例如确定与虚拟显示器相关联的虚拟显示驱动器的显示分辨率或与物理显示器相关联的显示驱动器的显示分辨率;以及经由相关联的协议栈实例将分组路由到客户机201。在一些示例实施例中,会话管理器216可附加地实例化与该会话的会话标识符相关联的可被配置成处理该会话的登入和登出的登入进程(有时称为登录进程)的实例。在这些示例实施例中,指示与登录进程相关联的图形用户界面的绘制命令可被传送给客户机 201,在那里,客户机201的用户可向登录屏幕输入帐户标识符(例如用户名/ 口令组合)、 智能卡标识符、和/或生物测定信息。该信息可被传送给服务器204并被路由至引擎212以及会话核心M4的安全子系统250。例如,在某些示例实施例中,引擎212可被配置成确定用户帐户是否与许可证相关联;并且安全子系统250可被配置成生成该会话的安全令牌。图3A描绘一种示例虚拟机主机(有时称为VMHost或主机),其中可以实现本发明的一实施例的方面。VMHost可以在诸如图1中所描绘的计算机20之类的计算机上实现,而 VMHost上的VM可以执行实现诸如图2的服务器操作系统214的远程呈现会话服务器的操作系统。系统管理程序(hypervisor)微内核302可以通过限制访客操作系统对系统存储器的查看来实施分区。访客存储器是由系统管理程序控制的分区对存储器的查看。访客物理地址能由系统物理地址(SPA)来支持,即,由系统管理程序管理的、物理计算机系统的存储器。在一实施例中,GPA和SPA可被安排成存储器块,S卩,一个或多个存储器页。当访客使用其页表向一个块写入时,数据实际被存储在根据系统管理程序使用的系统级页表而具有不同系统地址的块中。在所描绘的示例中,父分区组件304也可被认为是类似于某种系统管理程序实现中的“域0”,父分区组件304可以与系统管理程序微内核302交互来提供虚拟化层。本操作环境中的父分区304可被配置成通过使用虚拟化服务提供者328 (VSP)来向在子分区I-N 中执行的访客操作系统提供资源,虚拟化服务提供者有时被称为“后端驱动程序”。广泛而言,VSP 3 可用于通过虚拟化服务客户机(VSC)(有时称为“前端驱动程序”)对到硬件资源的接口进行复用,并经由通信协议与虚拟化服务客户机进行通信。如图所示,虚拟化服务客户机可以在访客操作系统的上下文中执行。这些驱动程序不同于访客中的其余驱动程序,因为向它们提供了系统管理程序而非访客。仿真器334(例如虚拟化集成驱动电子设备(IDE设备)、虚拟化视频适配器、虚拟化NIC等)可被配置成在父分区304中运行并被附连到可供访客操作系统320和322使用的资源。例如,当访客操作系统触摸虚拟设备的寄存器或映射到虚拟设备302的存储器时, 微内核系统管理程序可截取请求并将访客试图写入的值传递至相关联的仿真器。每一子分区可包括一个或多个虚拟处理器(330和33 ,访客操作系统(320和 322)可管理并调度线程以便在这些虚拟处理器上执行。一般而言,虚拟处理器是提供具有特定架构的物理处理器的表示的可执行指令以及相关联的状态信息。例如,一个虚拟机可具有带有英特尔x86处理器特性的虚拟处理器,而另一虚拟处理器可具有PowerPC处理器的特性。本例中的虚拟处理器可被映射到计算机系统的逻辑处理器,使得实现虚拟处理器的指令将受到逻辑处理器的支持。由此,在包括多个逻辑处理器的实施例中,虚拟处理器可以由逻辑处理器同时执行,同时例如其他逻辑处理器执行系统管理程序指令。分区中虚拟处理器和存储器的组合可被认为是虚拟机。访客操作系统可包括任何操作系统,诸如例如微软视窗(MICROSOFT WINDOWS) 操作系统。访客操作系统可包括用户/内核操作模式,并且可具有能包括调度器、存储器管理器等的内核。一般而言,内核模式可包括逻辑处理器中的执行模式,该执行模式授予至少对特权处理器指令的访问许可。每一访客操作系统可具有相关联的文件系统,该文件系统上存储有诸如终端服务器、电子商务服务器、电子邮件服务器等应用以及访客操作系统本身。访客操作系统可调度线程来在虚拟处理器上执行,并且可实现此类应用程序的实例。图4描绘了其中可实现此处所描述的技术的第二示例VMHost。图4描绘了与图3 的组件相类似的组件;然而,在该示例实施例中,系统管理程序338可包括微内核组件和来自图3的父分区304的组件,如虚拟化服务提供者3 和设备驱动程序324,而管理操作系统336可包含例如用于配置系统管理程序304的配置实用程序。在该体系结构中,系统管理程序338可以执行与图3的系统管理程序微内核302相同或相似的功能;然而,在该体系结构中,系统管理程序334可被配置成向在子分区中执行的客操作系统提供资源。图4的系统管理程序338可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件内,或者系统管理程序338的一部分可以由专用集成电路来实现。图5描绘了实现本发明的实施例的一个方面的示例部署。图5中描绘的主机414 可包括图3或图4的示例VM主机300,并且主机414可包括执行远程呈现会话服务器(诸如图2的远程呈现会话服务器204)的功能的VM 408,部署400包括结构控制器(fabric controller) 402、安全令牌服务 404、托管层(hosting layer) 406,VM 408-1 到 408-N,以及 VM镜像410-1到410-N。如所描绘的,存在VM 408的三个实例,尽管可以理解在实现本发明的系统中可以存在更多或更少的VM 408的实例。类似地,如所描绘的,存在VM镜像410 的三个实例,尽管可以理解在实现本发明的系统中可以存在更多或更少的VM镜像410的实例。VM 408的实例可被同源地(homogenously)配置——它们被配置成执行同一版本的操作系统并执行特定应用。部署400内可存在没有与VM 408同源地配置的其它VM。如所描绘的,VM 408的每个实例被配置成向访问部署400的客户计算机提供资源。例如,VM 408 的实例可被配置成向客户机提供远程桌面或远程应用。VM 408的每个实例具有相关联的 VM镜像410 (例如,VM 408-1具有相关联的VM镜像410_a)。VM的相关联的VM镜像包括承载执行VM时使用的指令和/或数据的存储介质。例如,VM镜像410-1可包括VM 408-1执行的访客操作系统(访客0 。VM镜像410可以通过将VM 408配置成一旦VM 408执行就加载相关联的VM镜像410并访问其上存储的指令和/或数据而与该VM 408相关联。VM 408的实例由物理主机414的托管层406托管。例如,在微软^Vzure环境中,托管层406可包括hure VM主机的实例。托管层406在物理机器上执行,并且被配置成使得 VM 408的多个实例能够在该物理机器上同时运行。托管层406向VM 408呈现虚拟操作平台,并监控VM 408(以及在VM 408内执行的访客操作系统)的执行。安全令牌服务404被配置成为部署400内的VM和其它实体(诸如结构控制器402) 创建并管理账户。即,安全令牌服务404能够将信任链(其中该安全令牌服务是该信任链的一部分)扩展到部署400内的其它实体。安全令牌服务404本身可以被认为是可信任的, 因为客户机412被配置为具有使它能够确认由安全令牌服务404发放的安全令牌的信息。 例如,客户机412可被配置为具有证书,其中安全令牌服务404使用该证书来签署它传递到 VM 408的令牌。替代地,客户机412可被配置成拥有由安全令牌服务404用于签署它所发放的令牌的证书的主题名称。VM 408可从安全令牌服务404请求令牌。在该请求中,VM 408通过提供它持有该秘密(secret)的证据来向安全令牌服务404证明其身份,其中该秘密是由结构控制器402 预配(provision)给它的。安全令牌服务404使用账户信息(诸如VM 408的公钥)确认 VM 408的身份,其中该账户信息是由结构控制器402创建的。然后安全令牌服务404向VM 408发放令牌。该令牌被签署有安全令牌服务404的私钥。然后VM 408将该令牌发送到客户机412,客户机412使用与配置客户机412所使用的安全令牌服务的证书有关的信息来确认该令牌是由安全令牌服务404签署的。一旦确认了该令牌之后,客户机412就能够核对 VM 408的令牌中宣称的身份。图5中还描绘了用于实施本发明的示例通信流。在通信流⑴中,安全令牌服务 404将其公钥发送至客户机412。这可以响应于安全令牌服务404从客户机412接收对此公钥的请求而进行。通信流(2)描绘了结构控制器402指示托管层406创建VM 408-1,并向VM 408-1传递秘密(诸如通过将其存储在VHD 410-1的一位置,其中VM 408-1被配置成在该位置寻找该秘密)。通信流C3)描绘了结构控制器402还将该秘密发送至安全令牌服务404并指示安全令牌服务404为VM 408-1创建账户。在通信流(4)中,VM 408-1向安全令牌服务404发送它具有该秘密的证据。此证据可以包括该秘密本身,但是在攻击者有可能探听用于通信流(4)的通信链路的情况下,它反而可以包括VM-I 408-1拥有该秘密的某种间接证据。例如,当秘密包括数字时,VM-I 408-1使用该秘密作为一数学函数的输入,然后将该数学函数的输出(它具有该秘密的证据)发送至安全令牌服务404。安全令牌服务404(也具有该秘密)也可以使用该秘密作为输入而执行同一数学函数,然后将其结果与它从VM-I 408-1接收的结果相比较。在它的结果与它接收的结果相匹配的情况下,安全令牌服务可以确定VM-I 408-1的确具有该秘密,并因此是该部署的有效成员,并向VM-I 408-1发送完全令牌,VM-I 408-1可使用该完全令牌向客户机证明其身份。安全令牌服务 404在发送此完全令牌之前可用其私钥签署该完全令牌,从而VM-I 408-1可以用安全令牌服务404的公钥将其解密,并证实该完全令牌是由安全令牌服务404生成的,并且在传输过程中未被修改。通信流( 描绘了客户机412接收VM-I 408-1的完全令牌。例如,这可以响应于客户机412向VM-I 408-1发送对其完全令牌的请求而进行。在另一实施例中,VM-I 408-1可以广播或以其它方式在一已知位置(诸如在部署的网关或连接中介处)提供其令牌,而客户机412可以从该位置获得该令牌。作为通信流(1)和通信流(5)的结果,客户机412现在既具有安全令牌服务304 的公钥,又具有VM-I 408-1的完全令牌。然后它可以用该公钥确认该完全令牌(并且,作为结果,确认VM-I 408-1的确具有它宣称具有的身份)。例如,在将该公钥和该完全令牌作为输入的数学函数产生已知输出(其中该已知输出与客户机412知道若VM-I 408-1的确具有它宣称具有的身份则该输出应当匹配的输出相匹配)的情况下,则客户机412可确定 VM-I 408-1的确具有它宣称具有的身份。可以理解,可以实施本发明而不必严格遵守图5中的该通信流(诸如通过实现图6 的通信流)。例如,在本发明的一实施例中,客户机412可以直到通信流(2)、(3) “4)、(5) 中的任一个已发生之后才从安全令牌服务404接收公钥(在本文中被描绘为通信流(1))。 在本发明的另一实施例中,通信流(3)(其中结构控制器402将该秘密发送至安全令牌服务 404)可在通信流O)(其中结构控制器将该秘密发送至VM 408-1)之前发生。这些示例不构成对通信流的可能性的完全的枚举。图6描绘了类似于图5的实现本发明的实施例的一个方面的另一示例部署。结构控制器40 、安全令牌服务404b、托管层40乩、VM 408-lb到408_Nb、VHD 410-lb到 410-Nb、客户机412b、以及主机414b可以分别类似于图5的结构控制器402、安全令牌服务 404、托管层 406、VM 408-1 到 408-N、VHD 410-1 到 410-N、客户机 412、以及主机 414。图6的实施例和图5的实施例的主要区别在于在图6的实施例中,安全令牌服务 404b和VM 408-lb不像图5中那样直接通信,而是使用结构控制器402b作为中介。在各实施例中,这可以是有利的,因为安全令牌服务404b需要维护更少的通信链路。其中安全令牌服务404和VM 408直接通信以向VM408呈现完全令牌的实施例可以是有利的,诸如其中令牌只对于预设的时间段是有效的,因此通过结构控制器404间接发送该令牌可能花去其中该完全令牌有效的时间的一部分。像图5的通信流一样,图6的实施例的通信流不是强制性的,并且存在可使用不同的通信流的实现本发明的其它实施例。如图6中所描绘的,在通信流IB中,客户机412b从安全令牌服务404b获得公钥, 并且在通信流4B中,客户机41 从VM-Ib 408-lb获得完全令牌。这些通信流IB和4B可以分别类似于针对图5所描述的通信流1和5。通信流2B描绘了结构控制器402b指示安全令牌服务404b为VM_lb408_lb创建账户并从VM-Ib 408-lb接收完全令牌。在其中秘密也被创建或确定的实施例中,通信流2B 包括安全令牌服务404b创建或确定该秘密,然后将其发送至结构控制器402b,或结构控制器402b创建或确定该秘密,然后将其发送至安全令牌服务404b。通信流:3B描绘了结构控制器402b发送完全令牌至VM-Ib 408_lb。在一实施例中秘密也被使用的情况下,通信流3B包括结构控制器402b发送该秘密至VM-Ib 408-lb。在 VM-Ib 408-lb具有完全令牌之后,它可在通信流4B中将该完全令牌发送至客户机412b。在通信流IB和4B之间,客户机412b既具有来自安全令牌服务404b的公钥(通信流1B),又具有来自VM-Ib 408-lb的完全令牌(通信流4B)。然后客户机412b可使用该公钥和该令牌确认VM-lb408-lb的所宣称的身份,如针对图5所描述的。图7描绘了类似于图5和图6的实现本发明的实施例的一个方面的另一示例部署。结构控制器402c、安全令牌服务4(Mc、托管层406c、VM 408_lc到408_Nc、VHD 410-lc 到410-Nc、客户机412c、以及主机4Hc可以分别类似于图5的结构控制器402、安全令牌服务 404、托管层 406、VM 408-1 到 408-N、VHD 410-1 到 410-N、客户机 412、以及主机 414。图7还描绘了部署管理416c,部署管理416c包括结构控制器402c和安全令牌服务4(Mc。部署管理416c充当包括主机4Hc的部署的管理角色,包括诸如预配VM和向VM 提供用于认证的令牌等事项。图7的实施例与图5和图6的实施例的主要区别在于在图7的实施例中,部署管理416c预配VM-Ic 408-lc、发送公钥至客户机412c、并发送完全令牌至VM-Ic 408_lc,然而例如在图5中,那些任务在结构控制器402c和安全令牌服务4(Mc间划分。在单一系统或过程自己处理这些任务的情况下,这种实施例可以出现。像图5的通信流一样,图7的实施例的通信流不是强制性的,并且存在可使用不同的通信流的实现本发明的其它实施例。如图7中描绘的,在通信流IC中,客户机412c从部署管理416c获得公钥。这可以以与图5的通信流1中客户机412如何从安全令牌服务404获得公钥的方式类似的方式进行。如图7中进一步描绘的,在通信流3C中,客户机412c从VM-Ic 408_lc获得完全令牌。这可以以与图4A的通信流5中客户机412c如何从VM-I 408-1获得完全令牌的方式类似的方式进行。如在图7中描绘的,在通信流2C中,部署管理416c预配VM-Ic 408_lc (诸如通过将要这样做的指令发送至主机414c),并且,作为这个预配动作的一部分,向VM-Ic 408-lc 发送完全令牌,其中VM-Ic 408-lc可使用所述完全令牌向诸如客户机412c等客户机证明其身份。在通信流1C、2C、和3C已发生之后,客户机412c既具有来自部署管理器416c的公钥(在通信流IC中获得),又具有来自VM-Ic 408-lc的完全令牌(在通信流3C中获得)。 然后客户机412c可使用该公钥和该令牌确认VM-lc408-lc的所宣称的身份,如针对图5所描述的。图8描绘了部署为该部署的VM建立可证明身份的示例操作过程,其可在例如图 5-7中描绘的系统中实现。图8的操作过程可以由结构控制器(诸如结构控制器402)执行。图8的操作过程开始于操作500,操作500继续至操作502。操作502描绘了在第二计算机(诸如安全令牌服务404)上为第一计算机(诸如VM-I 408-1)创建账户。操作502 可以以与图5的通信流(3)或图6的通信流QB)类似的方式实施。在其中在第二计算机上为第一计算机创建账户由第四计算机实现(诸如结构控制器40 、且其中第四计算机在第二计算机上具有账户和为其它计算机创建账户的权力的实施例中,操作502可包括通过第四计算机指示第二计算机为第一计算机创建账户。例如, 在图5中,结构控制器402可具有安全令牌服务404的账户,并具有为其它计算机创建账户的能力。操作504描绘了准备第一计算机以在通信网络上通信。预配可包括结构控制器准备第一计算机/VM以操作(诸如通过创建VM),并将该第一计算机/VM配置成具有适当的数据和软件来完成其功能。操作506描绘了向第一计算机发送包括对第一计算机的身份的声明的完全令牌, 所述完全令牌由第二计算机基于第一计算机的账户创建。该令牌可包括对该第一计算机的身份的声明。在一实施例中,操作506由第二计算机(安全令牌服务404)执行。这可以类似于图5的通信流⑷。在一实施例中,操作506包括响应于从第一计算机接收到与第一计算机在第二计算机上的账户中存储的凭证相对应的凭证,通过第二计算机向第一计算机发送完全令牌。 例如,当结构控制器402预配VM-I 408-1并且还用安全令牌服务404为VM-I 408-1创建账户时,它可向VM-I 408-1和安全令牌服务404两者均发送凭证(有时称为秘密)。然后, 当VM-I 408-1想要向安全令牌服务404证明它被授权接收针对该账户的完全令牌时,它可以向安全令牌服务404呈现该凭证(诸如通过用安全令牌服务404的公钥将其编码)。操作508描绘了发送公钥至第三计算机(诸如客户机412),其中第三计算机基于确定将第一计算机的完全令牌与公钥结合产生与第一计算机的身份相一致的结果而证实第一计算机的身份。这可包括图5的通信流(1)和(5)、图6的通信流(IB)和GB)、图7 的通信流(IC)和(3C)。当客户机412获得安全令牌服务404的公钥以及来自VM-I 408-1 的完全令牌两者时,它可以通过用该公钥处理该安全令牌以产生与第一计算机的身份相一致的已知结果而确认VM-I 408-1的身份。在一实施例中,操作508包括第三计算机决定信任该完全令牌,因为该完全令牌由第二计算机发放,其中第三计算机已确认了第二计算机的身份。第三计算机已通过确定第二计算机的域名服务名称(诸如通过DNS提供的名称)与第二计算机的证书(诸如安全套接字层——SSL——证书)中的名称相匹配而确认了第二计算机的身份。客户机 412完全信任该完全令牌可以是基于信任链的,其中该信任链从它信任的实体向下扩展至 VM-I 408-1。此链的顶部可以是域名系统(DNS)——当客户机412查询DNS以获得具有 tokenservice. contoso. com这一名称的计算机并被导向安全令牌服务404时,该信息是准确的。然后客户机412可将安全令牌服务404所呈现的证书(由证书授权机构发放或自己发放的)认证为具有与通过DNS获得的名称相同的安全令牌服务的名称。然后客户机412 可信任安全令牌服务412具有它声明具有的身份。然后这个信任链扩展到VM-1408-1,其中VM-I 408-1能够向客户机412呈现可用已信任的安全令牌服务404的公钥确认的完全令牌。操作510描绘了,在一个实施例中,其中在第二计算机上为第一计算机创建账户由第四计算机执行,并进一步包括在第二计算机上,通过第五计算机(诸如结构控制器 402的第二实例)为第六计算机(诸如VM-2 408-2)创建账户;通过第五计算机预配第六计算机;向第六计算机发送由第二计算机创建的第二完全令牌;以及其中发送公钥至第三计算机包括发送该公钥至第三计算机,以便第三计算机基于用公钥处理由第二计算机呈现的完全令牌以产生第二已知结果而证实第六计算机的身份。可存在如下情况,其中多个结构控制器402在部署中共存,且每个结构控制器被配置成与安全令牌服务404通信以代表它们预配的VM 408获得完全令牌。在操作510中,第二结构控制器402预配第二 VM(诸如VM-2 408-2)并从安全令牌服务404获得用于此第二 VM 408的第二完全令牌。操作512描绘了发送公钥至第七计算机(诸如客户机412的第二实例),从而第七计算机基于用公钥处理由第一计算机呈现的完全令牌以产生该已知结果而证实第一计算机的身份。多个客户机可使用由VM 408呈现的相同的完全令牌以及由安全令牌服务404 呈现的相同的公钥而确认VM(诸如VM-1408-1)的身份。操作514描绘了在第二计算机上为第八计算机(诸如VM-N 408-N)创建账户,预配第八计算机;向第八计算机发送由第二计算机创建的第二完全令牌;以及其中发送公钥至第三计算机包括发送该公钥至第三计算机,以便第三计算机基于用公钥处理由第八计算机呈现的完全令牌以产生第二已知结果而证实第八计算机的身份。在用其自己的完全令牌预配多个VM的情况下,这些令牌中的每一个可由客户机使用安全令牌服务404的同一公钥确认。如在操作514中描绘的,单一客户机412使用来自安全令牌服务404的一个公钥来确认两个完全令牌——一个针对VM-I 408-1,一个针对VM-N 408-N。操作过程结束于操作516。可以理解,存在不实现图8的所有操作、或者以与所描绘的顺序不同的顺序实现这些操作(或这些操作的子集)的本发明的实施例。例如,本发明的一实施例可实现操作500、502、504、506、508和516,或者本发明的一实施例可在操作 502之前实现操作504。关于图8和图9两幅图,可以理解,不是图5-7的所有元素都已在各示例中得以枚举。例如,在图5的客户机412被指代为执行任务的情况下,可以理解,本任务还可以由图 6的客户机412b或图7的客户机412c执行。图9描绘了部署为该部署的VM证实可证明身份的示例操作过程,其可在例如图 5-7中描绘的系统中实现。图9的操作过程可以由例如图5的客户机412实现,其中图5的结构控制器402实现结构控制器402的操作过程。图9的操作过程开始于操作600,操作 600继续至操作602。操作602描绘了从令牌服务获得公钥。操作604可以以与图5的通信流(1)、图6的通信流(IB)、或图7的通信流(IC)类似的方式进行。操作604描绘了从计算机获得完全令牌,该完全令牌指示该计算机的身份。操作 604可以以与图5的通信流(5)、图6的通信流(4B)、或图7的通信流(3C)类似的方式实施。操作606描绘了通过用公钥处理完全令牌以产生已知结果而确认该计算机的身份。已在操作602中获得了安全令牌服务404的公钥,并且在操作604中获得了 VM-I 408-1 的完全令牌之后,客户机412现在既有公钥又有完全令牌,并可以使用来自安全令牌服务 404的公钥确认完全令牌(并因此确认VM-1408-1的身份),其中客户机412信任安全令牌服务404。操作608描绘了以安全的关系与计算机通信。在操作606中,客户机412已确认 VM-I 408-1的身份为VM-I 408-1声明它是的身份。基于通过安全令牌服务404向下扩展到 VM-I 408-1的信任链,客户机412可信任VM-I 408-1,并且当它们通信时(诸如其中VM-I 408-1为客户机412提供远程呈现会话),这个通信可以以安全的或信任的关系进行。图9的操作过程结束于操作610。尽管已经结合各附图所示的优选方面描述了本发明,但要理解,可使用其他相似方面或者可对所述方面进行修改或添加来执行本发明的相同功能而不脱离本发明。因此, 本发明不应局限于任何单一方面,而应根据所附权利要求书的广度和范围来解释。例如,本文描述的各种过程可用硬件或软件、或两者的组合来实现。因此,所公开的各实施例的方法和装置或其某些方面或部分可采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其他机器可读存储介质等有形介质中的程序代码(即,指令)的形式。当程序代码被加载到诸如计算机等机器并由其执行时,该机器变为被配置成实施所公开的各实施例的装置。除了此处明确阐述的具体实现之外,考虑此处所公开的说明书,其它方面和实现将对本领域的技术人员是显而易见的。说明书和所示实现旨在仅被认为是示例。
权利要求
1.一种用于为第一计算机建立可证明身份的方法,包括在第二计算机上为所述第一计算机创建账户(502);配置所述第一计算机以在通信网络上通信(504);向所述第一计算机发送包括对所述第一计算机的身份的声明的完全令牌,所述完全令牌由所述第二计算机基于所述第一计算机的所述账户创建(506);以及发送公钥至第三计算机,其中所述第三计算机基于确定将所述第一计算机的所述完全令牌与所述公钥结合产生与所述第一计算机的所述身份相一致的结果而证实所述第一计算机的所述身份(508)。
2.如权利要求1所述的方法,其特征在于,在所述第二计算机上为所述第一计算机创建账户由第四计算机执行,且所述第四计算机在所述第二计算机上具有账户以及为所述第一计算机创建账户的权力,且进一步包括通过所述第四计算机指示所述第二计算机为所述第一计算机创建所述账户。
3.如权利要求2所述的方法,其特征在于,向所述第一计算机发送所述完全令牌由所述第二计算机执行。
4.如权利要求1所述的方法,其特征在于,发送公钥至第三计算机,其中所述第三计算机基于确定将所述第一计算机的所述完全令牌与所述公钥结合产生与所述第一计算机的所述身份相一致的结果而证实所述第一计算机的所述身份进一步包括所述第三计算机决定信任所述完全令牌,因为所述完全令牌是由所述第二计算机发放的,其中所述第三计算机已通过域名系统确认了所述第二计算机的身份。
5.如权利要求1所述的方法,其特征在于,所述第三计算机已通过确定所述第二计算机的域名服务名称与所述第二计算机的证书中的名称相匹配而确认了所述第二计算机的身份。
6.如权利要求1所述的方法,其特征在于,向所述第一计算机发送由所述第二计算机创建的完全令牌包括响应于从所述第一计算机接收到与所述第一计算机在所述第二计算机上的账户中存储的凭证相对应的凭证,通过所述第二计算机向所述第一计算机发送所述完全令牌。
7.如权利要求1所述的方法,其特征在于,在所述第二计算机上为所述第一计算机创建账户由第四计算机执行,并进一步包括通过第五计算机,在所述第二计算机上为第六计算机创建账户;通过所述第五计算机,将所述第六计算机配置成在所述通信网络上通信;向所述第六计算机发送包括对所述第六计算机的身份的声明的第二完全令牌,所述第二完全令牌由所述第二计算机基于所述第二计算机的所述账户创建;以及其中发送所述公钥至所述第三计算机包括发送所述公钥至所述第三计算机,其中所述第三计算机基于确定将所述第六计算机的所述完全令牌与所述公钥结合产生与所述第六计算机的所述身份相一致的结果而证实所述第六计算机的所述身份。
8.如权利要求1所述的方法,其特征在于,还包括发送所述公钥至第七计算机,以便所述第七计算机基于用所述公钥处理由所述第一计算机呈现的所述完全令牌以产生所述已知结果而证实所述第一计算机的身份。
9.如权利要求1所述的方法,其特征在于,还包括 在所述第二计算机上为第八计算机创建账户; 配置所述第八计算机以在所述通信网络上通信;向所述第八计算机发送包括对所述第八计算机的身份的声明的第二完全令牌,所述完全令牌是由所述第二计算机基于所述第八计算机的所述账户创建的令牌;以及其中发送所述公钥至所述第三计算机包括发送所述公钥至所述第三计算机,其中所述第三计算机基于确定将所述第八计算机的所述第二完全令牌与所述公钥结合产生与所述第八计算机的所述身份相一致的结果而证实所述第八计算机的所述身份。
10.一种用于为第一计算机建立可证明身份的系统,包括 至少一个处理器;以及当所述系统可操作时通信地耦合于所述至少一个处理器的至少一个存储器(22),所述至少一个存储器承载指令,所述指令在由至少一个处理器执行时使得至少一个处理器执行操作,所述操作包括在第二计算机上为所述第一计算机创建账户(502); 准备所述第一计算机以在通信网络上通信(504);向所述第一计算机发送包括对所述第一计算机的身份的声明的完全令牌,所述完全令牌由所述第二计算机基于所述第一计算机的所述账户创建(506);以及发送公钥至第三计算机,其中所述第三计算机基于确定将所述第一计算机的所述完全令牌与所述公钥结合产生与所述第一计算机的所述身份相一致的结果而证实所述第一计算机的所述身份(508)。
11.如权利要求10所述的系统,其特征在于,在所述第二计算机上为所述第一计算机创建账户由第四计算机执行,且所述第四计算机在所述第二计算机上具有账户以及为所述第一计算机创建账户的权力,且所述存储器进一步承载处理器可执行指令,所述处理器可执行指令在至少一个处理器上执行时使得至少一个处理器执行操作,所述操作包括通过所述第四计算机指示所述第二计算机为所述第一计算机创建所述账户。
12.如权利要求11所述的系统,其特征在于,向所述第一计算机发送所述完全令牌由所述第二计算机执行。
13.如权利要求10所述的系统,其特征在于,所述第三计算机已通过确定所述第二计算机的域名服务名称与所述第二计算机的证书中的名称相匹配而确认了所述第二计算机的身份。
14.如权利要求13所述的系统,其特征在于,所述证书由所述第三计算机信任的证书授权机构发放。
15.如权利要求10所述的系统,其特征在于,向所述第一计算机发送由所述第二计算机创建的完全令牌包括响应于从所述第一计算机接收到与所述第一计算机在所述第二计算机上的账户中存储的凭证相对应的凭证,通过所述第二计算机向所述第一计算机发送所述完全令牌。
全文摘要
本发明公开用于动态应用环境的可证明身份的安全部署。描述了一种用于为动态环境中的虚拟机(VM)安全地部署可证明身份的发明。在一个实施例中,结构控制器指示VM主机创建VM并向该VM发送秘密。结构控制器将同一秘密(或第二秘密,诸如公/私钥对的私钥)以及为VM创建账户的指令发送至安全令牌服务。VM向安全令牌服务呈现它拥有秘密的证据,继而接收完全令牌。当客户机连接至部署时,它从它所信任的安全令牌服务接收公钥,并从VM接收完全令牌。它用公钥确认完全令牌以确定VM具有它宣称具有的身份。
文档编号H04L9/32GK102404117SQ20111031075
公开日2012年4月4日 申请日期2011年9月30日 优先权日2010年10月8日
发明者C·桑德斯, G·M·摩尔, I·基尔卡, K·捷沃相, M·E·鲁西诺维奇, M·斯里瓦斯塔瓦 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1