專利名稱::管理防火墻服務的對象模型的制作方法
技術領域:
:本發明一般涉及計算機或網絡上的安全,尤其涉及防火墻及其管理。
背景技術:
:一般而言,防火墻是一種防止未授權用戶訪問網絡或計算機上的某些文件的電子邊界。防火墻可作為用戶計算機上的防火墻代碼提供(“主機防火墻”)。可選地,可在網絡的邊緣上提供專用防火墻(“邊緣防火墻”),該網絡與網絡之外的計算機接口,并內建了特殊的安全預防措施,以保護網絡內的計算機上的敏感文件。該思想是保護隱藏在邊緣防火墻之后的更松散管理的機器群類免遭網絡外部的用戶的攻擊。邊緣防火墻所位于的機器通常被稱為“網關”或“專用網關”。如果被配置成保護網絡免遭因特網攻擊,則該機器通常被稱為“因特網網關裝置”。防火墻使用至少三種不同安全措施的一個或多個,來控制流入和流出網絡的通信。在被稱為靜態分組過濾的第一種方法中,對照一組過濾器分析分組。被過濾器批準的分組被發送到發請求的系統;所有其它的分組被丟棄。在被稱為代理服務的第二種方法中,來自因特網的信息由防火墻檢索、對照一種政策評估、然后被發送到發請求的系統,反之亦然。在被稱為全狀態檢查的第三種較新的方法中,不檢查分組的內容,但作為替代,將分組的密鑰部分與可信信息數據庫進行比較。監控從防火墻內部傳輸到外部的信息的特定特征,然后將輸入信息與這些特征相比較。如果比較生成合理的匹配,則允許信息通過。否則它被丟棄。可使用其它通信控制,以上三種方法作為示例給出。防火墻通常是可定制的,這意味著例如可基于若干條件添加或移除過濾器。例如,可使用因特網協議(“IP”)地址來限制或阻斷通信。如果是這樣,則在一個示例中,如果網絡外部的IP地址從服務器讀取了太多的文件,則防火墻可阻斷來往于該地址的所有通信。作為另一示例,防火墻可阻斷對某一域名的所有訪問,或允許僅訪問特定域名。作為又一示例,公司可建立僅具有一個或兩個機器的網絡以處理一個或多個特定協議,并禁止所有其它機器上的這些協議。再一示例使用端口來限制通信。例如,如果服務器機器正在運行web(HTTP)服務器和FTP服務器,則web服務器通常在端口80上可用,而FTP服務器在端口21上可用。公司可阻斷端口21訪問網絡上除一個機器之外的所有機器。由此,防火墻通過審閱網絡通信,并僅允許符合防火墻的防火墻服務內部設定的政策的通信,確保了安全性。盡管上述通信控制方法對過濾通信起較好的作用,然而管理防火墻是困難的。例如,用戶可能想要對一個機器設置特定的訪問政策,但是不理解端口、分組和/或過濾器。用于指定配置防火墻的防火墻政策的現有方法通常是不直觀的,和/或需要網絡協議和實現的深入知識。
發明內容以下提出了本發明的某些實施例的簡化概述,以提供對本發明的基本理解。本概述并非本發明的廣泛綜述。它并不意味著標識本發明的關鍵/決定性元素,或描繪本發明的范圍。其唯一的目的是以簡化的形式提出本發明的某些實施例,作為對稍后提出的更詳細描述的前序。依照本發明的一個實施例,提供了一種對象模型作為用于管理網絡服務的通用框架,如防火墻服務、網絡服務質量、父母控制和網絡入侵檢測,作為非限制性示例。計算機的用戶或管理員可使用該對象模型來管理服務。例如,用戶可訪問一用戶接口,它訪問該對象模型,并且用戶可通過該用戶接口設置服務政策。另外,該對象模型可由遠程管理工具訪問,如由網絡管理員訪問。以這一方式,該對象模型可用于遠程地設置服務政策,并且單個管理員可管理多個計算機的服務。該對象模型使用戶和/或管理員無需處理涉及配置服務的許多可能的問題。該對象模型包括兩個主要名字空間政策引擎平臺和政策對象模型。政策引擎平臺是與服務政策交互的中心點和實際執行服務的內核組件。政策引擎平臺執行建立政策和將政策插入到平臺內核組件的動作。政策對象模型用于指定服務所支持的政策。政策對象模型準許高級用戶定義傳統的以分組為中心的類型的過濾政策,或準許較低級用戶使用更簡化的規則基于使用該服務的應用程序和該應用程序的用戶來開發政策。結合附圖閱讀以下詳細描述,可以清楚本發明的其它特征,附圖中圖1所示是通過網絡連接的計算機的示意圖;圖2是一般示出了可用于實現本發明的一個實施例的示例性計算機系統的示意圖;圖3所示是可依照本發明的一個實施例使用的圖2的計算機系統的體系結構的細節的框圖;圖4是一般表示可依照本防火墻政策對象模型的一個實施例產生的防火墻服務對象的圖示;圖5示出了依照本發明的一個實施例從政策對象導出的五個不同的基本抽象防火墻政策對象的示例;圖6示出了可依照本發明的一個實施例從政策條件對象導出的若干不同的政策條件類;圖7示出了可依照本發明的一個實施例從政策行動對象導出的若干不同的政策行動類;圖8是一般表示依照本發明的一個實施例的防火墻政策引擎平臺的類的框圖;圖9示出了關于圖8所示的類的更多細節;圖10是一般表示依照本發明的一個實施例使用規則編輯器對象用于創建、編輯或刪除PolicyRule的步驟的流程圖;圖11是一般表示依照本發明的一個實施例使用設置編輯器對象用于創建PolicyRule的步驟的流程圖;圖12是一般表示依照本發明的一個實施例使用規則探查器用于對象察看PolicyRule的步驟的流程圖。具體實施例方式在以下描述中,將描述本發明的各種實施例。為解釋目的,陳述了具體的配置和細節以提供對這些實施例的透徹的理解。然而,本領域的技術人員也可清楚,本發明可以不采用這些特定細節來實踐。此外,可忽略或簡化眾所周知的特征以不使所描述的實施例難以理解。在繼續本發明的各種實施例的描述之前,現在提供在其中可實踐本發明的各種實施例的計算機和網絡環境。盡管并非所需,但本發明將在諸如由計算機執行的程序模塊等計算機可執行指令的一般上下文環境中描述。一般而言,程序包括例程、程序、對象、組件、數據結構等等,執行特定的任務或實現特定的抽象數據類型。如本發明所使用的術語“程序”或“模塊”意味著單個程序模塊或一致行動的多個程序模塊。如本發明所使用的術語“計算機”和“計算裝置”包括電子地執行一個或多個程序的任一裝置,如個人計算機(PC)、手持式設備、多處理器系統、基于微處理器的可編程消費者電子產品、網絡PC、小型機、圖形輸入板PC、膝上計算機、具有微處理器或微控制器的消費者設備、路由器、網關、集線器等等。本發明也可在分布式計算環境中采用,其中,任務由通過通信網絡連接的遠程處理設備來執行。在分布式計算環境中,程序可位于本地和遠程存儲器存儲設備中。適合結合本發明的各方面的計算機網絡環境的一個示例參考圖1來描述。示例計算機網絡環境包括通過由云表示的安全網絡104彼此通信的若干計算機102。安全網絡104可包括許多眾所周知的組件,如路由器、網關、集線器等等,并允許計算機102通過有線和/或無線媒質進行通信。當通過安全網絡104彼此交互時,計算機102的一個或多個可擔當客戶機、服務器或對于其它計算機102的對等體。因此,本發明的各個實施例可在客戶機、服務器、對等體或其組合上實踐,即使本發明所包含的具體示例可能不涉及所有這些計算機類型。本示例中的安全網絡104被認為是“安全”的網絡,因為計算機102由公用防火墻保護,在本示例中被示出為因特網網關設備106。因特網網關設備106保護計算機102免遭位于公共或非安全網絡110-本示例中由云示出—上的遠程計算機108的攻擊。盡管被描述為因特網網關設備106,然而網關設備可保護安全網絡免遭其它類型的非安全網絡的攻擊,它們不必為因特網,可包括LAN、WAN或另一網絡。盡管示出具有多個計算機,然而安全網絡104可僅包括單個計算機102。另外,盡管示出非安全網絡110具有多個遠程計算機108,然而它也可僅具有一個遠程計算機。此外,盡管圖1所示的網絡同時包括安全網絡104和非安全網絡110,然而諸如計算機102的一臺計算機可在采用或不采用安全網絡104和/或因特網網關設備106的情況下直接連接到非安全網絡110。參考圖2,示出了可在其中實現此處所描述的本發明的實施例的計算機102的基本配置的一個示例。這一基本配置也可用于因特網網關設備106。然而,為便于描述,通常參考計算機102來描述本發明的實施例。在其最基本的配置中,計算機102通常包括至少一個處理單元202和存儲器204。處理單元202執行指令以實現依照本發明的各種實施例的任務。在實現這類任務時,處理單元202可向計算機102的其它部件并向計算機102外部的裝置發送電信號,以促使某些結果。根據計算機102的確切配置和類型,存儲器204可以是易失(如RAM)、非易失(如ROM、閃存等)或兩者的某一組合。這一最基本配置在圖2中由虛線206示出。計算機102也可具有另外的特征/功能。例如,計算機102也可包括另外的存儲(可移動208和/或不可移動210),包括但不限于,磁盤、光盤或磁帶。計算機存儲媒質包括以用于儲存包括計算機可執行指令、數據結構、程序模塊或其它數據的信息的任一方法和技術實現的易失和非易失、可移動和不可移動媒質。計算機存儲媒質包括但不限于,RAM、ROM、EEPROM、閃存、CD-ROM、數字多功能盤(DVD)或其它光存儲、磁盒、磁帶、磁盤存儲或其它磁存儲設備、或可以用來儲存期望的信息并可由計算機102訪問的任一其它媒質。任一這類計算機存儲媒質可以是計算機102的一部分。計算機102較佳地也包含允許裝置與其它裝置,如安全網絡104上的其它計算機102,或非安全網絡110上的遠程計算機108(在圖2中僅示出了單個遠程計算機108)進行通信的通信連接212。通信連接是通信媒質的一個示例。通信媒質通常可以諸如載波或其它傳輸機制等已調制數據信號中的計算機可讀指令、數據結構、程序模塊或其它數據來實施,并包括任一信息傳送媒質。作為示例而非局限,術語“通信媒質”包括無線媒質,如聲學、RF、紅外和其它無線媒質。本發明使用的術語“計算機可讀媒質”包括計算機存儲媒質和通信媒質。計算裝置102也可具有輸入設備216,如鍵盤/小鍵盤、鼠標、輸入筆、語音輸入設備、觸摸輸入設備等等。也可包括輸出設備218,如顯示器220、揚聲器、打印機等等。這些設備在本領域中是眾所周知的,無需在此詳細描述。在以下描述中,將參考由一個或多個計算裝置執行的行動和操作的符號表示來描述本發明,除非另外指明。由此,可以理解,這類行動和操作,有時稱為計算機執行的,包括計算機102的處理單元對以結構化形式表示數據的電信號的操縱。這一操縱轉換了數據或在計算機102的存儲器系統中的位置上維護它,從而以本領域的技術人員都理解的方式重配置或改變了計算機102的操作。維護數據的數據結構是存儲器的物理位置,具有數據的格式所定義的具體特性。然而,盡管在上述的上下文中描述本發明,它并不意味著限制,如本領域的技術人員所理解的,后文所描述的行動和操作的各方面也可以硬件實現。圖3所示是可依照本發明的一個實施例使用的計算機102的體系結構的細節的框圖。計算機102包括主機防火墻服務,由標號302指示。防火墻服務302可以是操作系統的組件或單獨的防火墻應用程序,或運行在計算機102上或與其相關聯的程序。一般而言,如本發明所使用的,“防火墻”服務是負責管理防火墻政策并將防火墻政策插入到內核組件用于實施的用戶模式服務。在所示的示例中,防火墻服務302擔當主機防火墻服務,因為防火墻服務保護它在其上運行的計算機102。防火墻服務302也可被配置成令計算機102擔當網關設備。依照本發明的一個實施例,提供了對象模型一在圖3中示出為防火墻對象模型300,作為用于管理網絡服務—在圖3所示的實施例中為防火墻服務302-的通用框架。盡管參考用于管理諸如防火墻服務302等防火墻服務的對象模型描述了本發明的實施例,然而本發明的各方面以及本發明的實施例也可用于管理計算機的其它網絡服務,如網絡服務質量、父母控制和網絡入侵檢測,作為非限制性示例。簡要描述,防火墻對象模型300使用戶和/或管理員無需處理涉及配置和管理防火墻服務302的許多可能的問題。計算機102的用戶或計算機或安全網絡的管理員可使用防火墻對象模型300來管理防火墻服務302。例如,用戶可訪問防火墻用戶接口302,它訪問防火墻對象模型300,用戶可通過該接口為防火墻服務302設置防火墻政策。防火墻用戶接口304可由例如防火墻服務302提供,或可由例如應用程序提供或作為操作系統的一部分提供。另外,防火墻對象模型300可借助遠程管理工具306,如由網絡管理員訪問。以這一方式,防火墻對象300可用于對防火墻服務302遠程地設置政策,準許單個管理員在大量計算機上管理服務。防火墻政策308在計算機102上維護或與其相關聯。在所示的實施例中,將防火墻政策308示出為數據庫,但是防火墻政策308可在若干數據庫中維護,或以另一合適的方式儲存。防火墻對象模型300包括兩個主要的名字空間防火墻政策引擎平臺310和政策對象模型312。簡要地描述,防火墻政策引擎平臺310是用于與防火墻政策308和防火墻平臺內核組件314交互的中心點。防火墻平臺內核組件314,如TCP/IP或網絡棧,是實際執行過濾分組或來自計算機102的其它信息的功能的內核組件。防火墻政策引擎平臺310執行創建和配置政策的動作,如后文進一步描述的。政策對象模型312用于指定防火墻服務302支持的防火墻政策。政策對象模型312準許高級用戶定義傳統的以分組為中心類型的過濾政策,或準許較低級的用戶基于應用程序和應用程序的用戶定義政策,如后文進一步描述的。防火墻對象模型300使用面向對象的范式,其中,可管理對象使用類和實例的概念來模型化。防火墻對象模型300中出現的對象是類、實例、屬性和限定詞。類是對象的模型或模板,而實例是類的體現,屬性是類或實例的個別字段,限定詞是這些的任一個的修飾詞。政策對象模型312可用于定義政策對象,它們是指定防火墻服務的安全行動的規則。防火墻政策引擎平臺310包括可在政策對象上執行諸如創建、刪除或修改等動作的活動對象。圖4示出了一般表示可依照防火墻政策對象模型312的一個實施例產生的防火墻服務對象的圖示。PolicyObject(政策對象)對象400是防火墻對象模型300中使用的對象的抽象基類。它具有三個主要的子類PolicyRule(政策規則)402、PolicyAction(政策行動)404以及PolicyCondition(政策條件)406。PolicyRule402將規則模型化,并且在給出的示例中包括五個不同的屬性。第一個屬性Contidion(條件)定義為了使該規則中的一個行動發生要匹配的一個或多個條件。這些條件可由PolicyCondition類表示,如后文進一步描述的。第二個屬性Action(行動)定義了當匹配該規則中指定的一個或多個條件時所采取的一個或多個行動。這些行動可由PolicyAction類來表示,如后文進一步描述的。第三個屬性TimeConstraint(時間約束)指定了該規則有效的一周中的日和一天中的時間,如上午9點—下午5點,周一—周五。第四個屬性NetworkLocation(網絡位置)指定了該規則有效的網絡位置。第五個屬性Weight(權值)指定了該規則的權值,并由防火墻政策引擎平臺310用于解決規則沖突。TimeConstraint、NetworkLoaction和Weight屬性可由用戶或管理員例如通過防火墻用戶接口304或遠程管理工具306來編輯。PolicyRule402是抽象類,并可從其導出基礎抽象防火墻政策對象。圖5示出了從PolicyRule402導出的五個不同的基礎防火墻政策對象的示例。如有需要,可導出其它對象以反映由某些網絡政策,如服務質量(QoS)或父母控制政策施加的其它約束。圖5示出的這五個基礎防火墻政策對象是TransportRule(傳輸規則)502、KeyingModule(密鑰模塊)504、IKERule(IKE規則)506、IPSecRule(IPSec規則)508以及ApplicationRule(應用程序規則)510。關于這些示例導出政策規則類的細節包括在展示A中。依照本發明的一個實施例,防火墻服務302能夠在分組通過網絡棧時在若干不同的層上檢查分組。例如,防火墻服務302可包括IP幀構造層過濾器、TCP層過濾器、傳輸層過濾器、應用層過濾器、遠程過程調用層過濾器以及提供較低層過濾的許多其它過濾器,使得項目在其被阻斷之前不必要通過整個棧。這類防火墻服務302被設計成在微軟的將要發行的LONGHORN操作系統中實現。可向第三方提供應用編程接口,以允許第三方參與在各個層上發生的過濾決策。這些過濾器的具體實現細節對描述本發明并非必需。然而,可配置基礎抽象防火墻政策對象,以在每一相應的層上用這些特定的過濾器來操作。TransportRule502將主要在標準5元組上過濾的傳統防火墻規則模型化。IPSecRule508、KeyingModule規則504和IKERule506是用于指定與IPSec相關的政策的三個不同的規則。如已知的,IPSec是提供在諸如因特網等未受保護的網絡上傳輸敏感信息的安全的協議。IPSec擔當網絡層,保護并驗證參與設備之間的IP分組。IPSecRule508、KeyingModule規則504以及IKERule506的細節在本發明所附加的展示A中給出。ApplicationRule510使用2003年6月25日提交的名為“協助應用程序穿過防火墻的方法(MethodofAssistingandApplicationtoTraverseaFirewall)”的美國專利申請號10/603,648中揭示的方法。簡要地描述,該申請描述了一種可用于網絡棧的應用層(“ALE”),使得用戶可容易地創建簡單的防火墻政策或網絡訪問政策,以允許或拒絕用戶計算機上的防火墻不知曉的應用程序和服務連接到網絡。政策在每一用戶和每一應用程序的基礎上設置。用戶不需要知道或使用規則報告、協議或IP地址來使應用程序穿過防火墻工作。實施模塊包括監視應用程序和服務對網絡棧的連接并偵聽其嘗試的截取模塊。截取模塊俘獲這些嘗試,并確定哪一用戶正在作出該嘗試、哪一應用程序或服務正在作出該嘗試,然后執行防火墻政策查找以確定該用戶和/或應用程序是否被允許連接到該網絡。如果是,則截取模塊可指令主機和/或邊緣防火墻配置其自身用于請求的連接。PolicyCondition對象406是可從其導出政策條件類的抽象對象。每一政策條件類表示防火墻服務302會遇見的模式或情況。圖6示出了可依照本發明的一個實施例從PolicyCondition對象406導出的若干不同的政策條件類。這些政策條件類的每一個表示不同的模式或條件,如IP條件、傳輸條件、應用條件或當試圖使用防火墻服務302時存在的其它模式。從PolicyCondition406導出的類具有子類。例如,作為示例,傳輸條件可包括TCP條件、ICMP條件、UDP條件。圖6所示的這些條件類的描述包括在展示B中。再一次,當采用上文描述的政策對象時,條件可涉及對防火墻服務302可用的過濾器。眾多不同的政策行動可用于政策對象模型312。從PolicyAction類404導出的不同的政策行動類的示例在圖7中示出。一般而言,允許的行動有Permit(準許),它允許匹配相關聯的條件的分組;Deny(拒絕),它丟棄不匹配相關聯的條件的分組;以及Log(記錄),它記錄匹配相關聯的條件的分組。也可使用這些的組合。可提供更復雜的行動,如驗證。圖7所示的行動的許多示例的描述包括在展示C中。如圖8中所見到的,依照本發明的一個實施例,防火墻政策引擎平臺310包括四個主要的類防火墻類對象802、設置編輯器類對象804、規則編輯器類對象806以及規則探查器類對象808。防火墻類對象802是用于與防火墻服務302交互的主類。防火墻類對象802允許單獨的模式引用防火墻服務302。即,該類唯一地僅描述了單個實例,即計算機102上可用的防火墻服務。防火墻類對象802的示例屬性和方法的列表作為防火墻政策引擎平臺310的一部分在圖9中示出。對于防火墻類對象802,依照本發明的一個實施例,防火墻類對象802包括屬性FirewallMode(防火墻模式)和LogSettings(記錄設置)。FirewallMode是防火墻服務302的當前過濾模式。其值可以是,例如,BlockAllTraffic(阻斷所有的通信)、PermitAllTraffic(準許所有的通信)或Filtering(過濾),它表示防火墻服務302正在運行并實施已定義的設置。LogSettings可表示指定記錄設置的全局設置,包括要記錄的內容、記錄限制和溢出行為。這些屬性的每一個都是可編輯的,例如可通過防火墻用戶接口304或遠程管理工具306來編輯。其它屬性可作為防火墻類對象802的一部分包括在內。防火墻類對象802也可包括例示或創建防火墻政策引擎平臺310的其它三個類的新實例的方法或操作;即,設置編輯器類對象804(AcquireSettingEditor)、規則編輯器類對象806(AcquireRuleEditor)和規則探查器類對象808(AcquireRuleExplorer)。防火墻類對象的配置的一個示例包括在展示E中。方法AcquireSettingEditor、AcquireRuleEditor和AcquireRuleExplorer的每一個使用政策提供者作為參數。依照本發明的一個實施例,防火墻類對象802在多個政策提供者的政策之間存在沖突時擔當仲裁者。一般而言,政策提供者是用于防火墻服務302的防火墻政策的來源,較佳地為可被安全地標識的來源。政策提供者與特定的優先級類或可在其上添加來自該提供者的所有規則的層相關聯。例如,政策提供者可依照其個別的優先級來分級。遠程網絡安全管理服務器,如管理用戶的計算機作為增值服務的用戶的因特網服務提供商(ISP)可獲得等級“1”,指示最高優先級,并可給予其在ManagedServiceProvider(已管理服務提供者)的防火墻類對象802中的定義。LocalProvider(本地提供者)被給予優先級“2”,表示計算機的本地用戶或管理員。DomainProvider(域提供者)是用戶所掛連的域的管理員,并接收優先級“3”。應用程序提供者可被給予優先級“4”。由應用程序提供者設置的優先級的一個示例是具有需要所有對其服務器的通信都為安全的設置的金融服務應用程序。設置編輯器類804可包括若干屬性,包括ApplicationSettings(應用程序設置)、DefaultApplicationSetting(默認應用程序設置)、DefaultOSServiceSetting(默認OS服務設置)、TrustedZone(可信區)、SecureZone(安全區)和IsICMPAllowed(是否允許ICMP)。ApplicationSettings屬性表示儲存在系統中的應用程序防火墻規則。DefaultApplicationSetting是當未指定應用程序的防火墻設置時所應用的默認防火墻設置。DefaultOSServiceSetting是當未指定操作系統服務的防火墻設置時所應用的默認防火墻設置。TrustedZone屬性是當應用程序設置未指定其自己的可信IP地址時所使用的可信因特網協議(“IP”)地址列表。SecureZone屬性是當應用程序設置未指定其自己的可信已驗證的遠程身份時所使用的默認可信已驗證的遠程身份列表。最后,IsICMPAllowed屬性指示是否允許因特網控制消息協議(“ICMP”);如,TCP/IP棧將響應查驗并生成ICMP錯誤。否則,阻斷ICMP消息。所有這些屬性可以是可編輯的,例如,可通過防火墻用戶接口304或遠程管理工具306來編輯,除ApplicationSettings屬性之外。圖9所示的設置編輯器804的示例包括兩個方法SetDefaultSecurityLevel(設置默認安全級別)和GetSecurityLevel(獲取安全級別)。SetDefaultSecurityLevel的參數是用戶(User)和安全級別(SecurityLevel)。GetSecurityLevel的參數是用戶(User)。SetDefaultSecurityLevel允許用戶或管理員對由參數指定的用戶設置默認安全級別。GetSecurityLevel允許用戶或管理員獲取對參數所指定的用戶的默認安全級別。設置編輯器類對象804向防火墻和政策管理軟件開發者提供了以簡單且以應用程序和用戶為中性的形式管理防火墻政策的編程接口。它所操作的主要對象是ApplicationSetting(應用程序設置)902和SecurityLevel(安全級別)904。ApplicationSetting902將安全級別與應用程序和用戶相關聯,并包括三個屬性ApplicationID(應用程序ID)、User(用戶)和SecurityLevel(安全級別)。ApplicationID和User表示該ApplicationSetting902所涉及的應用程序,以及對其指定ApplicationSetting的用戶。它們一起形成了ApplicationSetting902的唯一密鑰。SecurityLevel是讀寫屬性,它可由用戶或管理員如通過防火墻用戶接口304或遠程管理工具306編輯。該屬性表示當特定的用戶(User)使用特定的應用程序(ApplicationID)時的安全級別。SecurityLevel可由SecurityLevel對象904使用ApplicationSetting902的GetRules(獲取規則)方法來提供。GetRules對象使用參數Application(應用程序)、User(用戶)和Contacts(聯系人)來獲取實施設置“當該用戶使用該應用程序時將該安全級別用于這些遠程聯系人”的應用程序規則列表。依照本發明的一個實施例,SecurityLevel對象904包括一組模板,它包括用于應用程序、用戶和聯系人的特定安全級別的應用程序規則列表。關于SecurityLevel對象904和ApplicationSetting的更多信息在展示D中提供。RuleEditor(規則編輯器)類806是由高級政策提供者用于執行諸如添加、移除或更新政策等政策相關操作的應用編程接口。如上所述,在單個主機上可存在一個以上政策提供者。RuleEditor類對象806提供允許管理員和有能力的用戶為防火墻服務302的政策規則定義專用參數。圖9中的RuleEditor類對象806的示例包括兩個屬性PriorityClass(優先級類別)和Provider(提供者)。PriorityClass是如上所述向特定的提供者給予的優先級的類別。Provider是請求行動的提供者。圖9的RuleEditor類對象806的示例包括五個方法AddRule(添加規則)、RemoveRule(移除規則)、UpdateRule(更新規則)、GetRules(獲取規則)和RemoveAll(移除所有)。AddRule用于向防火墻政策引擎平臺310下推(pushdown)一組政策規則。如果PolicyRule無效(如,PolicyAction不與PolicyCondition相匹配)、如果試圖添加政策的提供者不具有執行這一行動的特權(例如,基于上述分級)、或者如果事務被中止,則添加PolicyRule(政策規則)的請求會失敗。如果添加PolicyRule的請求不失敗,則防火墻政策引擎平臺310進而向防火墻平臺內核組件314插入新的政策。RemoveRule用于移除指定的政策,并包括要移除的特定政策的參數,并且可由于不正確的特權或事務失敗而失敗。UpdateRule用于改變先前所添加的指定政策,并使用要改變的政策作為參數。UpdateRule服從與AddRule一樣的例外。RemoveAll移除該特定政策提供者創建的所有政策,并且可由于不適當的特權而失敗。它可以是原子操作,即,用一個事務來完成。規則探查器類對象808準許用戶或管理員遵照特權規定察看當前在防火墻平臺中的所有政策。依照本發明的一個實施例,察看是只讀的。在圖9的規則探查器類對象808的示例中,存在一個事件RuleChangedEvent(規則改變事件)。RuleChangedEvent用于規則探查器類對象808在它所察看的政策被改變時接收通知。在圖9的規則探查器類對象808的示例中,存在一個屬性-EventFilter(事件過濾器)。EventFilter準許用戶或管理員定義要察看的政策的子集。存在單個方法GetRules(獲取規則),它獲取當前依照EventFilter在防火墻平臺中實施的規則。該操作可在單個事務中完成。圖10是一般表示依照本發明的一個實施例使用RuleEditor對象806創建、編輯或刪除政策規則的步驟的流程圖。這些步驟可例如通過與防火墻用戶接口304或遠程管理工具306相關聯的軟件來執行。在步驟1000開始,創建防火墻類802。用戶然后在步驟1002使用防火墻類802中相應的方法請求獲取RuleEditor類。在步驟1004,確定該用戶是否正在請求刪除一個或多個政策。如果是,則步驟1004分支到步驟1006,用戶提供特定的政策作為參數。在步驟1008,例如通過將用戶的提供者等級(如上所述)與刪除特定政策所需的最小等級相比較,確定該用戶是否具有權限來刪除政策。如果用戶不具有權限,則1008分支到步驟1010,事務失敗。如果用戶的確具有權限,則步驟1008分支到步驟1012,刪除政策。如果用戶希望編輯或添加政策,則步驟1004分支到步驟1014。用于編輯政策的方法與添加略有不同,但是其相似性足以使兩者在此一起描述。圖10所示的從1014開始步驟針對添加政策,并且在下文進一步描述其與編輯顯著的差異。例如,如果用戶正在編輯政策,則在步驟1014之前,用戶提供政策作為參數,使其能夠得以編輯。在步驟1014,用戶從現有的政策類,如圖5所示的規則502-510導出或選擇政策類。在步驟1016,用戶從可用政策條件中選擇條件,或導出新政策條件。在步驟1018,用戶對要建立的政策規則選擇行動或導出新政策行動。如果用戶是在編輯現有政策而非創建政策,則步驟1014-1018可涉及選擇一個不同的政策類、條件和/或行動而非從零開始。在步驟1020,確定特定的用戶是否具有權限來提交新政策。這一確定可類似于步驟1008中作出的確定來作出。如果不是,則步驟1020分支到步驟1022,事務失敗。如果用戶的確具有權限,則步驟1020分支到步驟1024,確定是否允許特定的政策。例如,可依照由政策類設置的規則確定特定的條件是否與行動相匹配。如果不是,則步驟1024分支到步驟1026,事務失敗。如果是,則步驟1024分支到步驟1028,由防火墻政策引擎平臺310將政策插入到防火墻平臺內核組件314中。圖10所示的方法準許高級用戶為計算機102建立防火墻政策。高級用戶可依照計算機102的過濾需求來設置防火墻政策。圖11是一般表示使用設置編輯器對象804創建政策規則的步驟的流程圖。在步驟1100開始,創建防火墻類802。在步驟1102,通過防火墻類802中提供的方法獲取設置編輯器對象。由于應用程序和用戶都已知,在步驟1104,應用程序設置902為已知的應用程序和已知的用戶提供可用安全級別,并且向用戶提供一個或多個安全級別。用戶在步驟1106選擇安全級別之一。如果用戶未被授權來設置這一安全級別,則步驟1108分支到步驟1110,事務失敗。如果用戶的確具有權限,則步驟1108分支到步驟1112,防火墻政策引擎平臺310向防火墻平臺內核組件314插入該政策。如所見的,圖11的方法為并非高級的用戶提供了一種相對簡單的方法來對設置計算機102的防火墻政策。該政策可在沒有端口、分組或其它項目的知識的情況下設置,通常必須輸入這些知識來配置防火墻。圖12是一般表示依照本發明的一個實施例使用規則探查器對象808察看政策規則的步驟的流程圖。在步驟1200開始,創建防火墻類802。在步驟1202,使用防火墻類802中關聯的方法獲取RuleExplorer對象808。在步驟1204,提供用戶想要看見的規則的適當參數(如,特定提供商創建的所有規則)。在步驟1206,提供規則用于由用戶如通過防火墻用戶接口304來察看。盡管未在圖12中示出,通過RuleExplorer對象808察看規則可能需要驗證,并且由此,它可被限于特定級別和更高級別提供商。另外,如果對規則作出改變,可通過RuleChangeEvent屬性向用戶發送這些改變的通知。本發明所引用的所有參考,包括出版物、專利申請和專利通過引用結合于此,其意義與在每一申請被個別并具體地指示為通過引用個別結合并以其整體闡明的意義相同。描述本發明的上下文中術語“一”、“一個”和“該”以及類似的參照詞的使用(尤其是在所附權利要求書中)被解釋為覆蓋了單個和多個形式,除非在此另外指明或與上下文明確地抵觸。術語“由……組成”、“具有”、“包括”和“包含”被解釋為開放式術語(即,意味著“包括,但不限于”),除非另外指明。本發明的數值范圍的列舉僅旨在擔當個別地涉及落入該范圍內的每一單獨數值的簡寫方法,除非在本發明中另外指明,并且每一單獨的數值被結合進本說明書中,如同它是在本發明中個別地引用一樣。本發明描述的所有方法可以任一合適的順序執行,除非另外指明或與上下文明顯地抵觸。本發明所提供的任一或所有示例,或示例性語言(如,“諸如”)的使用旨在僅更好地闡明本發明的實施例,并非在本發明的范圍上施加限制,除非另外聲明。本說明書中沒有什么言詞應當被解釋為指示任一未要求保護的元素對本發明的實踐是必需的。此處描述了本發明的較佳實施例,包括對發明人已知的用于實現本發明的最佳模式。在閱讀了以上描述之后,這些較佳實施例的變化對本領域的普通技術人員是顯而易見的。發明人期望技術人員在適當時采用這些變化,并且發明人預期本發明除此處所具體描述的之外的場合實踐。因此,本發明包括適用法律所準許的所附權利要求書中敘述的主題的所有修改和等效技術方案。此外,所有可能的變化中的上述元素的任一組合也由本發明包含在內,除非另外指明或與上下文明確地抵觸。展示ASystem.Firewall.Policy.ApplicationRulenamespaceSystem.Firewall.Policy{publicclassApplicationRulePolicyRule{publicApplicationRule();publicApplicationRule(ApplicationConditoncondition,ApplicationActionact);publicApplicationConditionApplicationCondition{get{}set{}}publicApplicationActionAction{get{}set{}}}}ApplicationRule是由應用程序層實施所實施的規則,盡管它也可動態地在其它層上例示,如傳輸層上的IPSec規則,以保護某一應用程序或用戶的所有通信。System.Firewall.Policy.TransportRulenamespaceSystem.Firewall.Policy{ publicclassTransportRulePolicyRule { publicTransportRule(); publicTransportRule(TransportConditoncondition,FilterActionact); publicTransportConditionTransportCondition{get{}set{}} publicFilterActionAction{get{}set{}} }}TransportRule將主要在標準5元組上過濾的傳統防火墻規則模型化。System.Firewall.Policy.IKERulenamespaceSystem.Firewall.Policy{ publicclassIKERulePolicyRule { publicIKERule(); publicIKERule(IPAddressValuesrc,IPAddressValuedst,IKEActionact); publicIPAddressValueSourceAddress{get{}set{}} publicIPAddressValueDestinationAddress{get{}set{}} publicIKEActionAction{get{}set{}}; }}有三種不同的規則用于指定與IPSec相關的政策IPSecRule、KeyingModuleRule和IKERule。IPSecRule在傳輸層上添加,其中匹配的通信觸發IPSec呼出。IPSec呼出設置分組中的安全上下文,使得IPSec模塊可被調用來搜索現有的SA以保護通信。如果沒找到,則匹配KeyingModuleRule以找出正確的密鑰模塊來執行密鑰協商。根據所選擇的密鑰模塊,將匹配對應的IKERule或Mamierule,以找出用于執行密鑰交換的適當的配置設置。然后將再次匹配IPSecRule以設立用于實際保護通信的正確的IPSecSA,如AH或ESP。IKERule指定了實現IKE密鑰協商協議的參數。IKERule只能采用本地地址和遠程地址作為其條件。IKERule的行動是IKEAction。System.Firewall.Policy.IPSecRulenamespaceSyetem.Firewall.Policy{ publicclassIPSecRulePolicyRule { publicIPSecRule(); publicIPSecRule(IPAddressValuesrcAddr,IPAddressValuedstAddr, ByteValueprotocol,UInt16ValuesrcPort,UInt16ValuedstPort IPSecActionaction);<!--SIPO<DPn="16">--><dpn="d16"/> publicIPAddressValueSourceAddress{get{}set{}} publicIPAddressValueDestinationAddress{get{}set{}} publicByteValueProtocol{get{}set{}} publicUInt16ValueSourcePort{get{}set{}} publicUInt16ValueDestinationPort{get{}set{}} publicIPSecActionAction{get{}set{}}; }}概念上,IPSecRule扮演兩個不同的角色,一個在匹配關聯的條件時觸發IPSec,另一個指示保護匹配通信的配置參數。因此,它既指定了需要保護哪些分組,也指定了如何保護它們。不同的5元組可具有不同的IPSEc參數。盡管在傳輸層上,防火墻平臺可匹配比標準5元組更多的字段,如TCP標志,然而為實現IPSec目的,5元組已足夠。因此,IPSecRule僅列出標準5元組,即源地址、目標地址、協議、源端口和目標端口,作為其條件字段。如果有需要匹配同一5元組的通信基于其它字段被不同地保護的實際情況,則可添加那些字段。System.Firewall.Policy.KeyingModuleRulenamespaceSystem.Firewall.Policy{ publicclassKeyingModuleRulePolicyRule { publicKeyingModuleRule(); publicKeyingModuleRule(IPAddressValuesrcAddr,IPAddressValue dstAddr,ByteValueprotocol,UInt16ValuesrcPort,UInt16Value dstPort,KeyingModuleActionaction); publicIPAddressValueSourceAdress{get{}set{}} publicIPAddressValueDestinationAddress{get{}set{}} publicByteValueProtocol{get{}set{}} publicUInt16ValueSourcePort{get{}set{}} publicUInt16ValueDestinationPort{get{}set{}} publicKeyingModuleActionAction{get{}set{}}; }}KeyingModuleRule在沒有到遠程對等體的安全通道(關聯)時選擇那個密鑰協商模塊來使用,遠程對等體可以是主機或用戶。KeyingModuleRule也采取標準5元組作為其條件。在有一個以上模塊可用的情況下,例如,除傳統的IKE之外還有用于用戶驗證的Mamie,則KeyingModuleAction以并行或串行嘗試列出它們直到它們的其中之一成功或都失敗。展示BSystem.Firewall.Policy.PolicyConditionnamespaceSystem.Firewall.Policy{ publicabstractclassPolicyConditionPolicyObject { publicabstractboolEquals(PolicyConditioncondition); publicabstractboolIntersects(PolicyConditioncondition); publicabstractboolContains(PolicyConditionconditon); }}方法名字Equals返回類型Bool描述如果匹配該PolicyCondition對象的所有分組也匹配傳遞的自變量condition并且反之亦然,則返回真。否則返回假。參數PolicyConditioncond方法名字Intersects返回類型Bool描述如果存在匹配該PolicyCondition對象也匹配傳遞的自變量condition的分組,則返回真。如果沒有這樣的分組,則返回假。參數PolicyCondition方法名字Contains返回類型Bool描述如果匹配傳遞自變量condition的所有分組也匹配該PolicyCondition對象,則返回真。否則返回假。參數PolicyConditionSystem.Firewall.Policy.EthernetConditionnamespaceSystem.Firewall.Policy{ publicabstractclassLinklayerConditionPolicyCondition { publicenumLinkLayer { InboundTop, OutboundTop, InboundBottom, OutboundBottom } //屬性 publicLinkLayerLayer{get{}set{}} } publicclassEthernetConditionPolicyCondition { publicMACAddressValueSourceMACAddress{get{}set{}} publicMACAddressValueDestinationMACAddress{get{}set{}} publicEthernetCondition(); pubiicEhternetCondition(LinkLayerlayer,MACAddressValuesrc,dst); publicoverrideboolEquals(PolicyConditionval); publicoverrideboolIntersects(PolicyConditionval); publicoverrideboolContains(PolicyConditionval); }}屬性名字Layer描述指定該鏈路層規則將應用到何處·InboundTop該層在每一接收的分組橫穿過所有其它的NDIS輕量過濾器填隙片之后被調用。在接收路徑上,這是在其數據鏈路分組被傳遞到網絡層用于處理之前對其進行過濾的最后一次機會。·OutboundTop該層在每一發送分組穿過任一其它NDIS輕量過濾器填隙片之前被調用。在發送路徑上,這是在數據鏈路分組由其它NDIS輕過濾器處理之前對其進行過濾的第一次機會。·InboundBottom該層在每一接收分組穿過任一其它NDIS輕過濾器填隙片之前被調用。該層是過濾接收分組的第一次機會。·OutboundBottom該層在每一發送分組穿過所有其它的NDIS輕過濾器填隙片之后被調用。該層是過濾發送分組的最后一次機會。訪問權限讀/寫屬性名字SourceMACAddress描述該值用于匹配以太網頭部中的源MAC地址字段。訪問權限讀/寫屬性名字DestinationMACAddress描述該值用于匹配以太網頭部中的目標MAC地址字段。訪問權限讀/寫System.Firewall.Policy.IPConditionnamespaceSystem.Firewall.Policy{ publicclassIPConditionPolicyCondition { publicenumIPLayer InboundIPPacket, OutboundIPPacket, InboundIPFragment, OutboundIPFragment, IPForward };<!--SIPO<DPn="21">--><dpn="d21"/> publicIPLayerLayer{get{}set{}} publicIPAddressValueSourceAddress{get{}set{}} publicIPAddressValueDestinationAddress{get{}set{}} publicByteValueProtocol{get{}eet{}} publicUInt16ValuePacketLength{get{}set{}} publicNetworkInterfaceInterface{get{}set{}} //可以有更多的條件由防火墻平臺來展現 publicIPCondition(); publicIPCondition(IPLayerlayer,IPAddressValuesrc,dst,ByteValue prot); publicoverrideboolEquals(PolicyConditioncondition); publicoverrideboolIntersects(PolicyConditioncondition); publicoverrideboolContains(PolicyConditioncondition); }};IPAddress類取自System.Net名字空間。它支持v4和v6IPAddress。然而,對于一個特定的條件,在一個地址家族的上下文中必須解釋所有條件字段。換言之,如果源地址是v4地址,但是目標地址是v6地址,則會引發運行時異常。屬性名字Layer描述應用該條件的具體IP層。可能的IP層如下·InboundIPPacket該層正好在IP頭部被分析之后且在IP分組上發生任一其它頭部處理之前被調用。IPSec描述和重新組合在這一點上不會出現。·OutboundIPPacket該層正好在發送分組被評估來分段之前被調用。在調用該層時,所有IP頭部處理都已完成,并且所有擴展頭部在適當的位置。IPSec驗證和加密在這一時刻已發生。·InboundIPFragment該層對每一接收到的片段調用。所接收的未分段的分組將不對該層呼出。·OutboundIPFragment該層對每一發送和轉發分段調用。如果發送IP分組未分段,則它不對該層呼出。·IPForward該層對每一轉發的分組調用。訪問權限讀/寫屬性名字SourceAddress描述該值用于匹配IP頭部中的源地址字段。訪問權限讀/寫屬性名字DestinationAddress描述該值用于匹配IP頭部中的目標地址字段。訪問權限讀/寫屬性名字Protocol描述該值用于匹配IP頭部中的協議字段。訪問權限讀/寫屬性名字PacketLength描述該值用于匹配IP頭部中的分組長度字段。訪問權限讀/寫屬性名字NetworkInterface描述指定在其上匹配該條件的網絡接口。如果層屬性被設為IPForward,則當規則方向被設為Inbound時,它僅匹配轉發分組的接收接口,且當規則方向被設為Outbound時,它僅匹配輸出接口。訪問權限讀/寫System.Firewall.Policy.TransportConditionnamespaceSystem.Firewall.Policy{ publicabstractclassTransportConditionPolicyCondition { publicenumTransportLayer Inbound, Outbound }; //以下是通過上下文在傳輸層上可用的條件 PublicTransportLayerTransportLayer{get{}set{}} publicIPAddressValueSourceAddress{get{}set{}} publicIPAddressValueDestinationAddress{get{}set{}} publicByteValueProtocol{get{}set{}} //可以有更多的條件由防火墻平臺來展現 protectedTransportCondition(); protectedTransportCondition(TransportLayerlayer,IPAddressValuesrcAddr,IPAddressValuedstAddr); } publicclassUDPConditionTransportCondition { publicUInt16ValueSourcePort{get{}set{}} publicUInt16ValueDestinationPort{get{}set{}} publicUDPCondition(); publicUDPCondition(TransportLayerlayer,IPAddressValue srcAddr,IPAddressValuedstAddr,UInt16ValuesrcPort, UInt16ValuedstPort); publicoverrideboolEquals(PolicyConditionval); publicoverrideboolIntersects(PolicyConditionvalval); publicoverrideboolContains(PolicyConditionval); } publicclassTCPConditionTransportCondition<!--SIPO<DPn="24">--><dpn="d24"/> { [flags] publicenumTCPFlags { FIN=1, SYN=2, RST=4, PSH=8; ACK=16, URG=32 } publicUInt16ValueSourcePort{get{}set{}} publicUInt16ValueDestinationPort{get{}set{}} publicTCPFlagsFlags{get{}set{}} //可以有更多的條件由防火墻平臺來展現 publicTCPCondition(); publicTCPCondition(TransportLayerlayer,IPAddressValue srcAddr,IPAddressValuedstAddr,UInt16ValuesrcPort, UInt16ValuedstPort);publicoverrideboolEquals(PolicyConditionval);publicoverrideboolIntersects(PolicyCoinditionval);publicoverriboolContains(PolicyConditionval);}publicclassICMPConditionTransportCondition{ publicByteValueICMPType{get{}set{}} publicByteValueICMPCode{get{}set{}} //可以有更多的條件由防火墻平臺來展現 publicICMPCondition(); publicICMPCondition(TransportLayerlayer,IPAddressValuesrcAddr,IPAddressValuedstAddr,ByteValueicmpType,icmpCode);publicoverrideboolEquals(PolicyConditionval);publicoverrideboolIntersects(PolicyConditionval);publicoverrideboolContains(PolicyConditionval);}<!--SIPO<DPn="25">--><dpn="d25"/>};ICMPv6定義了不同于ICMPv4的ICMP類型和代碼。源和目標地址的地址家族確定ICMPConditon是被解釋為ICMPv4還是v6。屬性名字SourcePort描述該值用于匹配TCP/UDP頭部中的源端口字段。訪問權限讀/寫屬性名字DestinationPort描述該值用于匹配TCP/UDP頭部中的目標端口字段。訪問權限讀/寫屬性名字Flags描述該值用于匹配TCP標志字段中的對應位FIN、SYN、RST、PSH、ACK、URG訪問權限讀/寫屬性名字ICMPType描述該值用于匹配ICMP頭部中的類型字段。訪問權限讀/寫屬性名字ICMPCode描述該值用于匹配ICMP頭部中的代碼字段。訪問權限讀/寫System.Firewall.Policy.IPSecAuthorizationConditionnamespaceSystem.Firewall.Policy{ publicclassIPSecAuthorizationConditionPolicyCondition { publicIPSecAuthorizationCondition(RemoteIdentityRemoteID); publicRemoteIdentityRemoteID{get{}} publicIPAddressValueLocalAddress{get{}set{}} publicUInt16ValueLocalPort{get{}set{}} publicUInt16ValueProtocol{get{}set{}} publicIPAddressValueRemoteAddress{get{}set{}} publicUInt16ValueRemotePort{get{}set{}} }}IPSecAuthorizationCondition匹配進入和輸出分組IPSec上下文。檢查假定在IPSec驗證完成后即發生。如果關聯的行動是Permit,則建立IPSecSA并保護通信。如果要采取的行動是Deny,則不創建SA,并且IPSec主模式協商失敗。System.Firewall.Policy.ApplicationConditionnamespaceSystem.Firewall.Policy{ [flags] publicenumNetworkAccessFlag { Client=1, Server=2, ClientAndServer=3, Multicast=4 } publicabstractclassApplicationConditionPolicyCondition { publicApplicationIDValueApplication{get{}set{}} publicIPrincipalValueLocalUser{get{}set{}} //可以有更多的條件由防火墻平臺來展現 publicApplicationCondition(); publicApplicationCondition(ApplicationIDValueapp,IPrincipalValueluser); }<!--SIPO<DPn="27">--><dpn="d27"/>publicclassAuthorizationConditionApplicationCondition{ //以下條件與通過諸如連接或傾聽等winsock調用向下傳遞的值 publicNetworkAccessFlag{get{}set{}} publicIPAddressValueLocalAddress{get{}set{}} publicIPAddressValueRemoteAddress{get{}set{}} publicByteValueProtocol{get{}set{}} publicUInt16ValueLocalPort{get{}set{}} publicUInt16ValueRemotePort{get{}set{}} publicRemoteIdentityValueRemoteID{get{}set{}}}publicenumPromiscuousMode{ AllIP=1, AllMulticast=2, IGMPMulticast=3}publicenumResourceType{ UDPPort, TCPPort, Raw}publicclassResourceAssignmentConditionApplicaitonCondition{ publicIPAddressValueLocalAddress{get{}set{}} //如果協議不是TCP/UDP,則假定它是原始套接字情況 publicResourceTypeResourceType{get{}set{}} publicUInt16ValueResourceValue{get{}set{}} publicPromiscuousModePMode{get{}set{}}}}ApplicationCondition匹配由應用層實施展現的條件。這是提供基于應用程序和用戶的防火墻政策的主引擎。屬性名字Application描述這匹配由該應用程序生成/接收的分組。訪問權限讀/寫屬性名字LocalUser描述這匹配由該用戶生成/接收的分組訪問權限讀/寫展示CSystem.Firewall.Policy.PolicyActionnamespaceSystem.Firewall.Policy{ publicabstractclassPolicyActionPolicyObject { //屬性 publicLoggingConfigLoggingConfig{get{}} //抽象方法 publicabstractboolIsCompatible(PolicyConditioncondition); }}PolicyAction是擔當所有特定行動類的根類的抽象類。是否記錄分組通過指定非空記錄配置對象來隱含。方法方法名字IsCompatible返回類型Bool描述如果該行動可在與條件相同的層上發生,則返回真。否則返回假。參數Condition-將對照被檢查的行動的條件。System.Firewall.Policy.FilterActionnamespaceSystem.Firewall.Policy{ publicclassFilterActionPolicyAction { publicenumFilterActionType{Permit,Deny,LogOnly} privateFilterAction(FilterActionTypeactionType); publicFilterAction(FilterActionTypeactionType,LoggingConfiglogging); publicstaticreadonlyFilterActionPermit=newFilterAction(Permit); publicststicreadonlyFilterActionDeny=newFilterAction(Deny); <!--SIPO<DPn="30">--><dpn="d30"/> publicoverrideboolIsCompatible(PolicyConditioncondition){returntrue;} }};FilterAction將以下行動情形模型化·準許允許匹配相關聯的PolicyCondition對象的分組。PolicyActionaction=FilterAction.Permit;·拒絕丟棄匹配相關聯的PolicyCondition對象的分組。PolicyActionaction=FilterAction.Deny;·準許和記錄允許并記錄匹配相關聯的PolicyCondition對象的分組。newFilterAction(FilterAction.FilterActionType.Permit,logging);·拒絕和記錄丟棄并記錄匹配相關聯的PolicyCondition對象的分組。newFilterAction(FilterAction.FilterActionType.Deny,logging);·僅記錄記錄匹配相關聯的PolicyCondition對象的分組。newFilterAction(FilterAction.FilterActionType.LogOnly,logging);請注意,由于要求防火墻平臺中的所有層至少支持Permit、Deny和Log行動,FilterAction可與任一PolicyCondition相關聯。System.Firewall.Poliey.InstantiationTemplatenamespaceSystem.Firewall.Policy{ publicabstractclassInstantiationTemplatePolicyRule { protectedInstantiationTemplate(boolisClientInstantiation); publicboolIsClientInstantiation{get{}}; } publicclassTransportTemplateInstantiationTemplate<!--SIPO<DPn="31">--><dpn="d31"/>{publicTransportTemplate{TransportLayerlayer,FitlerActionaction);publicTransportTemplate{TransportLayerlayer,FilterActionaction, IPAddressValueremoteAddr,UInt16Valueprotocol,UInt16Value remotePort); publicTransportConditionCondition{get{}} publicFilterActionAction{get{}} } publicclassIPSecTemplateInstantiationTemplate { publicIPSecTemplate(IPSecActionaction); publicIPSecTemplate(IPSecActionaction,IPAddressValueremoteAddress, UInt16Valueprotocol,UInt16ValueremotePort); publicTransportConditionCondition{get{}} publicIPSecActionAction{get{}} } publicclassIPSecAuthorizationTemplateInstantiationTemplate { publicIPSecAuthorizationTemplate(RemoteIdentityValueremoteID, FilterActionaction); publicIPSecAuthorizationTemplate(RemoteIdentityValueremoteID,UInt16Value protocol,UInt16ValueremotePort,FilterActionaction); publicRemoteIdentityValueRemoteID{get{}} publicFilterActionAction{get{}} }}例示模板可以是以下模板的任一個-TransportTemplate要在進入或輸出的傳輸層上例示的模板。-IPSecTemplate要在IPSec層上例示的IPSec模板。-IPSecAuthorizationTemplate要在IPSec授權層例示的授權模板。上述類的每一個都提供兩個構造函數。第一個在當關聯的應用程序規則匹配來執行客戶機例示時被例示。當客戶機例示發生時,全5元組可用于例示模板。在另一方面,如果它不是客戶機例示,則僅本地3元素組,即,本地地址、協議和本地端口可用。這是第二個構造函數所使用之處。因此隱含地,第一個構造函數將基礎InstantiationTemplate類中的isClientInstantiation標志設為真,而第二個構造函數將其設為假。客戶機例示模板僅在全5元組可用時被例示,而服務器例示模板僅在當本地3元組可用時被例示。System.Firewall.Policy.ApplicationActionnamespaceSystem.Firewall.Policy{ publicclassApplicationActionPolicyAction { publicenumApplicationActionType { Permit,Deny,Ask,LogOnly } privateApplicationAction(ApplicationActionTypeactionType); publicApplicationAction(ApplicationActionTypeactionType, LoggingConfiglogging,InstantiateTemplateCollectiontemplates); publicstaticreadonlyApplicationActionPermit=new ApplicationAction(Permit); publicstaticreadonlyApplicationActionDeny=newApplicationAction(Deny); publicstaticreadonlyApplicationActionAsk=newApplicationAction(Ask); publicInstantiateTemplateCollectionInstantiationTemplates{get{}set{}} publicIPSecProposalIPSecProposal{get{}set{}}; publicboolIsAutoInstantiationEnabled{get{}set{}} publicoverrideboolIsCompatible(PolicyConditioncondition); }};可能的ApplicationAction情形如下·準許允許匹配關聯的ApplicationCondition對象的分組。·拒絕丟棄匹配關聯的ApplicationCondition對象的分組。·詢問當分組匹配關聯的ApplicationCondition對象時,詢問用戶的決策。·僅記錄記錄匹配關聯的ApplicationCondition對象的分組。方法方法名字GetTemplates返回類型InstantiateTemplateCollection描述當該應用程序行動發生時返回要創建的例示模板的列表。參數Condition-對照其檢查行動的條件。System.Firewall.Policy.CalloutActionnamespaceSystem.Firewall.Policy{ publicabstractclassCalloutActionPolicyAction { //構造函數 protectedCalloutAction(Calloutobj,CalloutContextcxt); //屬性 publicCalloutCalloutModule{get{}} publicCalloutContextContext{get{}set{}} publicoverrideboolIsCompatible(PolicyConditioncondition); }};CalloutAction將平臺提供的呼出擴展模型化。當匹配關聯的條件時,呼出行動指定平臺需要調用的呼出擴展。它用作提供諸如入侵檢測、父母控制等額外安全功能的擴展機制。屬性名字CalloutModule描述當匹配關聯的條件時調用的呼出模塊。訪問權限只讀屬性名字CalloutContext描述當被調用時傳遞到呼出模塊的呼出專用上下文信息。訪問權限讀/寫System.Firewall.Policy.IPSecActionnamespaceSystem.Firewall.Policy{ publicclassIPSecProposalCalloutContext { publicIPSecProposal(); publicboolIsPFSRequired{get{}set{}} //指示當密鑰協商失敗時是否可用普通文字(軟SA)發送的標志 publicboolIsAuthenticationRequired{get{}set{}} publicboolIsNATTraversalEnabled{get{}set{}} publicHashAlgorithmAHTransform{get{}set{}} publicHashAlgorithmESPIntegrityTransform{get{}set{}} publicCiperAlgorithmESPCiperTransform{get{}set{}} publicuint32MaxLifetimeSeconds{get{}set{}} publicuint32MaxLifetimeKilobytes{get{}set{}} } publicclassIPSecActionCalloutAction { //構造函數 //用對IPSec呼出模塊的Callout對象和對上下文為空來調用基礎構造函數 PublicIPSecAction(); PublicIPSecAction(IPSecProposalctx); publicIPSecProposalContext{get{}set{}} }};IPSecAction觸發IPSec呼出以設置匹配分組中的安全上下文,使得該分組可由IPSec驅動程序進一步處理。它也指定用于保護網絡通信的實際的IPSec配置,包括AH或ESP或兩者,及它們對應的轉換設置。System.Firewall.Policy.IKEActionnamespaceSystem.Firewall.Policy{ pulbicenumIKEAuthenticationType { PresharedKey=1, Kerberos=2, Passport=3, Certificate=4 } publicclassIKEAuthenticationMethodPolicyobject { protectedIKEAuthenticationMethod(IKEAuthenticationTypeauthType); publicstaticreadonlyIKEAuthenticationMethodPresharedKey=newIKEAuthenticationMethod(PresharedKey); publicstaticreadonlyIKEAuthenticationMethodKerberos=newIKEAuthenticatinMethod(Kerberos); publicstaticreadonlyIKEAuthenticationMethodPassport=newIKEAuthenticatinMethod(Passport); } publicclassCertificateAuthenticationMethodIKEAuthenticationMethod { publicCertificateAutenticationMethod(); publicX509CertificateCollectionRootCertificates{get{}set{}} } publicenumCipherAlgorithm { None, DES, 3DES } publicenumHashAlgorithm { None, MD5,<!--SIPO<DPn="36">--><dpn="d36"/> SHA } publicclassIKEProposalPolicyObject { publicIKEProposal(CipherAlgorithmciper,HashAlgorithmhash); //將高、中、低提議預定義為靜態變量 publicCipherAlgorithmCiperAlgorithm{get{}} publicHashAlgorithmHashAlgorithm{get{}} publicuint32MaxLifetimeSeconds{get{}set{}} publicuint32MaxLifetimeKilobytes{get{}set{}} publicuint32MaxQuickModeNumber{get{}set{}} } publicclassIKEActionPolicyAction { publicIKEAction(IKEAuthenticationMethodmethod); //驗證方法預共享密鑰、Kerberos、證書(輸出證書、輸入證書) publicIKEAuthenticationMethodAuthenticationMethod{get{}} //對算法等 publicIKEProposalProposal{get{}set{}} }};IKEAction定義執行IKE密鑰協商協議的驗證方法,可以是預共享密鑰、Kerberos或證書,以及驗證算法的提議。System.Firewall.Policy.KeyModuleActionnamespaceSystem.Firewall.Policy{ publicclassKeyingModuleActionPolicyAction { publicenumKeyingModule { IKE, Mamie }<!--SIPO<DPn="37">--><dpn="d37"/> privateKeyingModuelAction(KeyingModulemodule); publicKeyingModuleAction(KeyingModuleCollectionmodules); publicstaticreadonlyIKE=newKeyingModuleAction(IKE); publicstaticreadonlyMamie=newKeyingModuleAction(Mamie); publicKeyingModeuleCollectionGetKeyingModules(); }};KeyModuleAction選擇指定的密鑰模塊來執行密鑰協商交換。當指定了一個以上時,將順序嘗試列出每一密鑰模塊直到它們中的一個成功或所有都失敗。方法名字GeyKeyingModules返回類型KeyingModuleCollection描述返回當該行動發生時將調用的一個或多個密鑰模塊。如果列出了一個以上密鑰模塊,則以指定的順序試驗它們直到它們的其中一個成功或所有都失敗。參數無展示DSystem.firewall.Policy.ApplicationSettingnamespacesystem.Firewall.Policy{ publicclassApplicationSetting { //安全級別和可信聯系人默認地被設為從GetDefaultSecuritvLevel(user)返回的值和 //DefaultTrustedContacts. publicApplicaitonSetting(ApplicationIDapp,IPrincipaluser); publicApplicationIDApplication{get{}} publicIPrincipalUser{get{}} publicSecurityLevelSecurityLevel{get{}set{}} publicApplicationRuleCollectionGetRules(); }}屬性參數Application描述該應用程序設置所相關的應用程序訪問權限只讀屬性參數User描述對其指定該應用程序設置的用戶。連同Application字段一起擔當應用程序設置的唯一密鑰。訪問權限只讀屬性參數SecurityLevel描述當用戶使用該應用程序時的安全級別訪問權限讀寫方法名字GetRules參數Application-向其應用該安全級別的應用程序。User-向其應用該安全級別的用戶。Contacts-當應用該安全級別時所使用的遠程聯系人的列表。返回ApplicationRuleCollection描述獲取實施設置“當用戶使用該應用程序時用這些遠程聯系人使用該安全級別”的應用程序規則的列表。System.Firewall.Policy.SecurityLevelnamespaceSystem.Firewall.Policy{ publicclassSecurityLevelPolicyobject { protectedApplicationRuleCollectionruleTemplates; publicSecurityLevel(ApplicationRuleCollectionruleTemplates}; publicApplicationRuleCollectionTemplates{get{}} }}屬性參數Templates描述組成該安全級別的應用程序規則模板的列表。訪問權限只讀安全級別中的遠程實體的引用確定了IPSec主模式密鑰交換的設置。例如,如果可信聯系人是X509證書,則該聯系人的CA證書將作為IKE協商中使用的可信根證書來處理。為安全原因,證書、預共享密鑰和其它憑證將不由PFW服務儲存。相反它們應當來自專用窗口安全存儲,如證書的安全證書存儲。展示ESystem.Firewall.FirewallServicenamespaceSystem.Firewall{ publicenumFirewallMode { AllowAll=1, BlockAll=2, Filtering=3 } [flags] publicenumLoggingFlags { BlockedConnections=1, AllowedConnections=2, ConfigurationChanges=4, LogAll=7 } publicenumOverflowBehavior { OverWrite=1, FIFOEnteries=2, BlockAllTraffic=3 } publicclassLogSettings { publicLoggingFlagsFlags{get{}set{}} publiculongMaxSize{get{}set{}} publicoverflowBehavior{get{}set{}} } publicenumPolicyProviderType { ManagedServiceProvider=1, LocalProvider=2, DomainProvider=3, ApplicationProvider=4 } publicclassFirewall { privateFirewall(){} //FirewallService不能被例示。它跟隨單獨的模式。 publicstaticreadonlyFirewallFWService=newFirewall(); //屬性 publicFirewallModeFirewallMode{get{}set{}} publicLogSettingsLogSettings{get{}set{}} //方法 publicRuleEditorAqireRuleEditor(PolicyProviderTypeprovider); publicRuleExplorerAquireRuleExplorer(PolicyProviderTypeprovider); publicSettingEditorAquireApplicationSettingEditor(EventFilterfilter); publicvoidClearLog(); }}屬性屬性參數FirewallMode描述個人防火墻服務的當前過濾模式。它可以是以下值的任一個·BlockAll個人防火墻服務正在運行,它阻斷所有的通信·PermitAll個人防火墻服務正在運行,它允許所有的通信·Filtering個人防火墻服務正在運行,它實際實施用戶定義的應用程序設置訪問權限只讀屬性參數LogSettings描述指定記錄設置的全局設置,包括要記錄的內容、記錄限制和溢出行為訪問權限讀寫方法方法名字AquireRuleEditor參數Provider-返回的政策編輯器所擔當的類型政策提供者。返回RuleEditor-將通過其管理所有高級政策的對象引用。當前調用線程的主體將用于準許檢查。因此在“runas”情況下,需要在調用該方法來創建RuleEditor之前作出模仿。如果當前調用者不具有足夠的特權,將引發特權不足異常。描述用于直接操縱政策規則的政策提供者接口,即,系統中的規則的高級察看,包括儲存在持久存儲和插入到內核驅動程序中的規則。方法名字AcquireRuleExplorer參數Provider-返回的政策探查器將擔當的類型政策提供者。返回RuleExplorer-可通過其用足夠的特權檢索來自其它提供者的規則的對象引用。描述創建規則探查器對象用于察看當前在平臺中由特定的政策提供者實施的規則。方法名字AcquireSettingEditor參數Provider-返回的防火墻設置編輯器將擔當的類型政策提供者。返回SettingEditor-通過其管理所有簡單的應用程序設置的對象引用。當前調用線程的主體將用于準許檢查。因此在“runas”情況下,需要在調用該方法之前作出模仿。如果當前的調用者沒有足夠的特權,將引發特權不足異常。描述創建編輯器對象用于按照應用程序設置管理規則的簡單察看。方法名字ClearLog參數Void返回Void描述移除日志中所有的記錄。System.Firewall.SettingEditornamespaceSystem.Firewall{ pulicdelegatevoidSettingChangedEvent(SettingEditorsource,SettingChangedEventArgsargs); publicclassSettingEditor { publicApplicationSettingCollectionApplicationSettings{get{}set{}} publicApplicationSettingDefaultApplicationSetting{get{}set{}} publicApplicationSettingDefaultWindowsComponentSetting{get{}set{}} publicIPAddressValueCollectionTrustedZone{get{}set{}} publicRemoteIdentityCollectionSecureZone{get{}set{}} publicboolIsICMPAllowed{get{}set{}} //方法 publicvoidSetDefaultSecurityLevel(IPrincipaluser,SecurityLevellevel); publicSecurityLevelGetDefaultSecurityLevel(IPrincipaluser); publiceventSettingChangedDelegateSettingChangedEvent; }}屬性屬性參數AppplicationSettings描述儲存在系統中的所有應用程序防火墻。規則訪問權限只讀屬性參數DefauleApplicationSetting描述當未指定應用程序設置時所應用的默認防火墻。訪問權限讀寫屬性參數DefaultWindowsServiceSetting描述當未指定窗口服務的防火墻設置時所應用的默認防火墻設置。訪問權限讀寫屬性參數TrustedZone描述當應用程序設置未指定其自己的可信IP地址時所使用的默認可信IP地址。訪問權限讀寫屬性參數SecureZone描述當應用程序設置未指定其自己的可信的已驗證的遠程身份時所使用的默認可信的已驗證的遠程身份列表。訪問權限讀寫屬性參數IsICMPAlloed描述如果為真,則允許所有的ICMP消息,例如棧將響應查驗并生成ICMP錯誤。否則,它被阻斷。訪問權限讀寫方法方法名字SetDefauleSecurityLevel參數User-Level-返回Void描述為指定的用戶設置默認安全級別。方法名字GetSecurityLevel參數User-返回Void描述獲取對指定用戶的默認安全級別System.Firewall.RuleExplorerRuleExplorer對象給予防火墻客戶機當前在防火墻平臺中的所有政策的只讀察看(盡管要經受特權檢查)。namespaceSystem.Firewall{ [flags] publicenumMatchingFlag { ExactMatch, Overiding, Overridden, Specific } publicclassEventFilterPolicyRule { publicEventFilter(PolicyConditioncondition,PolicyActionaction);<!--SIPO<DPn="45">--><dpn="d45"/> publicstaticreadonlyEventFilterAllRules=newEventFilter(NULL,NULL); publicMatchingFlagFlag{get{}set{}} } publicdelegatevoidRuleChangedDelegate(RuleExplorersource,RuleChangedEventArgsargs); publicclassRuleExplorer { //構造函數 //沒有公用構造函數。RuleExplorer對象只能通過在PolicyEngine上調用CreateExplorer //方法來創建 PrivateRuleExplorer(); //方法 publicRuleReferenceCollectionGetRules(); //事件 publiceventRuleChangedDelegateRuleChangedEvent; //屬性 publicEventFilterEventFilter{get{}} }};方法方法名字GetRules返回類型RuleReferenceCollection描述獲取當前在防火墻平臺中實施的規則。該操作在一個事務中完成,即它是具有正確的隔離級別的原子操作。參數無事件屬性名字RuleChangedEvent描述這用于RuleExplorer客戶機在它所察看的政策改變時接收通知。參數Source-所察看的政策改變的特定RuleExplorer對象Args-由以RuleReferenceCollection對象形式改變的政策列表組成的RuleChangedEventArgsSystem.Firewall.RuleEditornamespaceSystem.Firewall{ publicclassRuleEditor { //構造函數 //無公用構造函數。RuleEditor對象只能通過在Firewall對象上調用AquireRuleEditor //方法來創建 //方法 //以下三個方法被作為一個事務來調用。因此它們的每一個是ACID操作。 publicRuleReferenceAddRule(PolicyRulerule); publicvoidRemoveRule(RuleReferencerule); pubilcvoidUpdateRule(RuleReterencerule); publicRuleReferenceCollectionGetRules(); publicPolicyTransactionBegineTransaction(IsolationLevellevel); publicRuleReferenceCollectionGetRules(PolicyTransactiontransaction); publicRuleReferenceAddRule(PolicyRulerule,PolicyTransactiontransaction); publicvoidRemoveRule(RuleReferencerule,PolicyTransactiontransaction); pulbicvoidUpdateRule(RuleReferencerule,PolicyTransactiontransaction); publicvoidRemoveAll(); //屬性 publicPriorityClassPriorityClass{get{}}<!--SIPO<DPn="47">--><dpn="d47"/> publicPolicyProviderTypeProvider{get{}} }}方法方法名字AddRule返回類型RuleReference描述向政策引擎壓下一組政策,它進而將它們插入到內核驅動程序中。參數Policy-要插入到防火墻平臺驅動程序中的新政策異常ArgumentException當試圖添加無效PolicyRule對象時PrivilegeException當試圖添加沒有足夠特權的規則時TransactionException當當前事務由于事務超時被中止時方法名字RemoveRule返回類型Void描寫從防火墻平臺實施移除指定的政策參數Policy-要從防火墻平臺驅動程序移除的政策異常PrivilegeException當試圖移除沒有足夠特權的規則時TransactionException在當前事務由于事務超時被中止時方法名字UpdateRule返回類型void描述改變先前添加的指定政策參數Policy-需要改變的政策異常ArgumentException當試圖設置無效PolicyRule對象時PrivilegeException當試圖添加沒有足夠特權的規則時TransactionException在當前事務由于事務超時被中止時方法名字RemoveAll返回類型void描述移除該政策提供者創建的所有規則。它是原子操作,即,它在一個事務內完成。參數Policy-需要改變的政策異常PrivilegeException當試圖添加沒有足夠特權的規則時。TransactionException在當前事務由于事務超時或事務失敗而被中止時。屬性屬性名字ProrityClass描述該政策提供者所處于的優先級類別訪問權限只讀System.Firewall.PolicyTransactionnamespaceSystem.Firewall{ publicenumIsolationLevel { ReadUncommitted ReadCommitted; RepeatableRead, Serializable }publicclassPolicyTransaction{//構造函數<!--SIPO<DPn="49">--><dpn="d49"/>//PolicyTransaction對象只能通過在RuleEditor對象上調用BeginTransaction來創建。publicvoidCommit(); publicvoidAbort(); //屬性publicIsolationLevelIsolationLevel{get{}} }}當前防火墻平臺僅支持提交用于政策事務的一個階段。對于諸如讀/添加/更新/移除規則等每一事務操作,某些鎖被保持直到事務結束,即,提交或中止。考慮令多個探查器和編輯器試圖并行地訪問政策引擎是不常見的這一事實,當前應用用于全局引擎鎖定的粗粒度并發控制模式。因此,當前僅支持隔離級別Serializable。為避免死鎖或資源不足,每一事務與一超時間隔相關聯。如果存在任何其它的事務等候當前事務完成,則如果當前事務不在超時間隔到期之前結束,則它將由平臺中止。如果事務由于超時而被中止,則如同在RuleEditor上調用AddRule或在PolicyTransaction上調用Commit那樣操作的下一事務將引發TransactionException。當調用政策操作時,如在RuleExplorer對象上調用GetRules或在RuleEditor上調用UpdateRule時,完成規則確認和訪問準許檢查。但是改變在它們所處于的事務被提交之前不生效。政策引擎將所有的改變作為一批并原子地將它們應用到內核模型防火墻驅動程序。方法方法名字Commit返回類型Void描述執行該政策事務。參數無異常TransactionException當該政策由于諸如存儲器用盡等某些意外的原因而提交失敗時。方法名字Abort返回類型void描述中止指定的事務參數無異常TransactionException當平臺無法還原由該事務作出的改變時。屬性屬性名字IsolationLevel描述該交易對象所處的隔離級別。有四個可能的隔離級別·ReadUncommitted可從其它事務察看一個事務中未提交的改變。·ReadCommitted僅可在改變被提交之后可從其它事務中察看一個事務中的改變。·RepeatableRead在這一隔離級別,確保所讀的任何規則在整個事務過程中不改變,但是其它事務可一新規則,它在返回這一事務中隨后的讀中返回。·Serializable所有并發的事務僅以與每一事務逐個執行所產生的相同的效果的方式交互。當前的防火墻平臺僅支持Serializable隔離級別。對其它級別的支持可在將來添加。訪問權限讀/寫System.Firewall.RuleReference每一RuleReference具有擁有它的一個對應的RuleEditor。僅該RuleEditor能夠修改該對象。namespaceSystem.Firewall{<!--SIPO<DPn="51">--><dpn="d51"/>publicenumEnforcementStatus{ Active=1, Disabled=2, InTransaction=3, Invalid=4}publicclassPolicyProviderInfo{//無公用構造函數。作為RuleReference的屬性提供。//屬性 publicStringName{get{}} publicIPrincipalPrincipal{get{}} publicPriorityClassPiority{get{}}}publicclassRuleReference{//屬性 publicPolicyRulePolicySpec{get{}set{}} publicPolicyProviderInfoProviderInfo{get{}} publicEnforcementStatusStatus{get{}} }};屬性屬性名字Spec描述由底層防火墻平臺組件正在實施或將要實施的政策的實際內容。訪問權限讀/寫屬性名字Status描述該政策的實施狀態,它可以為下列狀態之一-Active成功地提交給政策管理器,并置于活動列表中,并且正在被實施-Disabled成功地提交給政策管理器,但是由于完全被其它高優先級政策阻斷,或由于未滿足位置或時間約束,它當前在禁用規則列表中。-InTransaction有效的政策規范,并且它在要提交給政策管理器的事務中。-Invalid無效的政策規范,并且未提交。訪問權限只讀屬性名字ProviderInfo描述關于擁有該政策的提供者的信息訪問權限只讀權利要求1.一種為應用程序設置防火墻政策的方法,其特征在于,它包括接收包括關于一應用程序的信息的第一參數;接收包括關于所述應用程序的用戶的信息的第二參數;訪問涉及所述第一和第二參數的安全級別信息;以及使用所述安全級別信息為所述應用程序和所述用戶設置一防火墻政策。2.如權利要求1所述的方法,其特征在于,訪問安全級別信息包括調用一GetRules方法以返回對所述應用程序和用戶可用的規則模板。3.如權利要求1所述的方法,其特征在于,它還包括接收關于可信聯系人的第三參數,并且其中,設置防火墻政策包括使用所述安全級別信息為所述應用程序、所述用戶和所述可信聯系人設置所述防火墻政策。4.如權利要求1所述的方法,其特征在于,設置所述防火墻政策包括為所述應用程序設置一默認設置;以及為所述用戶選擇所述默認設置。5.一種在其上儲存了一數據結構的計算機可讀媒質,其特征在于,所述數據結構包括表示一應用程序的第一數據字段;表示所述應用程序的用戶的第二數據字段;以及表示對使用所述應用程序的用戶可用的安全設置的第三數據字段。6.如權利要求5所述的計算機可讀媒質,其特征在于,所述數據結構包括一數據對象。7.一種用于管理計算機上的服務的對象模型,其特征在于,所述對象模型包括一政策對象模型,用于指定所述服務所支持的一個或多個政策;以及一政策引擎平臺,用于與所述服務的所述一個或多個政策、以及實際執行所述服務的至少一個組件交互,并向所述至少一個組件提供所述一個或多個政策。8.如權利要求7所述的對象模型,其特征在于,所述政策引擎平臺包括一規則編輯器,用于依照所述政策對象模型添加額外的政策。9.如權利要求8所述的對象模型,其特征在于,所述規則編輯器也被配置成刪除政策。10.如權利要求8所述的對象模型,其特征在于,所述規則編輯器也被配置成編輯政策。11.如權利要求7所述的對象模型,其特征在于,所述政策引擎平臺包括一設置編輯器,它被配置成基于一應用程序和用戶組合自動生成一政策。12.如權利要求11所述的對象模型,其特征在于,所述設置編輯器生成多個政策,并且它還被配置成準許用戶從所述多個政策中選擇。13.如權利要求12所述的對象模型,其特征在于,所述設置編輯器還被配置成準許將所述多個政策之一設置為默認政策。14.如權利要求7所述的對象模型,其特征在于,所述政策引擎平臺包括一規則探查器,用于提供所述一個或多個政策的察看。15.如權利要求7所述的對象模型,其特征在于,所述政策對象模型包括一可用于生成政策的PolicyRule對象,所述PolicyRule對象包括一條件屬性和一行動屬性,其中,由所述PolicyRule對象生成的政策被配置成響應于滿足所述條件屬性中的一條件,執行所述行動屬性中的一行動。16.如權利要求7所述的對象模型,其特征在于,所述服務是防火墻服務。17.如權利要求7所述的對象模型,其特征在于,所述政策引擎平臺被配置成如果請求者未被授權,則拒絕向所述組件提供所述一個或多個政策。18.如權利要求17所述的對象模型,其特征在于,確定一請求者是否被授權包括將所述請求的提供者等級與一準許等級相比較,并且如果所述請求的提供者等級不滿足或超過所述準許等級,則拒絕所述請求者。19.一種管理計算機上的服務的方法,其特征在于,所述方法包括通過一政策對象模型指定所述服務所支持的一個或多個政策;通過一政策引擎平臺與所述服務的所述一個或多個政策、以及實際執行所述服務的至少一個組件交互;以及通過所述政策引擎平臺向所述至少一個組件提供所述一個或多個政策。20.如權利要求19所述的方法,其特征在于,它還包括基于一應用程序和用戶組合自動生成一政策。21.如權利要求20所述的方法,其特征在于,它還包括生成多個政策,并準許用戶從所述多個政策中選擇。22.如權利要求21所述的方法,其特征在于,它還包括將所述多個政策之一設置為默認政策。23.如權利要求22所述的方法,其特征在于,它還包括在提供之前授權用戶。24.一種用于管理計算機上的防火墻服務的對象模型,其特征在于,所述對象模型包括一政策對象模型,用于指定所述防火墻服務所支持的一個或多個政策,所述政策模型包括一可用于生成政策的PolicyRule對象,所述PolicyRule對象包括一條件屬性和一行動屬性,其中,由所述PolicyRule對象生成的政策被配置成響應于滿足所述條件屬性中的一條件,執行所述行動屬性中的一行動。25.如權利要求24所述的對象模型,其特征在于,它還包括從所述PolicyRule對象導出的一IPSecRule,所述IPSecRule被配置成當匹配一IPSec條件時觸發一IPSec呼出,及指示用于保護涉及所述呼出的通信安全的配置參數。26.如權利要求25所述的對象模型,其特征在于,所述IPSecRule評估一標準5元組,以確定是否滿足一條件。27.如權利要求24所述的對象模型,其特征在于,它還包括一從所述PolicyRule對象導出的KeyingModuleRule,所述KeyingModuleRule被配置成當不存在對遠程對等體的安全通道時選擇哪一密鑰協商模塊來使用。28.如權利要求27所述的對象模型,其特征在于,所述KeyingModuleRule評估一標準5元組,以確定是否滿足一條件。29.如權利要求24所述的對象模型,其特征在于,它還包括一從所述PolicyRule模型導出的IKERule,它被配置成指定用于實現因特網密鑰交換密鑰協商協議的參數。30.如權利要求29所述的對象模型,其特征在于,所述IKERule評估一本地地址和一遠程地址,以確定是否滿足一條件。31.如權利要求29所述的對象模型,其特征在于,所述IKERule包括一IKEAction行動屬性,它定義用于執行因特網密鑰交換密鑰協商協議的驗證方法。全文摘要提供了一種對象模型作為用于管理諸如防火墻服務等網絡服務的通用框架。計算機的用戶或管理員可使用該對象模型來管理并配置防火墻服務。該對象模型使用戶和/或管理員無需處理涉及配置服務的許多可能的問題。該對象模型包括兩個主要的名字空間一政策引擎平臺和一政策對象模型。該政策引擎平臺是用于與對該服務的政策和實際執行該服務的內核組件進行交互的中心點。該政策對象模型用于指定服務所支持的政策。文檔編號H04L29/06GK1630300SQ20041010200公開日2005年6月22日申請日期2004年12月17日優先權日2003年12月19日發明者A·加弗里萊斯庫,錢挺申請人:微軟公司