背景技术
计算技术已改变了我们工作和游戏的方式。在典型的配置中,计算系统通过局部总线耦合至各种硬件设备用于优化操作。这类设备可包括,例如,磁和/或光盘驱动器、打印机、传真机、扫描仪、照相机等等。计算系统使用由硬件设备认可的标准通信协议与连接的硬件设备的每一个进行通信。
一种用于在计算系统与其各种连接的硬件设备之间进行通信的常用通信协议是并行接口标准,称为“小型计算机系统接口”(简称“SCSI”)。SCSI允许计算系统与其各种外围设备之间进行有效的数据块传输。然而,SCSI的确具有某些限制。具体地,使用SCSI的数据传输与其它数据传输机制相比相对较慢。此外,与庞大的网络相比,SCSI的电缆长度相对较短。因此,如果以最纯的形式采用SCSI,则硬件设备通常必须靠近计算系统。
对SCSI的一种实现被称为“因特网SCSI”(简称“iSCSI”)。iSCSI是一种标准,它允许标准SCSI命令和响应通过诸如以太网和因特网等任一基于IP的网络来传递。计算系统包括一“启动器”(可以是硬件或软件),它使用iSCSI标准启动与目标设备的通信。具体地,如需要,对SCSI消息进行分段,并使用因特网协议(IP)头进行封装,其中,正确地分段且封装的SCSI消息通过IP网络发送。目标设备然后使用基于IP网络上的iSCSI标准提取并执行SCSI命令,然后返回响应,如果有的话。
iSCSI标准允许SCSI命令较长距离地传送。因此,目标设备可以远离其关联的计算系统或系统。因此,目标设备可以更容易地被共享,并且不需要弄乱关联的计算系统所占用的本地空间。另外,许多典型的IP网络以高频操作。iSCSI甚至可以支持在每秒千兆比特的范围内操作的以太网。因此,iSCSI即使在较长距离上允许比简单地使用SCSI通常所允许的更高速的数据传输。
然而,通过基于IP的网络传输iSCSI命令比通过局部总线简单地使用SCSI引入更大的安全威胁。例如,iSCSI命令可能被截取、窃听或劫走。因此,对于敏感的iSCSI通信,通常使用与IP调用的IPSec兼容的安全标准,用于消息的验证和/或加密。
然而,IPSec具有许多安全配置选项。例如,IPSec支持多种加密算法、包括关于要加密消息的哪一部分以及要采用哪种类型的验证的选项。必须使用适当的IPSec安全信息配置负责与目标设备进行通信的启动器,以使该通信如所期望地被保护并可由目标设备解释。在具有多个启动器的计算系统中,通常不考虑该计算系统中的其它启动器的安全配置来配置启动器。因此,有时候在启动器的安全配置之间引起冲突。这些冲突可能会使启动器不像所预期地那样起作用,或者甚至完全不起作用。当由不同的销售商供应启动器时,这类冲突的风险将尤其重大。
因此,在其中计算系统上的多个启动器可以使用安全信息以一个启动器的安全信息不与任一其它启动器的安全信息冲突的方式来正确配置的机制将是有利的。
具体实施方式
本发明的原理涉及一种以横跨所有启动器在安全信息中没有冲突的方式在多个启动器之中方便安全配置的抽象模块。每一启动器使用一具体标准建立与一个或多个目标硬件设备的通信。抽象模块展现可用于配置任一启动器的公用接口。
抽象模块通过这一公用接口接收指示,该指示表示要配置一个启动器配置以与所选择的目标设备进行通信,并从一公用数据库检索安全信息,该数据库包括与对多个启动器的任一个配置安全相关的信息。抽象模块使用检索的信息对所选择的启动器标识安全配置,并且如果关联的安全设置不会导致与其它启动器的任一个的冲突,则使用标识的安全配置来配置所选择的启动器。因此,可以配置所选择的启动器以与目标硬件设备进行通信,而不降低其它启动器进行通信的能力。
本发明范围内的实施例包括用于承载或在其上储存计算机可执行指令或数据结构的计算机可读媒质。这类计算机可读媒质可以是可由通用或专用计算机访问的任一可用媒质。作为示例而非局限,这类计算机可读媒质可包括物理计算机可读媒质,如RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或可用来以计算机可执行指令或数据结构的形式携带或储存所期望的的程序代码手段并可由通用或专用计算机访问的任意其它媒质。
当通过网络或另一通信连接(或者硬布线、或者无线、或硬布线和无线的组合)向计算机传输或提供信息时,计算机适当地将该连接视为计算机可读媒质。由此,任一这类连接适当地称为计算机可读媒质。上述的组合也应当包括在计算机可读媒质的范围内。计算机可执行指令包括,如,促使通用计算机、专用计算机或专用处理设备执行某些功能或功能组的指令和数据。计算机可执行指令可以是,例如,二进制、诸如汇编语言的中间格式指令或甚至是源代码。尽管并非所需,但本发明将在计算机可执行指令的一般上下文环境中描述,计算机可执行指令如程序模块,由网络环境中的计算机执行。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,执行特定的任务或实现特定的抽象数据类型。
本领域的技术人员可以理解,本发明可以在具有多种类型计算机系统构造的网络计算环境中实践,包括个人计算机、手持式设备、多处理器系统、基于微处理器或可编程消费者电子设备、网络PC、小型机、大型机等等。本发明也可以在分布式计算环境中实践,其中,任务由通过通信网络连接(或者通过硬布线链路、或者通过无线链路、或通过硬布线或无线链路的组合)的本地和远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
图1以常规计算机120形式示出了可在其中采用本发明的原理的合适的计算环境。计算机120包括处理单元121、系统存储器122以及将包括系统存储器122的各类系统组件耦合至处理单元121的系统总线123。
系统总线123可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线结构的局部总线。系统存储器包括只读存储器(ROM)124和随机存取存储器(RAM)125。基本输入/输出系统(BIOS)126,包含如在启动时协助在计算机120内的元件之间传输信息的基本例程,可储存在ROM 124中。
计算机120也可包括用于对磁硬盘139进行读写的磁硬盘驱动器127、用于对可移动磁盘129进行读写的磁盘驱动器128以及用于对可移动光盘131如CD-ROM或其它光媒质进行读写的光盘驱动器130。磁硬盘驱动器127、磁盘驱动器128以及光盘驱动器130分别通过硬盘驱动器接口132、磁盘驱动器接口133和光盘驱动器接口134连接至系统总线123。驱动器及其相关的计算机可读媒质为计算机120提供了计算机可执行指令、数据结构、程序模块和其它数据的非易失存储。尽管这里描述的示例环境采用了磁硬盘139、可移动磁盘129以及可移动光盘131,然而也可以使用用于储存数据的其它类型的计算机可读媒质,包括盒式磁带、闪存卡、数字视频盘、Bernoulli盒式磁盘、RAM、ROM等等。
包括一个或多个程序模块的程序代码手段可储存在硬盘139、磁盘129、光盘131、ROM 124或RAM 125中,包括操作系统135、一个或多个应用程序136、其它程序模块137以及程序数据138。用户可以通过键盘140、定位设备142或其它输入设备(未示出),如麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等向计算机120输入命令和信息。这些和其它输入设备通常通过耦合至系统总线123的串行端口接口146连接到处理单元121。可选地,输入设备也可以通过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)。监视器147或另一显示设备也通过接口,如视频适配器148连接到系统总线123。除监视器之外,个人计算机通常包括其它外围输出设备(未示出),如扬声器和打印机。
计算机120可以在使用到一个或多个远程计算机,如远程计算机149a和149b的逻辑连接的网络化环境中操作。远程计算机149a和149b的每一个可以是另一个人计算机、服务器、路由器、网络PC、对等设备或其它公用网络节点,并通常包括许多或所有上述与计算机120相关的元件,尽管在图1中仅示出了存储器存储设备150a和150b及其关联的应用程序136a和136b。图1描述的逻辑连接包括局域网(LAN)151和广域网(WAN)152,这里示出作为示例而非局限。这类网络环境常见于办公室范围或企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机120通过网络接口或适配器153连接至局域网151。当在广域网网络环境中使用时,计算机120可包括调制解调器154、无线链路或其它装置,用于通过广域网152,如因特网建立通信。调制解调器154可以是内置或外置的,通过串行端口接口146连接至系统总线123。在网络化环境中,描述的与计算机120相关的程序模块或其部分可储存在远程存储器存储设备中。可以理解,示出的网络连接是示例性的,也可以使用通过广域网152建立通信的其它装置。
尽管图1代表了本发明的一个合适的操作环境,本发明的原理可以在能够浏览到网络站点的任一计算系统中采用。图1所示的计算系统仅为说明性的,决不表示可实现本发明的各种环境的甚至一小部分。在描述和权利要求书中,“计算系统”被被广泛地定义为任一硬件组件或能够使用软件来执行一个或多个功能的组件。计算系统的示例包括桌面计算机、膝上计算机、个人数字助理(PDA)、电话或具有处理能力的任一其它系统或设备。
图2示出了可采用本发明的原理的网络环境200。网络环境200包括可通过网络240与多个不同的目标硬件设备250进行通信的计算系统201。计算系统201可以是,例如,上述的计算机120或任一其它计算系统。
目标硬件设备250可包括任一硬件设备,如磁和/或光盘设备、打印机、传真机、扫描仪、照相机等等。在说明性实施例中,计算系统可与由水平省略号255表示的潜在的其它设备之中的目标硬件设备251到254进行通信。然而,无论是通过网络还是本地地连接到计算系统,计算系统可以能够与其它数量的目标硬件设备进行通信。
可用于与目标硬件设备进行通信的一个标准被称为因特网SCSI(简称为“iSCSI”)。如上所述,iSCSI是允许标准SCSI命令和响应通过诸如以太网和因特网的任一基于IP的网络传递的标准。SCSI是一种并行接口标准,称为“小型计算机系统接口”(简称为“SCSI”)。SCSI允许计算系统与其各种外围设备之间有效的块传输。尽管SCSI用于到计算系统的外围设备的有效块传输,然而使用SCSI的数据传输相对较慢。此外,SCSI电缆在长度上有限制。因此,SCSI本身通常用于非常本地的外围设备。另一方面,iSCSI要快得多,且允许目标硬件设备位于网络上的任一处。然而,iSCSI通信对通过网络进行通信所所固有的截听和其它安全风险更为敏感。
计算系统201包括由水平省略号234表示的潜在的其它启动器之中的多个启动器231到233,尽管计算系统201也可具有三个以下的启动器。每一启动器可以是诸如插板等硬件组件,或者可以是在运行时刻在存储器内例示的软件启动器。无论如何,配置启动器以响应于需要来自较高层模块210的通过网络与目标设备的通信的请求,通过网络240与目标设备250进行通信。启动器可以是,例如,iSCSI启动器,尽管并非所需。
较高层模块210可以是应用程序,如,应用程序136之一,或者可以是其它程序模块137之一。不管所使用的启动器如何,较高层模块210也可呈现单个统一的用户接口来使用。也可以有多个较高层模块,它们可促使任一给定的启动器与目标设备进行通信。启动器230的每一个可以是,例如,程序模块137之一。网络240可以是任一网络,或者跨越多个计算系统,或者在单个系统内。如果启动器是iSCSI启动器,网络可以是,例如,基于因特网协议(IP)的网络,包括以太网、令牌环网络、因特网等等。
如上所述,每一启动器230可具有其自己的安全配置设置。例如,如果启动器230是iSCSI启动器,安全配置设置可以是,例如,IPSec配置设置。启动器抽象模块220在任一较高层模块(如,较高层模块210)和启动器230之间进行调节,并强迫各种启动器230的任何配置设置之间的一致性。因此,启动器230保留其期望的功能,因为启动器抽象模块220确保没有安全设置冲突。
启动器抽象模块220包括抽象组件222,它包含强迫所有启动器230之间的安全配置设置一致性的逻辑。抽象组件222可通过API 223与启动器230进行通信(反之亦然)。抽象组件可通过API 221与较高层模块210进行通信(反之亦然)。可任选地,抽象组件220也可高速缓存安全信息。这一高速缓存允许不具备非易失存储器的硬件卡在每次系统加电时维持正确的安全配置。高速缓存也允许使用同样的卡来代替该卡,并且不需要使用该安全信息来对新的卡进行重编程。
每一启动器230可以在安装和/或加电过程中,或者在出现某一其它事件时,向抽象组件222注册。注册可涉及启动器的标识符以及当前安全设置上的潜在通知。在任一情况下,抽象组件222具有启动器的记录,并可以确定启动器是否需要更新的配置信息。图2的体系结构的操作以及图2的剩余的特征将参考图3来进一步地详细描述。
图3示出了用于配置计算机系统以安全地通过网络与目标设备进行通信的方法300的流程图。方法300由抽象组件222执行,它包含以避免启动器之间的冲突的方式对启动器的每一个设置安全配置设置(如,IPSec设置)的逻辑。
抽象组件222展现可用于配置多个启动器的任一个的公用接口(行动301)。这一公用接口在图2中被表示为应用程序接口(API)221。
在某一点,抽象组件222通过公用接口接收指示(行动302),该指示表示要配置从多个启动器中选择的启动器以与所选择的目标设备进行通信。该指示也可表示多个(或甚至是所有)启动器要与所选择的目标设备进行通信。该指示本身可以由抽象组件222认可的任一方式标识该目标硬件设备。例如,如果启动器230是iSCSI启动器,则该指示可使用目标硬件设备的入口或IP地址来标识该硬件。例如,可以响应于来自应用或用户的与所选择的目标设备进行通信的明确请求来提供该指示。可选地,可以在要与所选择的目标设备进行通信的任一应用或用户明确请求之前提供该指示。例如,可以在初始化计算机系统时接收指示。
在任一情况下,方法300包括一面向结果的功能性步骤(步骤310),它用于促使所选择的启动器与所选择的目标设备进行通信,使得所选择的启动器的安全配置不与其它多个启动器冲突。这一面向结果的功能性步骤可包括用于实现指定的结果的任何对应的行动。然而,在所示实施例中,步骤310包括对应的行动311到314。与如在步骤310中指定的对一个目标设备设定配置设置并发地,抽象组件222也可对其它目标设备设定配置设置,尤其是在如果为了确保启动器230之间没有冲突而需要这么做的时候。
具体地,抽象组件222从公用目录检索安全信息(行动311),该公用目录包括与启动器230的任一个的安全配置设置相关的信息。数据库可以是,例如分布式数据库,如
ACTIVE
因特网存储名服务(ISNS)数据库或者可能是诸如注册表的本地存储。包含在数据库中的信息可包括IPSec信息、询问验证协议(CHAP)或基于证书的验证信息。分布式数据库可由具有启动器抽象模块220的实例的不同于计算系统210的计算系统共享。数据库也可以是本地持久存储,其中,先前高速缓存了来自公用数据库的信息用于将来配置启动器230。数据库也可以是分布式数据库和持久存储的组合。
启动器抽象模块220然后对要被配置以与所选择的目标硬件设备进行通信的所选择的启动器标识安全配置。这一安全配置可包括从数据库检索的安全信息,并由抽象组件对其进行某些潜在的进一步处理。在某些情况下,可使用来自公用数据库的信息预配置启动器。
启动器抽象模块220然后确定标识的安全配置不会导致所选择的启动器与其它启动器的任一个冲突(行动313)。如果的确存在冲突(行动313中的是),则抽象组件222或者重配置其它启动器使得冲突被消除,或者对所选择的启动器标识另一安全配置,或者两者都完成。如果不存在冲突(行动313中的否),则抽象组件222使用标识的安全配置来配置所选择的启动器(行动314)。
IPSec安全的配置设置包括是否使用密钥、是否期望隧道模式、使用哪一加密算法以及其它已知的IPSec设置选项。抽象组件222然后可将正确的安全设置给予配置模块262。例如,如果安全信息是用于使用iSCSI进行通信的IPSec设置,则配置模块262可以是软件启动器的TCP/IP配置模块。当通信时,软件启动器可使用由操作系统提供的TCP/IP协议栈。如果启动器是硬件启动器,则硬件启动器可包括其自己的协议栈(如,其自己的TCP/IP栈),并由此可响应于来自启动器抽象模块220的指令配置其自己的存储器。当通信时,硬件启动器可使用其自己的内部TCP/IP栈。
因此,描述了一种机制,其中,抽象模块220强迫单个计算机系统上所有启动器之间的安全设置中的一致性。因此,启动器之间不引发任何冲突,而允许网络上配置的目标硬件设备和计算系统之间的安全且快速的数据传输。
本发明可以在不脱离其精神或本质特征的情况下以其它具体的形式实施。描述的实施例被认为在各方面仅作说明而非局限。因此,本发明的范围由所附权利要求书而非上述描述来指示。处于权利要求的等效技术方案的意义和范围之内的所有变化都包含在其范围之内。