專利名稱:用于軟件應(yīng)用程序的自動(dòng)配置的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息技術(shù)領(lǐng)域。更具體地,本發(fā)明涉及軟件應(yīng)用程序的配置。
背景技術(shù):
軟件應(yīng)用程序的配置是非常復(fù)雜的任務(wù)。典型的情況(scenario )是用于 軟件應(yīng)用程序的正確操作的安全需求的定義。
例如,軟件應(yīng)用程序可用Java語(yǔ)言編寫。Java應(yīng)用程序運(yùn)行于Java虛 擬機(jī)(JVM)中,該虛擬機(jī)由提供獨(dú)立于底層(硬件和軟件)平臺(tái)的運(yùn)行時(shí) 環(huán)境的抽象計(jì)算機(jī)器組成。這允許在任何類型的計(jì)算機(jī)(假設(shè)要求的JVM可 用)上虛擬地運(yùn)行Java應(yīng)用程序。由于這個(gè)原因,Java應(yīng)用程序在因特網(wǎng)中 已經(jīng)找到了廣泛使用。每當(dāng)Java應(yīng)用程序必須對(duì)受保護(hù)資源執(zhí)行特定操作(例 如,讀或?qū)懳募?時(shí),必須為該操作授權(quán)相應(yīng)權(quán)限。在Java環(huán)境中,所有可 用的權(quán)限在稱為策略文件(或更多)中定義。因此,當(dāng)部署新的Java應(yīng)用程 序(或其新版本)時(shí),有必要確保其正確操作要求的權(quán)限在策略文件中定義。
然而,策略文件的組成顯然不平常。實(shí)際上,為了這個(gè)目的,操作者必 須(根據(jù)相應(yīng)的語(yǔ)法)為每個(gè)要求的權(quán)限將特定的條目添加到策略文件。
一些圖形工具(如裝載JSDK的"策略工具")可用來(lái)便利編輯策略文件 的任務(wù),而不需要知道它的語(yǔ)法。
無(wú)論如何,這種任務(wù)實(shí)質(zhì)上保留手動(dòng)(然后強(qiáng)烈地依賴于操作者的技術(shù) 并且傾向于錯(cuò)誤)。
此外,非常難以(如果不是不可能的)先驗(yàn)地(apriori)識(shí)別Java應(yīng)用 程序要求的的所有權(quán)限。因此,可能發(fā)生一些權(quán)限丟失;這種情況下,當(dāng)在 運(yùn)行時(shí)調(diào)用需要丟失權(quán)限的操作時(shí),啟動(dòng)(throw)相應(yīng)的異常。典型地,該 異常到達(dá)執(zhí)行棧的底部(因?yàn)樗荒茉贘ava應(yīng)用程序自身內(nèi)管理),因此, 導(dǎo)致整個(gè)Java應(yīng)用程序中的故障。然后,操作者必須停止該Java應(yīng)用程序, 將丟失^J艮添加到策略文件,然后重啟Java應(yīng)用程序。
然而,上述"反復(fù)試驗(yàn)(trial and error)"步驟非常耗時(shí)。此外,這對(duì)Java 應(yīng)用程序的可靠性具有有害作用。
US-B-6,526,513公開了用于動(dòng)態(tài)管理權(quán)限的解決方案。這種情況下,當(dāng) Java應(yīng)用程序需要在策略文件中沒有定義的權(quán)限時(shí),在運(yùn)行時(shí)提示用戶授權(quán) 或拒絕要求的權(quán)限;授權(quán)的或拒絕的權(quán)限還可以保存,以便遍及不同對(duì)話 (session)生效。該引用文獻(xiàn)在策略文件中還引入了拒絕權(quán)限的概念,以便 允許授權(quán)權(quán)限給受保護(hù)資源的大量集合,除了它們的少數(shù)。
然而,提出的技術(shù)需要定制安全管理器的定義(代替用于在Java環(huán)境中 管理權(quán)限的標(biāo)準(zhǔn)安全管理器)。無(wú)論如何,在策略文件中靜態(tài)地定義大量權(quán)限 的問題還沒有解決(具有上面指出的缺點(diǎn))。
發(fā)明內(nèi)容
概括地說,本發(fā)明基于軟件應(yīng)用程序的自動(dòng)配置的思想。 具體地,本發(fā)明提供了如在獨(dú)立權(quán)利要求中提出的解決方案。在從屬權(quán) 利要求中描述了本發(fā)明的優(yōu)選實(shí)施例。
更具體地,本發(fā)明的 一方面提供了 一種用于配置軟件應(yīng)用程序的方法。 該方法從在數(shù)據(jù)處理系統(tǒng)上運(yùn)行軟件應(yīng)用程序的步驟開始。該軟件應(yīng)用程序 的多個(gè)操作被調(diào)用;每個(gè)操作的執(zhí)行需要軟件應(yīng)用程序的配置特征。該方法 通過驗(yàn)證用于每個(gè)操作的配置特征的可用性繼續(xù)。每個(gè)不可用配置特征的指 示日志記錄。同時(shí),模擬每個(gè)不可用配置特征的可用性,以便使能相應(yīng)操作 的執(zhí)行。然后,執(zhí)行每個(gè)操作。最后,該軟件應(yīng)用程序根據(jù)日志記錄的不可 用配置特征被配置。
優(yōu)選地,提出的解決方案被應(yīng)用于權(quán)限定義以執(zhí)行要求的操作。 這種情形下,任何被拒絕的要求的權(quán)限被日志記錄;同時(shí),強(qiáng)制授權(quán)相 同要求的權(quán)限。
例如,提出的解決方案可用于定義存儲(chǔ)可用的權(quán)限的安全結(jié)構(gòu)。 典型地,日志記錄的被拒絕的權(quán)限然后添加到安全結(jié)構(gòu)。 例如,設(shè)計(jì)的技術(shù)被用來(lái)構(gòu)成用于Java應(yīng)用程序的策略文件。 作為進(jìn)一步改進(jìn),通過安全管理器的打包器獲得該結(jié)果。 典型地,上述處理在測(cè)試環(huán)境中執(zhí)行。
本發(fā)明的另 一方面提出 一種用于執(zhí)行上述方法的計(jì)算機(jī)程序。 本發(fā)明的另 一方面提出 一種相應(yīng)系統(tǒng)。
參照以下詳細(xì)的、要結(jié)合附圖閱讀的描述(給出完全作為非限制性指示),
將最好地理解本發(fā)明自身及其進(jìn)一步特征和優(yōu)勢(shì),在附圖中
圖1是數(shù)據(jù)處理系統(tǒng)的示意性方框圖,在該數(shù)據(jù)處理系統(tǒng)中可應(yīng)用根據(jù)
本發(fā)明實(shí)施例的解決方案;
圖2a-2b圖示了根據(jù)本發(fā)明實(shí)施例的解決方案的示例性應(yīng)用程序;
圖3是表示實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的解決方案的不同組件的角色的合作
圖;以及
圖4a-4b顯示了描述涉及實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的解決方案的各活動(dòng) 流程的圖。
具體實(shí)施例方式
具體參照?qǐng)D1,圖示了計(jì)算機(jī)100。例如,計(jì)算機(jī)100包括因特網(wǎng)中的服 務(wù)器。服務(wù)器100為各客戶端提供共享資源,各客戶端通過電信網(wǎng)絡(luò)(未在 圖中示出)訪問它們;例如,服務(wù)器100運(yùn)行一個(gè)或多個(gè)web應(yīng)用程序(如 用Java語(yǔ)言編寫的)。
更具體地,服務(wù)器100由并聯(lián)連接到系統(tǒng)總線105的幾個(gè)單元形成。詳 細(xì)地,多個(gè)微處理器(jaP) 110控制服務(wù)器100的操作;RAM 115由微處理 器110直接用作工作存儲(chǔ)器,以及ROM 120存儲(chǔ)用于服務(wù)器100的自舉 (bootstrap)的基本代碼。幾個(gè)外圍單元(通過各自的接口 )群集在局部總 線130周圍。詳細(xì)地,大存儲(chǔ)器由硬盤135的庫(kù)和用于讀取CD-ROM 145的 驅(qū)動(dòng)器140組成。此外,服務(wù)器100包括輸入單元150 (例如,鍵盤和鼠標(biāo)) 和輸出單元155(例如,顯示器和打印機(jī))。網(wǎng)絡(luò)適配器160用于將服務(wù)器100 連入因特網(wǎng)。橋單元165將系統(tǒng)總線105與局部總線120接口。每個(gè)微處理 器110和橋單元165能作為主代理操作,請(qǐng)求訪問系統(tǒng)總線105來(lái)傳送信息。 仲裁器170管理互斥訪問系統(tǒng)總線105的授權(quán)。
現(xiàn)在考慮圖2a,上述服務(wù)器必須運(yùn)行普通的軟件應(yīng)用程序205 (由討論 的示例中的Java應(yīng)用程序組成)。應(yīng)用程序205可要求對(duì)受保護(hù)資源執(zhí)行操 作,如讀或?qū)懳募?、打開插口 (socket)等(如由討論的示例中的相應(yīng)的Java API的調(diào)用定義的)。為了這個(gè)目的,用于該操作的權(quán)限必須授予應(yīng)用程序
205。
用于所有受保護(hù)資源的可用權(quán)限(通常以Peraii表示)存儲(chǔ)在安全結(jié)構(gòu) 210 (在Java應(yīng)用程序的情況下由策略文件組成)中;安全結(jié)構(gòu)210必須用 應(yīng)用程序205要求的所有權(quán)限來(lái)預(yù)定義,以允許它的正確操作。
如以下詳細(xì)描述的,在根據(jù)本發(fā)明實(shí)施例的解決方案中,通過運(yùn)行應(yīng)用 程序205 (例如,在測(cè)試環(huán)境中)自動(dòng)構(gòu)成安全結(jié)構(gòu)205。
簡(jiǎn)單地說,每當(dāng)應(yīng)用程序205需要對(duì)受保護(hù)資源執(zhí)行特定操作時(shí),相應(yīng) 的權(quán)限被要求。如果要求的權(quán)限在安全結(jié)構(gòu)210中可用,則該權(quán)限照常授權(quán) 給應(yīng)用程序205。相反地,丟失的權(quán)限被添加到輸出結(jié)構(gòu)215 (如日志文件); 總之,所需權(quán)限被授權(quán)給應(yīng)用程序205 (在安全結(jié)構(gòu)210中模擬它的可用性)。 因此,在應(yīng)用程序205運(yùn)行的最后,輸出結(jié)構(gòu)210將包括所有丟失權(quán)限(通 常以PemV表示),其由應(yīng)用程序205要求,但在安全結(jié)構(gòu)210中不可用。
移到圖2b,將輸出結(jié)構(gòu)215中的丟失權(quán)限Peraii,添加到安全結(jié)構(gòu)210。 這樣,安全結(jié)構(gòu)210包括應(yīng)用程序205要求的所有權(quán)限。因此,假定訪問受 保護(hù)資源的應(yīng)用程序205的所有操作都被調(diào)用,安全結(jié)構(gòu)210現(xiàn)在包括用于 應(yīng)用程序205正確操作要求的所有權(quán)限(或至少它們的大多數(shù))。這樣獲得的 具有安全結(jié)構(gòu)210的應(yīng)用程序205,現(xiàn)在能部署到生產(chǎn)環(huán)境用于它的實(shí)際使 用。
提出的解決方案有力地便利安全結(jié)構(gòu)210的定義。
具體地,構(gòu)成安全結(jié)構(gòu)210的任務(wù)目前(至少部分)是自動(dòng)的;因此, 得到的結(jié)果實(shí)質(zhì)上獨(dú)立于任何操作員的技巧,然后減少錯(cuò)誤的傾向。
這樣,可以確保確定安全結(jié)構(gòu)210包括應(yīng)用程序205要求的所有4又限(或 至少它們的大部分)。這有利地限制了運(yùn)行時(shí)應(yīng)用程序205的故障(由于丟失 權(quán)限),以及操作者的介入來(lái)解決各問題。
所有上述內(nèi)容顯著地減少了配置應(yīng)用程序205 (用要求的安全結(jié)構(gòu)210 )、 用于它的正確操作的整個(gè)處理的長(zhǎng)度;此外,這對(duì)應(yīng)用程序205的可靠性具 有有益的影響。
現(xiàn)在參照附圖3,運(yùn)行在服務(wù)器上的主要軟件部件以參考標(biāo)記300表示 為整體。當(dāng)程序運(yùn)行時(shí),信息(程序和數(shù)據(jù))典型地存儲(chǔ)在硬盤上,并加載 (至少部分地)到服務(wù)器的工作存儲(chǔ)器中。程序最初從例如CD-ROM安裝到 硬盤上。具體地,該圖描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)(通過相應(yīng)的各模塊)和它的動(dòng)態(tài)行為(通過一連串交換消息,每條消息表示以符號(hào)"A"開頭的序列號(hào) 表示的相應(yīng)動(dòng)作)。
具體地,操作系統(tǒng)303 (如Linux )為服務(wù)器提供軟件平臺(tái),在該系統(tǒng)之 上能運(yùn)行其它程序。具體地,Java運(yùn)行時(shí)環(huán)境(JRE) 305安裝在操作系統(tǒng)303 上。JRE 305定義用于運(yùn)行Java應(yīng)用程序310的標(biāo)準(zhǔn)平臺(tái)。
JRE 305包括不同的模塊,如JVM、 Java核心類和支持文件(未在圖中 示出);更具體地參照涉及描述的本發(fā)明實(shí)施例的各模塊,JRE 305包括負(fù)責(zé) 控制對(duì)服務(wù)器受保護(hù)資源的任何訪問的安全管理器315;具體地,安全管理 器315從Java應(yīng)用程序310接收對(duì)各權(quán)限(對(duì)受保護(hù)資源執(zhí)行操作所需)的 所有要求,并返回相應(yīng)結(jié)果(即,授權(quán)或拒絕權(quán)限)。為此目的,安全管理器 315加載策略文件320 (或更多)的內(nèi)容。根據(jù)默認(rèn),JRE 305包括單個(gè)系統(tǒng) 范圍的策略文件;可選地,用戶策略文件也可動(dòng)態(tài)地增加或指定。
策略文件320靜態(tài)地定義所有可用于對(duì)受保護(hù)資源執(zhí)行特定操作的權(quán) 限。這樣,只有在策略文件320中用于該操作的相應(yīng)權(quán)限是可用的,才能執(zhí) 行每個(gè)操作(訪問受保護(hù)資源);唯一的異常是每個(gè)Java應(yīng)用程序310總是 自動(dòng)地授權(quán)從Java應(yīng)用程序310的相同位置(即,它的URL)讀取文件,而 不需要任何明確的權(quán)限。
策略文件320可包括密鑰存儲(chǔ)(keystore )條目以及任意數(shù)目的授權(quán)條目。 密鑰存儲(chǔ)條目(以關(guān)鍵詞"密鑰存儲(chǔ),,開頭)用來(lái)指定私有密鑰、以及認(rèn)證 相應(yīng)的公共密鑰的相關(guān)聯(lián)的數(shù)字證書的數(shù)據(jù)庫(kù),其被用于驗(yàn)證授權(quán)條目的簽 名者;數(shù)據(jù)庫(kù)通過它的位置(即,URL)和它的類型(如"JKS")來(lái)定義。 當(dāng)被它們的代碼源(由類"代碼源"的對(duì)象表示)識(shí)別時(shí),每個(gè)授權(quán)條目(以 關(guān)鍵詞"授權(quán)"開頭)替代指示一組對(duì)被授權(quán)給特定Java應(yīng)用程序的受保護(hù) 資源的操作。通過Java應(yīng)用程序的位置("代碼基礎(chǔ)(CodeBase )"名稱/值對(duì)) 和/或通過它的簽名者("簽名由(signedBy)"名稱/值對(duì)),在授權(quán)條目中指 定代碼源;具體地,通過別名(或更多)識(shí)別簽名者,用于存儲(chǔ)在密鑰存儲(chǔ) 條目的數(shù)據(jù)庫(kù)中的證書(意味著在該證書中,Java應(yīng)用程序的JAR文件必須 用對(duì)應(yīng)于公共密鑰的私有密鑰簽名)。結(jié)果,可以授權(quán)權(quán)限給來(lái)自特定位置和 /或由特定簽名者簽名的Java應(yīng)用程序(當(dāng)它們都沒有被指定時(shí),用授于每個(gè) 人的權(quán)限)。于是,授權(quán)條目包括一個(gè)或多個(gè)權(quán)限條目(包圍在"{"和"}" 之間)。每個(gè)權(quán)限條目(以關(guān)鍵詞"權(quán)限"開頭)指定被授權(quán)的特定操作。為此目的,權(quán)限條目通過權(quán)限類(如I/O操作)、該操作的可能動(dòng)作(如讀取)、 以及可選地權(quán)限類自身的簽名者("簽名由"名稱/值對(duì)),指示操作類型。
在根據(jù)本發(fā)明實(shí)施例的解決方案中,用于安全管理器315的打包器 (wrapper) 325被添加(在測(cè)試環(huán)境中)。打包器325遮蔽外界保護(hù)安全管理 器315,從而用作安全管理器315和Java應(yīng)用程序310之間的接口。在這種 特定的上下文中,打包器325暴露與安全管理器315相同的接口 (使得它的 存在對(duì)于Java應(yīng)用程序310完全不透明);因此,打包器325接收來(lái)自Java 應(yīng)用程序310的所有權(quán)限請(qǐng)求,并且返回相應(yīng)的結(jié)果(代替安全管理器315 )。
打包器325被用來(lái)自動(dòng)地構(gòu)成用于通常Java應(yīng)用程序310的策略文件 320。為此目的,運(yùn)行Java應(yīng)用程序310;每當(dāng)必須對(duì)受保護(hù)資源執(zhí)行特定操 作時(shí),Java應(yīng)用程序310提交相應(yīng)的權(quán)限請(qǐng)求給打包器325(動(dòng)作"A1.提交")。 打包器325將該權(quán)限請(qǐng)求轉(zhuǎn)發(fā)給安全管理器315 (動(dòng)作"A2.轉(zhuǎn)發(fā)")。安全管 理器315驗(yàn)證要求的權(quán)限在策略文件320中是否可用(動(dòng)作"A3.驗(yàn)證");驗(yàn) 證結(jié)果(即,授權(quán)或拒絕)由安全管理器315返回到打包器325 (動(dòng)作"A4. 返回")。如果要求的權(quán)限因?yàn)樗诓呗晕募?20中不可用而被拒絕,則打包 器325將丟失的權(quán)限添加到日志文件330 (動(dòng)作"A5.添加");同時(shí),權(quán)限請(qǐng) 求的響應(yīng)被強(qiáng)制授權(quán)(動(dòng)作"A6.授權(quán)")。這樣獲得的對(duì)權(quán)限請(qǐng)求的響應(yīng),然 后從打包器325返回到Java應(yīng)用程序310 (動(dòng)作"A7.返回");這樣,Java應(yīng) 用程序310總是授權(quán)給要求的權(quán)限(通過安全管理器315或打包器325 ),使 得其操作能繼續(xù)而沒有任何問題。在Java應(yīng)用程序310運(yùn)行的最后,比較工 具335將丟失的權(quán)限(在日志文件330中)添加到策略文件320,以便(在 生產(chǎn)環(huán)境中)包括Java應(yīng)用程序310的正確操作要求的所有權(quán)限(或至少它 們的大部分)。
這樣,無(wú)需替代安全管理器315就達(dá)到期望的結(jié)果。實(shí)際上,提出的技 術(shù)只需在測(cè)試環(huán)境中(用打包器325 )打包安全管理器315,用于構(gòu)成策略文 件320;然而, 一旦期望的策略文件320已經(jīng)定義,(標(biāo)準(zhǔn))安全管理器315 (不用打包器325 )能照常使用。
轉(zhuǎn)到圖4a-4b,用方法400表示了示例性處理的邏輯流程,其能夠在上 述系統(tǒng)中實(shí)現(xiàn)以定義用于一般Java應(yīng)用程序的策略文件。
該方法從Java應(yīng)用程序的浮動(dòng)通路(swim-lane)中的啟動(dòng)塊403開始。 轉(zhuǎn)到塊406, Java應(yīng)用程序開始。在該階段,創(chuàng)建了要求的JVM,并且初始化相應(yīng)的JRE。具體地,這包括類"策略"的對(duì)象的創(chuàng)建,該類執(zhí)行對(duì)訪問
服務(wù)器的受保護(hù)資源的控制。在根據(jù)本發(fā)明實(shí)施例的解決方案中,該對(duì)象由 依次創(chuàng)建實(shí)際的安全管理器的打包器組成。通常,安全管理器然后從策略文
件中讀取可用的權(quán)限(使得它們保持不變直到其重新加載或外在刷新);同時(shí), 安全管理器將類"保護(hù)域"的對(duì)象(如果它還不存在)關(guān)聯(lián)到加載的Java應(yīng) 用程序的每個(gè)類,以便將授權(quán)權(quán)限與相應(yīng)的代碼源耦合,內(nèi)核異常和信任類 不需要任何明確權(quán)限。
Java應(yīng)用程序的運(yùn)行繼續(xù)到塊409。對(duì)于Java應(yīng)用程序要求的每個(gè)操作, 該方法然后在塊412分支。如果操作調(diào)用受限于安全約束的Java API,則執(zhí) 行塊413-442,然后活動(dòng)流程傳到塊445;相反,(從塊412)直接到達(dá)塊445。
現(xiàn)在考慮塊413,當(dāng)Java應(yīng)用程序需要對(duì)受保護(hù)資源執(zhí)行操作時(shí),相應(yīng) 的權(quán)限請(qǐng)求提交給打包器(通過用要求的權(quán)限作為自變量(argument)調(diào)用 方法"獲得權(quán)限")。在塊415,打包器將權(quán)限請(qǐng)求轉(zhuǎn)發(fā)到安全管理器(通過 對(duì)其調(diào)用相同方法)。
響應(yīng)于此,安全管理器在塊418驗(yàn)證要求的權(quán)限在策略文件中是否可用 (如在與相應(yīng)代碼源相關(guān)聯(lián)的對(duì)象中指示的)。然后,根據(jù)驗(yàn)證結(jié)果處理在塊 421分支。具體地,當(dāng)來(lái)自該位置和/或由Java應(yīng)用程序的簽名者簽名的代碼 源的授權(quán)條目存在時(shí),安全管理器在塊424授權(quán)要求的權(quán)限;該授權(quán)條目必 須依次包括在權(quán)限請(qǐng)求中指定的操作類型的權(quán)限條目(具有操作的動(dòng)作以及 權(quán)限類的簽名者的可能指示)。相反,在塊427安全管理器拒絕要求的權(quán)限。 在兩種情況中,驗(yàn)證結(jié)果在塊430返回給打包器;具體地,當(dāng)要求的權(quán)限被 授權(quán)時(shí),安全管理器啟動(dòng)正常返回,否則啟動(dòng)異常。
現(xiàn)在回來(lái)參照打包器的浮動(dòng)通路,活動(dòng)流程根據(jù)權(quán)限請(qǐng)求的結(jié)果在塊 433分支。如果權(quán)限請(qǐng)求;陂拒絕,則該方法進(jìn)行到塊436;在該階段中,丟失 權(quán)限的授權(quán)條目(具有符合策略文件語(yǔ)法的相應(yīng)權(quán)限條目的說明和Java應(yīng)用 程序源代碼的說明)被添加到日志文件。同時(shí),在塊439,對(duì)權(quán)限請(qǐng)求的響 應(yīng)被強(qiáng)制授權(quán)。然后,處理轉(zhuǎn)入塊442中;當(dāng)要求的權(quán)限被授權(quán)時(shí),從塊433 也直接達(dá)到同樣的目標(biāo)。現(xiàn)在參照塊442,打包器將這樣獲得的權(quán)限請(qǐng)求的 響應(yīng)(即,總是授權(quán)要求的權(quán)限)返回給Java應(yīng)用程序。然后,在塊445能 夠執(zhí)行(與要求的權(quán)限相關(guān)聯(lián)的)期望的操作。
現(xiàn)在在塊448進(jìn)行測(cè)試以確定Java應(yīng)用程序的運(yùn)行是否已完成。如果沒
有完成,則活動(dòng)流程返回到塊409以執(zhí)行下一個(gè)操作。在Java應(yīng)用程序運(yùn)行 的最后,在比較工具的浮動(dòng)通路中處理繼續(xù)到塊451;在該階—敬,將日志文 件與策略文件比較,以確定任何新的代碼源和先前存在的代碼源的任何新的 權(quán)限。然后,策略文件在塊454相應(yīng)地更新;這意味著添加之前不存在的任 何新的代碼源的權(quán)限的授權(quán)條目,以及在涉及先前存在的代碼源的任何新的 權(quán)限的各自授權(quán)條目中添加權(quán)限條目。這樣獲得的策略文件現(xiàn)在在塊457能 夠(例如,由具有要求的授權(quán)的系統(tǒng)管理員)部署到生產(chǎn)環(huán)境(不用任何打 包器),用于支持Java應(yīng)用程序的正確操作。然后,處理在同心的白/黑停止 圓環(huán)460處結(jié)束。
自然地,為了滿足本地和特定的需求,本領(lǐng)域技術(shù)人員可以將許多修改 和替代應(yīng)用到上述解決方案。具體地,盡管本發(fā)明已經(jīng)參照其(各)優(yōu)選實(shí) 施例用某種程度的細(xì)節(jié)描述,但是應(yīng)當(dāng)理解的是,各種形式和細(xì)節(jié)的省略、 替代和變化以及其它實(shí)施例是可能的;此外,清楚地意謂結(jié)合本發(fā)明的任何 公開的實(shí)施例描述的各特定元件和/或各方法步驟,可以并入任何其它實(shí)施例 作為設(shè)計(jì)選擇的 一般主題。
更具體地,強(qiáng)調(diào)的是盡管提出的解決方案已經(jīng)對(duì)定義軟件應(yīng)用程序的正 確操作要求的權(quán)限問題重點(diǎn)描述,但這不可以以限定的方式解釋;實(shí)際上, 同樣的技術(shù)還可用于將要求的資源(如登記條目、文件、端口等),更一般地 添加到涉及軟件應(yīng)用程序配置的任何活動(dòng)。
同樣,相同構(gòu)思還應(yīng)用于軟件應(yīng)用程序的任何其它操作,該操作要求用 于它們執(zhí)行的特定配置特征(如特定路徑或端口數(shù)的說明)。
此外,可以使用不同的解決方案用于截取軟件應(yīng)用程序操作的調(diào)用和/ 或用于模擬丟失配置特征的可用性(如,通過鉤掛(hooking)技術(shù))。
當(dāng)然,根據(jù)提出的方法的結(jié)果,可以執(zhí)行任何其它活動(dòng)用于配置軟件應(yīng) 用程序。例如,可以在運(yùn)行時(shí)直接更新策略文件,可能用它的立刻刷新。
如果權(quán)限以不同的方式定義(例如,處于軟件應(yīng)用程序的當(dāng)前用戶的水 平),則適用相似的考慮。
或者,可以實(shí)現(xiàn)用于授權(quán)/拒絕要求的權(quán)限的任何其它算法(例如,基于 更復(fù)雜的安全策略)。
當(dāng)權(quán)限存儲(chǔ)在任何其它安全結(jié)構(gòu)(如數(shù)據(jù)庫(kù))中時(shí),本發(fā)明的構(gòu)思也可適用。
無(wú)論如何,日志文件可以簡(jiǎn)單提供當(dāng)前安全策略的間隔尺寸(granularity ) 程度的指示(用作用于改進(jìn)可用權(quán)限的建議)。
即使在之前的描述中已經(jīng)參照J(rèn)ava應(yīng)用程序的策略文件,但這不要以限 制方式解釋;實(shí)際上,同樣的技術(shù)可用于構(gòu)成以任何其他語(yǔ)言編寫的軟件應(yīng) 用程序的等效的安全結(jié)構(gòu)(或更一般地用于它們的配置)。
沒有什么阻止以任何其它適于提供相同的效果的人工制品(artifact)來(lái) 替代打包器;例如,可以添加專用的用戶出口到安全管理器(其在測(cè)試環(huán)境 中使能,并在生產(chǎn)環(huán)境中無(wú)效)。
無(wú)論如何,不排除在生產(chǎn)環(huán)境中直接應(yīng)用相同的解決方案(例如,即使 在軟件應(yīng)用程序部署之后也監(jiān)視要求的權(quán)限)。
如果程序(其可用于實(shí)現(xiàn)本發(fā)明的每個(gè)實(shí)施例)以不同方式構(gòu)造、或如 果提供了另外的模塊或功能,則適用相似的考慮;同樣地,存儲(chǔ)器結(jié)構(gòu)可以 是其它類型或可用等效實(shí)體替代(不必由物理存儲(chǔ)介質(zhì)組成)。此外,提出的 解決方案有助于用等效方法實(shí)現(xiàn)(通過使用相似的步驟、移除一些不是基本 的步驟、或添加另外的可選的步驟,甚至以不同順序)。無(wú)論如何,該程序可 采取適于由或結(jié)合任何數(shù)據(jù)處理系統(tǒng)使用的任何形式,如外部或駐留軟件、 固件或微代碼(在對(duì)象代碼中或在源代碼中)。此外,可以在任何計(jì)算機(jī)可使 用的介質(zhì)上提供程序;該介質(zhì)能夠是適用于包括、存儲(chǔ)、傳達(dá)、傳播或傳送 程序的任何元件。例如,該介質(zhì)可以是電、磁、光、電磁、紅外或半導(dǎo)體類 型;該介質(zhì)的示例是硬盤(其中程序能被預(yù)加載)、可移除盤、帶、卡、線、 光纖、無(wú)線連接、網(wǎng)絡(luò)、廣播波等。無(wú)論如何,根據(jù)本發(fā)明的解決方案有助 于用硬件結(jié)構(gòu)(例如,集成在半導(dǎo)體材料的芯片中)、或用軟件和硬件的接合 實(shí)現(xiàn)。
或者,提出的方法可以在具有不同架構(gòu)或包括等效單元(如臨時(shí)存儲(chǔ)程 序或其部分、以在執(zhí)行期間減少對(duì)大存儲(chǔ)器的訪問的高速緩沖存儲(chǔ)器)的服 務(wù)器上執(zhí)行;同樣地,相同的解決方案也可適用于客戶端、或單機(jī)計(jì)算機(jī)。 更一般地,可以用任何代碼執(zhí)行實(shí)體(如PDA、移動(dòng)電話等)來(lái)替代計(jì)算機(jī)。
權(quán)利要求
1.一種用于配置軟件應(yīng)用程序的方法(403-460),該方法包括以下步驟在數(shù)據(jù)處理系統(tǒng)上運(yùn)行(406)軟件應(yīng)用程序,調(diào)用(409)軟件應(yīng)用程序的多個(gè)操作,每個(gè)操作的執(zhí)行需要軟件應(yīng)用程序的配置特征,驗(yàn)證(413-430)每個(gè)操作的配置特征的可用性,日志記錄(436)每個(gè)不可用配置特征的指示,模擬(439-442)每個(gè)不可用配置特征的可用性,以使能相應(yīng)操作的執(zhí)行,執(zhí)行(445)每個(gè)操作,以及根據(jù)日志記錄的不可用配置特征,配置(451-454)軟件應(yīng)用程序。
2. 根據(jù)權(quán)利要求1所述的方法(403 -460),其中每個(gè)配置特征包括用 于執(zhí)行相應(yīng)操作的權(quán)限的指示。
3. 根據(jù)權(quán)利要求2所述的方法(403 -460),其中驗(yàn)證步驟(413 - 430 ) 包括驗(yàn)證該權(quán)限以執(zhí)行每個(gè)操作,其中響應(yīng)于每個(gè)權(quán)限的否定,日志記錄步 驟(436)包括日志記錄被拒絕權(quán)限的指示,以及其中模擬步驟(439 )包括 響應(yīng)于該權(quán)限的否定,強(qiáng)制授權(quán)每個(gè)權(quán)限。
4. 根據(jù)權(quán)利要求3所述的方法(403 -460),其中可用的權(quán)限存儲(chǔ)在安 全結(jié)構(gòu)中,配置步驟(451 -454)包括根據(jù)日志記錄的被拒絕權(quán)限,更新(454)安全結(jié)構(gòu)。
5. 根據(jù)權(quán)利要求4所述的方法(403 -460),其中更新安全結(jié)構(gòu)的步驟 (454 )包括添加(454)日志記錄的被拒絕的權(quán)限到安全結(jié)構(gòu)。
6. 根據(jù)權(quán)利要求4或5所述的方法(403 -460),其中軟件應(yīng)用程序是 Java應(yīng)用程序,且安全結(jié)構(gòu)是策略文件。
7. 根據(jù)權(quán)利要求2至6的任一所述的方法(403 -460),其中通過安全 模塊授權(quán)或拒絕權(quán)限,驗(yàn)證步驟(413 -430)包括將用于驗(yàn)證權(quán)限以執(zhí)行每個(gè)操作的請(qǐng)求提交(413 )到打包安全模塊的輔 助模塊,將來(lái)自輔助模塊的請(qǐng)求轉(zhuǎn)發(fā)(415 )到安全模塊,以及將指示權(quán)限的授權(quán)或拒絕的響應(yīng)從安全模塊返回(418 -430)到輔助模 塊,日志記錄(436 )和模擬(439)步驟在輔助模塊的控制下執(zhí)行。
8. 根據(jù)權(quán)利要求1至7的任一所述的方法(403 - 460),其中運(yùn)行(406)、 提交(409)、驗(yàn)證(413 -430)、日志記錄(436)、模擬(439)和配置(451 -454)步驟在測(cè)試環(huán)境中執(zhí)行,該方法還包括以下步驟在生產(chǎn)環(huán)境中,部署(457)配置的軟件應(yīng)用程序。
9. 一種系統(tǒng)(100 ),包括用于執(zhí)行根據(jù)權(quán)利要求1至8的任一的方法(430 —460)的各步驟的裝置(300)。
全文摘要
提出了一種解決方案(300),用于在Java環(huán)境中自動(dòng)地構(gòu)成策略文件(320)。為此目的,為負(fù)責(zé)控制任何對(duì)受保護(hù)資源的訪問的安全管理器(315)提供了打包器(325)。一般的Java應(yīng)用程序(310)運(yùn)行于測(cè)試環(huán)境中。每當(dāng)必須對(duì)受保護(hù)資源執(zhí)行特定操作時(shí),Java應(yīng)用程序提交相應(yīng)的權(quán)限請(qǐng)求給打包器(A1)。該打包器將權(quán)限請(qǐng)求轉(zhuǎn)發(fā)到安全管理器(A2),其驗(yàn)證策略文件(A3-A4)中要求的權(quán)限是否可用。打包器日志記錄任何被拒絕的權(quán)限(A5);無(wú)論如何,打包器總是將要求的權(quán)限授權(quán)給Java應(yīng)用程序(A6-A7),使得其操作能夠繼續(xù)而沒有任何問題。在Java應(yīng)用程序運(yùn)行的最后,日志記錄的丟失權(quán)限被添加到策略文件(A8)。
文檔編號(hào)G06F21/22GK101196974SQ200710186809
公開日2008年6月11日 申請(qǐng)日期2007年11月14日 優(yōu)先權(quán)日2006年12月6日
發(fā)明者克勞迪奧·摩吉亞, 曼紐拉·巴薩尼, 蓋塔諾·費(fèi)拉里, 馬科·塞奇 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司