專利名稱:基于數(shù)據(jù)驅(qū)動角色的安全的制作方法
技術領域:
本發(fā)明涉及在數(shù)據(jù)上下文和對與該數(shù)據(jù)上下文有關的控制表達式的求值的基礎上的基于角色的訪問控制。
背景技術:
作為關于某些常規(guī)系統(tǒng)的背景,經(jīng)由訪問控制系統(tǒng)對數(shù)據(jù)資源的訪問和/或?qū)κ鼙Wo系統(tǒng)的操作在傳統(tǒng)上通過將一個或多個訪問特權(quán)分配給受保護系統(tǒng)的一個或多個用戶來實現(xiàn)。在這點上,常規(guī)的基于角色的訪問控制(RBAC)技術使得用戶能夠基于分配給該用戶的角色來訪問受保護的系統(tǒng)資源。由此,用戶被準許基于分配給該角色的一個或多個訪問特權(quán)來訪問受保護系統(tǒng)和/或?qū)ζ鋱?zhí)行操作。例如,可以將諸如“創(chuàng)建存儲卷,,和“刪除存儲卷”之類的受保護系統(tǒng)操作(在這種情況下,存儲系統(tǒng)是受保護系統(tǒng))分配給“管理員”角色。當用戶被分配管理員角色時,用戶可以創(chuàng)建和/或刪除存儲系統(tǒng)中包括的任何存儲卷。RBAC因此是基于角色和為該角色定義的許可來將系統(tǒng)或系統(tǒng)資源的訪問限于經(jīng)授權(quán)的用戶的一種方法。在組織內(nèi),為各種職業(yè)職責,諸如經(jīng)理或管理員創(chuàng)建角色。將執(zhí)行特定操作的許可分配給特定角色。員工或其他系統(tǒng)用戶的成員被分配特定角色,并且那些用戶通過這些角色分配來獲得執(zhí)行特定系統(tǒng)功能的許可。因為許可不是直接分配給用戶而是通過他們的角色,所以對各個用戶權(quán)限的管理變成了向合適的用戶分配合適的角色的問題。通常,角色被表示為標識符(角色名或ID)和角色成員ID列表,例如,作為安全標識符 (SID)存儲在基于Windows的系統(tǒng)中的用戶或組,或者基于Unix的系統(tǒng)中的用戶實體名。為了補充角色分配,在常規(guī)訪問控制列表(ACL)模型中,對象或資源可被分配描述可向其授予對對象或資源的訪問權(quán)的用戶的有效集的角色ID集。通常在操作中,基于用戶對操作或資源作出請求的用戶上下文,即,基于用戶被允許承擔什么角色并且基于這些角色根據(jù)對正被訪問的給定對象或資源施加的訪問控制列表(ACL)決定什么許可集,系統(tǒng)作出是否準許給定用戶正在采取的動作的確定。在這點上,用戶可以承擔的角色集和為給定角色在對象上定義的許可集兩者都是完全聲明性的并因此是靜態(tài)地定義的。雖然這對于已知范圍和規(guī)模的系統(tǒng)或資源的分層結(jié)構(gòu)一般是足夠的,但當用戶數(shù)量和角色類型以及他們之間的關系變得重要或頻繁變化時,靜態(tài)地定義訪問許可和用戶角色并使得他們保持最新并且與正在變化的資源和資源分層結(jié)構(gòu)保持一致可能造成麻煩的安全配置管理挑戰(zhàn)。在這點上,傳統(tǒng)的訪問控制管理模型是基于對象的,由此在該對象或?qū)ο笕萜魈?(例如,在ACL中)指定訪問控制,并且通常管理員或其他經(jīng)授權(quán)的實體指定要授予該對象的許可。管理員因此將組織授權(quán)策略轉(zhuǎn)換成對對象的許可每一對象具有授予表示組織內(nèi)的各個用戶和組的角色的訪問許可列表。與必須定義用于控制對給定數(shù)據(jù)系統(tǒng)的許可的自定義代碼的情形相比,RBAC通過允許按用戶職業(yè)職責來管理許可來簡化訪問控制管理并提升企業(yè)環(huán)境中的可管理性。基于角色的訪問控制的某些目標可以使用組來實現(xiàn)。組對應于員工角色,而應用管理員可以通過在ACL中向該組授予對對象的許可來指定該角色所需的許可。然而,隨著對象集合增長,管理員管理許可的場所數(shù)量也隨之增長。頻繁使用資源組和用戶組可以幫助最小化這一效果,但這需要持續(xù)的實踐和管理員之間的協(xié)調(diào)以及資源組的精確定義。這些過程減緩了管理過程,所以管理員常常避免使用組。另外,隨著對象數(shù)量的增長,跨應用查詢對特定組或角色的經(jīng)授予的訪問變得困難。例如,為了準確地確定向用戶或組授予了什么許可,管理員一般檢查每一對象上的許可。因為有太多的對象要查詢,所以可能難以驗證關于特定組或用戶的訪問控制的狀態(tài)。此外,在重要得多的變化發(fā)生在組織的資源分層結(jié)構(gòu)中的情況下,諸如例如當人力資源信息管理系統(tǒng)記錄到不同部門的職員調(diào)動時,可能需要對受影響的用戶對象和任何適用的ACL 都進行更新,并且如果未能這么做的話,則可能導致不正確的訪問許可或系統(tǒng)的未定義狀態(tài)。具體地,這些困難是由于在ACL中顯式地分配許可而沒有顧及受保護資源的擴展屬性而導致的。當今基于角色的安全系統(tǒng)的上述缺點僅旨在提供常規(guī)系統(tǒng)的一些問題的概覽,并且不旨在是窮盡性的。在仔細閱讀了以下具體實施方式
后,當今領域的其他問題和各非限制性實施例的對應好處可變得顯而易見。
發(fā)明內(nèi)容
此處提供了簡化概述以幫助能夠?qū)σ韵赂敿毜拿枋龊透綀D中的示例性、非限制性實施例的各方面有基本或大體的理解。然而,本發(fā)明內(nèi)容并不旨在作為詳盡的或窮盡的概覽。相反,本發(fā)明內(nèi)容的唯一目的是以簡化的形式來提出與一些示例性非限制性實施例相關的一些概念,作為以下各實施例的更為詳細的描述的序言。在各實施例中,提供了基于數(shù)據(jù)驅(qū)動角色的安全。在一個實施例中,在登錄時,系統(tǒng)采用連接用戶的用戶上下文來查詢與對計算系統(tǒng)的計算對象的訪問有關的數(shù)據(jù)上下文。 然后,當計算系統(tǒng)接收到對計算對象的訪問請求時,對為正被訪問的計算對象指定的一個或多個控制表達式進行求值。對控制表達式的求值可以引用用戶上下文或先前建立的數(shù)據(jù)上下文,并且基于該數(shù)據(jù)上下文來形成有效許可集。如果該許可集包括對該訪問請求的適當許可,則授予對計算對象的訪問。在另一實施例中,計算機實現(xiàn)的系統(tǒng)包括被配置成響應于用戶登錄來為對計算系統(tǒng)的數(shù)據(jù)對象的訪問請求查詢數(shù)據(jù)上下文的登錄組件,其中數(shù)據(jù)上下文是基于正被訪問的數(shù)據(jù)對象來檢索的。該系統(tǒng)還包括被配置成響應于對數(shù)據(jù)對象的訪問請求動態(tài)地對訪問控制對象的確定有效許可集的控制表達式進行求值的訪問控制組件,這進一步確定了是否授予訪問權(quán)。在另一實施例中,方法包括經(jīng)由計算設備的用戶界面接收關于應用的應用功能的第一輸入,對于該應用的應用功能,要為該應用功能的用戶應用基于角色的安全控制。該方法還包括經(jīng)由用戶界面接收關于適用于執(zhí)行應用功能的數(shù)據(jù)集的至少一個數(shù)據(jù)字段的第二輸入,并且結(jié)合對應用功能的潛在使用,經(jīng)由用戶界面接收關于要從該數(shù)據(jù)集中提取來建立在登錄時適用于給定用戶的數(shù)據(jù)上下文的數(shù)據(jù)實例的第三輸入。此外,該方法包括經(jīng)由用戶界面接收第四輸入,該第四輸入至少部分地基于第一、第二和第三輸入來定義用于與對應用功能的潛在使用有關的動態(tài)求值的基于角色的訪問控制對象的至少一個控制表達式。
5
以下更詳細地描述其他實施例和各非限制性示例、場景和實現(xiàn)。
各非限制性實施例參考附圖來進一步描述,附圖中圖1是采用樹來表示數(shù)據(jù)對象和屬性的基于角色的安全系統(tǒng)的說明性示例的框圖;圖2是可以結(jié)合保護圖1的數(shù)據(jù)對象來使用的訪問控制對象的說明性示例的框圖;圖3是圖1的說明性示例的框圖,其中將員工重新組織到組織的不同部分和相應
結(jié)果;圖4是基于圖3中示出的員工的重新組織對圖2的訪問控制對象作出的變更的框圖;圖5是示出基于數(shù)據(jù)驅(qū)動角色的安全的非限制性實施例的系統(tǒng)圖;圖6是示出根據(jù)基于數(shù)據(jù)驅(qū)動角色的安全的一個方面的在用戶登錄時對數(shù)據(jù)上下文的檢索的框圖;圖7是示出根據(jù)基于數(shù)據(jù)驅(qū)動角色的安全的一個實施例的訪問控制對象中的控制表達式的示例求值的框圖;圖8是示出基于從訪問控制對象的控制表達式的求值中導出的訪問控制對象的許可集的對訪問的授予(或拒絕)的框圖;圖9是用于定義控制表達式以結(jié)合訪問控制對象來使用以實現(xiàn)基于數(shù)據(jù)驅(qū)動角色的安全的示例性、非限制性用戶界面的框圖;圖10是根據(jù)一個實施例的基于數(shù)據(jù)驅(qū)動角色的安全的示例性、非限制性過程的流程圖;圖11是根據(jù)一個實施例的基于數(shù)據(jù)驅(qū)動角色的安全的另一示例性、非限制性過程的流程圖;圖12是表示其中可實現(xiàn)此處所描述的各實施例的示例性、非限制性聯(lián)網(wǎng)環(huán)境的框圖;以及圖13是表示其中可實現(xiàn)此處所描述的各實施例的一個或多個方面的示例性、非限制性計算系統(tǒng)或操作環(huán)境的框圖。
具體實施例方式概覽如在背景技術中所討論的,基于角色的訪問控制允許管理員通過創(chuàng)建被稱為角色的對象來按照公司的組織結(jié)構(gòu)指定訪問控制。用戶被分配角色來執(zhí)行相關聯(lián)的職業(yè)職責。 角色定義資源集上的授權(quán)許可。在RBAC模型中,管理員使用角色來管理許可和分配。例如, 公司可以創(chuàng)建被稱為銷售經(jīng)理的角色,該角色具有銷售經(jīng)理為他們的工作所需的許可。在雇用銷售經(jīng)理時,他們被分配銷售經(jīng)理角色并且因此立即具有該職業(yè)的許可。當他們離開銷售經(jīng)理的職位時,他們從銷售經(jīng)理角色中被移除并且不再具有銷售經(jīng)理訪問權(quán)。因為角色允許按照公司的組織模型來授予訪問權(quán),所以RBAC是管理員指定訪問控制的一種直觀的方式。簡言之,RBAC將用戶角色映射到應用許可,從而使得訪問控制管理可以按用戶角色來實現(xiàn)。RBAC系統(tǒng)隨后將用戶的角色成員資格轉(zhuǎn)換成應用許可。因為許可是經(jīng)由角色來授予的,所以可以經(jīng)由角色而不必檢查特定資源來查詢和改變許可。然而,如以上背景技術中所提到的,復雜組織的實際情況是在角色之間存在數(shù)據(jù)依賴性,從而使得在可能導致對編輯給定資源的許可的授予的一個時刻適用的用戶角色在另一時刻可能導致對編輯該給定資源的訪問權(quán)的拒絕。例如,對于跟蹤員工信息的人力資源應用,每一員工進而具有經(jīng)理,而經(jīng)理又具有經(jīng)理,后者進而還有經(jīng)理,以此類推,該序列在最高層員工,例如,公司的創(chuàng)建者處終止。因此,術語“經(jīng)理”作為角色具有意義并且該經(jīng)理角色具有特定許可,但這些許可是針對由該經(jīng)理管理的人的而不是針對所有員工的。因此,當個體改變公司內(nèi)的子組織時,許可結(jié)構(gòu)方面的改變多于該個體許可的改變。具體地,該個體的經(jīng)理的許可結(jié)構(gòu)改變,并且作為該個體調(diào)職到不同子組織的結(jié)果, 取決于先前由該個體管理的人最終在組織結(jié)構(gòu)中的位置,他們的許可和角色也可能已經(jīng)改變。因此應該將這些改變傳播到ACL,ACL管理組織的人員對各個合適資源的訪問權(quán),以確保個體不再對該個體曾經(jīng)具有訪問權(quán)的特定的先前資源具有訪問權(quán),并且確保該個體對適于分層結(jié)構(gòu)中的新職位的特定新資源具有訪問權(quán)。如果未作出這些改變,則將得到不正確的許可,甚至更糟的是,系統(tǒng)可能進入可能難以從中恢復的未定義狀態(tài)。下面提供這些和其他各示例性、非限制性實施例和場景的進一步細節(jié)。基于數(shù)據(jù)驅(qū)動角色的訪問如所提到的,在基于角色的許可的上下文中,在大量的分層結(jié)構(gòu)重新組織的情況下,底層數(shù)據(jù)的復雜分層結(jié)構(gòu)可能引入極大的負擔,以及作為該重新組織的結(jié)果可能受到影響的數(shù)據(jù)依賴性。更一般地,對于其安全不僅取決于請求許可的個體是誰,還取決于可能頻繁變更的其他底層數(shù)據(jù)的任何應用,個體信息和相關連的ACL的更新對于系統(tǒng)的管理員確保對應用施加正確的許可結(jié)構(gòu)而言可能是一個沉重的負擔。作為說明性示例,圖1示出跟蹤公司的全球員工和員工屬性的人力資源應用,如樹結(jié)構(gòu)100所表示的。雖然用相對較少數(shù)量的員工來示出圖1,但可以理解,某些全球最大的公司具有幾萬或幾十萬員工,并且因此,該示例是為了概念說明的簡明起見,而非旨在弱化由可能導致管理具有內(nèi)部對象依賴性的大量數(shù)據(jù)對象的問題所引入的復雜性或負擔。如所描繪的,頂層員工具有用戶(例如,用戶名或ID) 102,接著是向用戶102報告的用戶104、 106和108。用戶104和108進而具有向他們報告的員工(未示出),并且用戶106具有向用戶106報告的用戶110、112和114。在這點上,用戶對象擁有可能適用于給定應用,此處作為示例為人力資源應用的特定屬性120。例如,屬性120可以包括地址信息122(例如,家庭地址)、頭銜信息124(例如,產(chǎn)品單元經(jīng)理)、聯(lián)系信息126(例如,電話號碼或電子郵件地址)或工資/級別信息128。在這點上,這些屬性120中的某些可由用戶114直接編輯,諸如家庭地址信息122。 然而,某些屬性可能是不可編輯的,諸如頭銜信息124。某些信息對于全體人員或全體人員的子集可能是公共的,諸如聯(lián)系信息126。其他信息對除了所選的少數(shù)個體之外的全體人員可能是不公開的,諸如工資/級別信息128。例如,情況可能是只有用戶114的經(jīng)理,即用戶 106或用戶102可以改變與用戶114相關連的頭銜信息124。
在ACL側(cè),為實現(xiàn)這些種類的許可,例如,誰可以查看以及誰不可以查看,誰可以授權(quán)變更或作出變更以及誰不可以等等,與用戶114相關連的ACL將指定什么角色可以編輯頭銜、改變工資等等。然而,與在這樣的大型組織內(nèi)的角色有關的問題是角色“經(jīng)理”對不同的員工具有不同的意義,因為大多數(shù)員工具有不同的經(jīng)理。并且因此,將在ACL中為給定用戶對象,諸如用戶114對象指定特定經(jīng)理,S卩,圖1中的用戶106和102,而用戶108盡管在用戶114之上但無法改變用戶114的頭銜信息124,因為用戶108不是用戶114的經(jīng)理。為了說明,圖2示出與用戶114相關聯(lián)的對象,即,表示用戶114和屬性120的數(shù)據(jù)。在這點上,為實現(xiàn)ACL的安全,ACL 130包括角色和這些角色的許可的列表。如所提到的,因為經(jīng)理角色140本身不是確定給定用戶是否具有改變與用戶114相關聯(lián)的頭銜信息的許可的足夠信息,所以在ACL 130中枚舉確實具有許可的經(jīng)理ID,例如,用戶102(例如, 經(jīng)理IDl 142)和用戶106(例如,經(jīng)理ID2 144)兩者都被標識為具有編輯頭銜或?qū)τ脩?114執(zhí)行其他動作的許可,因為他們是用戶114名副其實的經(jīng)理。ACL 130中未列出的用戶 114的任何經(jīng)理將不能夠作為關于用戶114的經(jīng)理進行動作。如所提到的,當用戶114(或任何用戶)切換到樹結(jié)構(gòu)100的不同部分時問題產(chǎn)生了,例如,從公司的一個子組重新組織到另一子組,諸如從一個產(chǎn)品組到另一產(chǎn)品組。員工本身從樹結(jié)構(gòu)100的一個部分到另一部分的移動是相對直接的。在這種情況下,一旦移動被授權(quán)并如圖3所示,管理員將用戶114從樹結(jié)構(gòu)100的一個部分重新定位到另一部分。然而,樹結(jié)構(gòu)100中的這種移動不改變與表示用戶114的對象相關聯(lián)的安全設置。如圖4所示,這種重新組織還將伴隨與用戶114相關聯(lián)的ACL的手動變更。例如,如果需要更新的許可集,則要改變與經(jīng)理角色140相關聯(lián)的、定義哪些經(jīng)理能夠執(zhí)行與用戶114有關的經(jīng)理角色的經(jīng)理ID。具體地,用戶106不再是用戶114的經(jīng)理并因此用戶106將從ACL 130中被刪除,并且表示用戶104的經(jīng)理ID3 146被添加到定義誰可以用關于該個體的經(jīng)理角色來進行動作的經(jīng)理ID列表。如果這種類型的事件偶爾發(fā)生,或者如果樹相對較小,則管理開銷保持相對較低。 然而,如果樹較大或如果移動發(fā)生地較頻繁,或者如果經(jīng)由ACL對對象授予的許可集較大且復雜,則管理負擔可能是壓倒性的。另外,如果管理員無法正確地更新ACL,或在這么做的時候犯了錯誤,則安全系統(tǒng)在授予許可時可能易于出錯,或到達其他依賴性被破壞的不穩(wěn)定狀態(tài)或變成循環(huán)。因此,在各非限制性實施例中,提供了數(shù)據(jù)驅(qū)動的基于角色的系統(tǒng)。具體地,代替 ACL中的顯式ID或除此之外,可以提供基于該用戶的當前數(shù)據(jù)上下文來進行求值的控制表達式,從而極大地簡化復雜安全要求的設計,其中單個角色不能被推廣用于承擔該角色的職責的所有成員。而在過去,系統(tǒng)使用自定義應用代碼來處理復雜的安全表達式的求值,這些系統(tǒng)花費時間來設計,并且如果安全要求頻繁地改變,則每一次更新自定義應用代碼都牽涉到極大的開發(fā)和維護成本。如果這些自定義應用代碼包含邏輯或編程差錯,則可能無意地損害安全或者可能招致系統(tǒng)停機時間。因此,除了應用本身之外,根據(jù)底層數(shù)據(jù)用編程方式驅(qū)動安全訪問決策的能力是有益的。因此,在各實施例中,提供了用于基于角色的安全的數(shù)據(jù)驅(qū)動機制來實現(xiàn)使用數(shù)據(jù)本身作為訪問控制決策的輸入的基于角色的訪問控制。在某些合適的應用中,依賴上下文且通常無法用上下文無關的方式被映射到用戶列表的概念可被表示為安全角色?,F(xiàn)有方法的某些非限制性好處是圍繞許可管理的減少的開銷和訪問控制意圖的更直接的表達式。如所提到的,訪問控制的常規(guī)方法依賴于與數(shù)據(jù)集分開維護的靜態(tài)許可授予集, 該許可授予集授權(quán)用戶、組或角色集來訪問特定數(shù)據(jù)元素。雖然是可推廣的,但在受保護數(shù)據(jù)集的結(jié)構(gòu)足以具備描述性來通知訪問控制的情況下,例如,經(jīng)理可以修改Employee. Salary (員工.工資),如果 User. ID (員工.ID) = Employee. ManagerID (員工.經(jīng)理 ID), 則能夠用公式方式來表達訪問控制意圖是有用的。作為對比,常規(guī)的基于角色的安全過程迫使組織中的每個個體經(jīng)理被授予修改他們的直接下屬的工資的許可。因此,使用根據(jù)此處描述的各實施例的數(shù)據(jù)驅(qū)動的機制提供了一種關于在受保護數(shù)據(jù)集中定義的結(jié)構(gòu)表達訪問控制策略的方式。然后,可以將諸如上面的經(jīng)理定義之類的一次性表達式形的安全角色定義用于訪問控制,而不必將用戶身份的特定集合指定為經(jīng)理角色的成員。以下結(jié)合依賴數(shù)據(jù)的角色的實現(xiàn)、依賴數(shù)據(jù)的角色成員資格確定和依賴數(shù)據(jù)的許可求值來討論附加詳細內(nèi)容和示例。在一個實施例中,用于數(shù)據(jù)安全的數(shù)據(jù)驅(qū)動的機制包括兩個部分。第一部分是基于角色的訪問控制的一般框架內(nèi)的一種新的安全角色,它可以被稱為派生角色(DROL),因為DROL用來表達不是由用戶ID的顯式枚舉來填充,而是由他們出現(xiàn)在其中的數(shù)據(jù)上下文的某一方面來定義的角色。第二部分是對訪問控制過程的修改,它可以被稱為依賴數(shù)據(jù)的角色訪問控制(DRAC)。當用戶試圖訪問數(shù)據(jù)元素時適用的DRAC具有通過DROL決定的該數(shù)據(jù)元素上的許可授予。包括這兩部分的機制可以單獨地實現(xiàn)或者作為普通的基于角色的訪問控制系統(tǒng)的擴充來實現(xiàn)。如所提到的,常規(guī)的安全角色由名稱和/或ID來標識并且具有成員列表。另一方面,對于DR0L,例如如下動態(tài)地確定成員資格。DROL具有三個應用定義的參數(shù)相關聯(lián)的實體、成員查詢和控制表達式。在一個實施例中,在認證用戶并確定了角色成員資格時,首先,捕捉用戶認證權(quán)標的有用方面,例如,文本用戶名和二進制SID以及任何可用的應用級標識信息。接著,針對相關聯(lián)的實體執(zhí)行成員查詢,該實體提供來自先前步驟的元素作為查詢變量。接著,如果查詢返回了一實體,則確認角色成員資格并且將所返回的實體保存在用戶上下文中作為在DRAC過程中后續(xù)使用的角色上下文。使用DRAC過程來評估是否要在運行時兌現(xiàn)通過DROL決定的許可授予。根據(jù)DROL 中指定的控制表達式,針對角色上下文來對數(shù)據(jù)元素或控制上下文進行求值。在一個實施例中,出于這種求值的目的,將控制上下文和角色上下文作為對象類型的變量來對待。如果控制表達式求值為真,則兌現(xiàn)許可授予。如果否,則忽略許可授予。圖5是示出將控制表達式包括在ACL 508中用于動態(tài)求值的基于數(shù)據(jù)驅(qū)動角色的安全的非限制性實施例的系統(tǒng)框圖。在這點上,用戶500在510處登錄到系統(tǒng)502的應用 504??梢岳斫?,此處描述的DRAC技術可以在系統(tǒng)級以及應用級實現(xiàn)。為了概念說明,此處的描述適用于基于員工的數(shù)據(jù)的示例,但還可以將類似的技術應用于文件系統(tǒng)的對象,或者需要基于動態(tài)角色限制對對象的訪問的任何情況。在登錄時,登錄組件550檢索適用于用戶500使用應用504的數(shù)據(jù)上下文520。例如,登錄組件可以響應于接收到基于標識用戶的用戶憑證的登錄來查詢數(shù)據(jù)上下文。因此,當用戶500做出對數(shù)據(jù)506的請求時,訪問控制組件560相對于數(shù)據(jù)上下文520動態(tài)地對ACL 508的控制表達式進行求值來在540處確定是否可以向給定用戶請求授予許可。例如,訪問控制組件560可針對數(shù)據(jù)對象的當前版本動態(tài)地對程序表達式進行求值。圖6是示出根據(jù)基于數(shù)據(jù)驅(qū)動角色的安全的一個方面的在用戶登錄時對數(shù)據(jù)上下文的檢索的框圖。為了在先前結(jié)合圖1-4討論的示例的上下文中說明基于數(shù)據(jù)驅(qū)動角色的安全,考慮用戶114已經(jīng)被重新組織到用戶104之下而非用戶106之下的情況。如所提到的,因為當用戶104在樹中的位置改變時安全設置不會自動更新,所以根據(jù)一個實施例, 當用戶104登錄到應用時,查詢會自動地返回用戶104的數(shù)據(jù)上下文。在這點上,可以將任何屬性120作為用戶104的數(shù)據(jù)上下文160的數(shù)據(jù)的實例來返回。例如,屬性120可以包括列出由該個體管理的人的受管ID 150,諸如用戶114(或者可以通過檢查應用于組織圖表的樹結(jié)構(gòu)來提取該信息)。在當前示例中,假定系統(tǒng)/應用想要確定用戶104的直接下屬是誰,因為用戶104希望對其中的一個員工的頭銜作出變更。作為對最新信息的實時檢索的結(jié)果,在這種情況下,作為數(shù)據(jù)上下文160的一部分,通過檢查受管ID 150來確定作為重新組織的一部分,用戶104將用戶114作為直接下屬。圖7是示出根據(jù)基于數(shù)據(jù)驅(qū)動角色的安全的一個實施例的訪問控制對象中的控制表達式的示例求值的框圖。在這點上,如所提到的,用戶114的職位變更不會自動地改變用戶104或用戶114的相關聯(lián)的ACL。因此在當前示例中,定義包括DROL的ACL 700,例如經(jīng)理角色740,它可任選地包括某些顯式受管ID 760(例如,明確被枚舉為用戶104的直接下屬的那些人),并且還可包括來自可動態(tài)地從根據(jù)圖6的示例過程檢索出的數(shù)據(jù)上下文中導出的控制表達式的受管ID 770。在相對于數(shù)據(jù)上下文進行動態(tài)求值之后,確定用戶 114實際上是用戶104的直接下屬之一,并因此根據(jù)該角色將準許作為經(jīng)理被準許的任何操作。圖8是示出基于從訪問控制對象的控制表達式的求值中導出的訪問控制對象的許可集的訪問的授予(或拒絕)的框圖。在這點上,根據(jù)圖6-7的示例,如果用戶104請求對表示用戶114的對象的變更800,則基于ACL 700中的控制表達式的動態(tài)求值,將授予該請求,假定對象中正被改變的項在經(jīng)理角色的范圍之內(nèi)。圖9是用于定義控制表達式以結(jié)合訪問控制對象來使用以實現(xiàn)基于數(shù)據(jù)驅(qū)動角色的安全的示例性、非限制性用戶界面的框圖。由此,所示具有用戶界面900的工具只是用于創(chuàng)建用于如上所述地定義動態(tài)角色的控制表達式的工具的一個示例,并且不應該被認為是限制性的。例如,經(jīng)由諸如經(jīng)理之類的給定角色的簡單UI,該工具的用戶可以選擇給定應用的功能910,例如,編輯、查看、打印、分發(fā)等等,并且還可以輸入哪些數(shù)據(jù)字段920適用于該應用功能。例如,在以上示例中,受管ID數(shù)據(jù)字段將與改變經(jīng)理角色的能力有關。接著, 還選擇當用戶登錄到應用時要作為數(shù)據(jù)上下文的一部分的實例來被檢索的數(shù)據(jù)字段940。 基于這些片段,控制表達式輸入組件930可以形成控制表達式,例如通過指定當角色條件由數(shù)據(jù)上下文滿足時求值為真的布爾表達式。結(jié)果,可輸出該控制表達式來由基于數(shù)據(jù)驅(qū)動角色的安全系統(tǒng)在基于角色的訪問控制對象中使用,諸如輸出以用作具有這些控制表達式 950 的 ACL。圖10是根據(jù)一個實施例的基于數(shù)據(jù)驅(qū)動角色的安全的示例性、非限制性過程的流程圖。在1000處,系統(tǒng)查詢與代表用戶身份的計算設備對計算系統(tǒng)的計算對象的潛在訪問有關的數(shù)據(jù)上下文。例如,查詢可以包括響應于接收到基于標識用戶身份的憑證的登錄來查詢數(shù)據(jù)上下文。在1010處,計算設備接收訪問計算對象的請求。在1020處,基于數(shù)據(jù)上下文來動態(tài)地對管理對計算對象的訪問的對象的控制表達式進行求值以形成許可集。求值可包括針對一個或多個計算對象的一個或多個當前版本來對程序表達式進行求值。在 1030處,如果許可集包括對訪問請求的許可,則授予對計算對象的訪問。圖11是根據(jù)一個實施例的基于數(shù)據(jù)驅(qū)動角色的安全的另一示例性、非限制性過程的流程圖。在1100處,經(jīng)由計算設備的用戶界面接收關于應用的應用功能的輸入,對于該應用的應用功能,要為該應用功能的用戶應用基于角色的安全控制。在1110處,接收關于適用于執(zhí)行該應用功能的數(shù)據(jù)集的數(shù)據(jù)字段的進一步輸入。在1120處,接收關于要從該數(shù)據(jù)集中提取來建立數(shù)據(jù)上下文的數(shù)據(jù)實例的輸入,結(jié)合對應用功能的潛在使用,該數(shù)據(jù)上下文在登錄時適用于給定用戶。在1130處,經(jīng)由用戶界面基于各種輸入來接收附加輸入,該附加輸入定義用于與不同用戶對應用功能的潛在使用有關的動態(tài)求值的訪問控制對象的控制表達式,并結(jié)合根據(jù)此處描述的一個或多個實施例的數(shù)據(jù)驅(qū)動角色的安全系統(tǒng)來確定它們的許可。示例性聯(lián)網(wǎng)和分布式環(huán)境本領域普通技術人員可以理解,此處所描述的基于數(shù)據(jù)驅(qū)動角色的安全的方法和設備的各實施例和有關的各實施例可以結(jié)合任何計算機或其它客戶機或服務器設備來實現(xiàn),該任何計算機或其它客戶機或服務器設備可作為計算機網(wǎng)絡的一部分來部署或者被部署在分布式計算環(huán)境中,并且可以連接到任何種類的數(shù)據(jù)存儲。就此,此處所描述的各實施例可以在具有任意數(shù)量的存儲器或存儲單元以及出現(xiàn)在任意數(shù)量的存儲單元上的任意數(shù)量的應用程序和進程的任何計算機系統(tǒng)和環(huán)境中實現(xiàn)。這包括但不限于具有部署在具有遠程或本地存儲的網(wǎng)絡環(huán)境或分布式計算環(huán)境中的服務器計算機和客戶計算機的環(huán)境。附圖12提供了示例性聯(lián)網(wǎng)或分布式計算環(huán)境的非限制性示意圖。該分布式計算環(huán)境包括計算對象或設備1210、1212等以及計算對象或設備1220、1222、12M、1226、12 等,這些計算對象或設備可包括如由應用1230、1232、1234、1236、1238表示的程序、方法、 數(shù)據(jù)存儲、可編程邏輯等??梢岳斫?,計算對象或設備1210、1212等以及計算對象或設備 1220、1222、1224、1226、1228等可包括不同的設備,諸如PDA、音頻/視頻設備、移動電話、 MP3播放器、膝上型計算機等。計算對象或設備1210、1212等以及計算對象或設備1220、1222、1224、1226,1228 等可經(jīng)由通信網(wǎng)絡1240或直接或間接地與一個或多個其他計算對象或設備1210、1212等以及計算對象或設備1220、1222、12M、1226、12 等通信。即使在附圖12中被示為單個元件,但網(wǎng)絡1240可包括向附圖12的系統(tǒng)提供服務的其他計算對象或解釋設備,和/或可表示未示出的多個互連網(wǎng)絡。計算對象或設備1210、1212等或計算對象或設備1220、1222、 1224U226U228等還可以含有應用,諸如可以利用API或其他對象、軟件、固件和/或硬件的、適于實現(xiàn)或與根據(jù)各實施例所提供的基于數(shù)據(jù)驅(qū)動角色的安全進行通信的應用1230、 1232、1234、1236、1238。存在支持分布式計算環(huán)境的各種系統(tǒng)、組件和網(wǎng)絡配置。例如,計算系統(tǒng)可以由有線或無線系統(tǒng)、本地網(wǎng)絡或廣泛分布的網(wǎng)絡連接在一起。當前,許多網(wǎng)絡被耦合至因特網(wǎng), 后者為廣泛分布的計算提供了基礎結(jié)構(gòu)并包含許多不同的網(wǎng)絡,但任何網(wǎng)絡基礎結(jié)構(gòu)可用于變得與如各實施例中所描述的技術相關聯(lián)的示例性通信。因此,可以利用諸如客戶機/服務器、對等、或混合體系結(jié)構(gòu)等網(wǎng)絡拓撲結(jié)構(gòu)和網(wǎng)絡基礎結(jié)構(gòu)的主機。在客戶機/服務器體系結(jié)構(gòu)中,尤其在聯(lián)網(wǎng)系統(tǒng)中,客戶機通常是訪問由例如服務器等另一計算機提供的共享的網(wǎng)絡資源的計算機。在圖12的圖示中,作為非限制性示例,計算對象或設備1220、1222、1224、1226,1228等可被認為是客戶機而計算對象或設備1210、1212等可被認為是服務器,其中服務器提供數(shù)據(jù)服務,諸如從諸如計算對象或設備1220、1222、12對、1226、12觀等客戶機接收數(shù)據(jù)、存儲數(shù)據(jù)、處理數(shù)據(jù)、向諸如計算對象或設備1220、1222、12M、1226、12 等客戶機發(fā)送數(shù)據(jù)等,但任何計算機都可取決于環(huán)境而被認為是客戶機、服務器或兩者。這些計算設備中的任一個可以處理數(shù)據(jù),或請求可指示如此處參考一個或多個實施例描述的基于數(shù)據(jù)驅(qū)動角色的安全和有關技術的服務或任務。服務器通常是可通過諸如因特網(wǎng)或無線網(wǎng)絡基礎架構(gòu)等遠程網(wǎng)絡或本地網(wǎng)絡訪問的遠程計算機系統(tǒng)??蛻魴C進程可以在第一計算機系統(tǒng)中活動,而服務器進程可以在第二計算機系統(tǒng)中活動,它們通過通信介質(zhì)彼此通信,從而提供分布式功能并允許多個客戶機利用服務器的信息收集能力。按照用戶簡檔來利用的任何軟件對象可以單獨提供或跨多個計算設備或?qū)ο蠓植肌@?,在其中通信網(wǎng)絡/總線1240是因特網(wǎng)的網(wǎng)絡環(huán)境中,計算對象或設備1210、 1212等可以是諸如計算對象或設備1220、1222、1224、1226,1228等經(jīng)由諸如HTTP等多種已知協(xié)議中的任一種與其通信的web服務器。諸如計算對象或設備1210、1212等的服務器還可用作諸如計算對象或設備1220、1222、12M、1226、12 等的客戶機,這可以是如分布式計算環(huán)境的特性。示例性計算設備如所提到的,此處描述的各實施例適用于其中可能需要實現(xiàn)基于一段或多段數(shù)據(jù)驅(qū)動角色的安全的任何設備。因此,應當理解,構(gòu)想了結(jié)合此處描述的各實施例使用的所有種類的手持式、便攜式和其它計算設備和計算對象,即,在設備可以結(jié)合基于數(shù)據(jù)驅(qū)動角色的安全提供某些功能的任何地方。因此,在下面的圖13中描述的以下通用遠程計算機僅是一個示例,且所公開的主題的各實施例可用具有網(wǎng)絡/總線互操作性和交互的任何客戶機來實現(xiàn)。盡管并不是必需的,但各實施例的任意一個可以部分地經(jīng)由操作系統(tǒng)來實現(xiàn),以供設備或?qū)ο蟮姆臻_發(fā)者使用,和/或被包括在結(jié)合可操作組件來操作的應用軟件中。 軟件可以在由諸如客戶機工作站、服務器或其它設備等一個或多個計算機執(zhí)行的諸如程序模塊等計算機可執(zhí)行指令的通用上下文中描述。本領域的技術人員可以理解,網(wǎng)絡交互可以用各種計算機系統(tǒng)配置和協(xié)議來實施。因此,圖13示出了其中可實現(xiàn)一個或多個實施例的合適的計算系統(tǒng)環(huán)境1300的一個示例,盡管如上所述,計算系統(tǒng)環(huán)境1300僅為合適的計算環(huán)境的一個示例,并非旨在對各實施例中的任意一個的使用范圍或功能提出任何限制。也不應該將計算環(huán)境1300解釋為對示例性操作環(huán)境1300中示出的任一組件或其組合有任何依賴性或要求。參考圖13,用于實現(xiàn)此處的一個或多個實施例的示例性遠程設備可以包括手持式計算機1310形式的通用計算設備。手持式計算機1310的組件可以包括但不限于處理單元1320、系統(tǒng)存儲器1330和將包括系統(tǒng)存儲器在內(nèi)的各種系統(tǒng)組件耦合至處理單元1320 的系統(tǒng)總線1321。
計算機1310通常包括各種計算機可讀介質(zhì),例如但不限于,數(shù)字多功能盤(DVD)、 閃存、內(nèi)部或外部硬盤、緊致盤(CD)等等,并且可以是可由計算機1310訪問的任何可用介質(zhì),包括遠程驅(qū)動器、云存儲盤等。系統(tǒng)存儲器1330可以包括諸如只讀存儲器(ROM)和/ 或隨機存取存儲器(RAM)等易失性和/或非易失性存儲器形式的計算機存儲介質(zhì)。作為示例而非限制,存儲器1330還可以包括操作系統(tǒng)、應用程序、其他程序模塊、和程序數(shù)據(jù)。用戶可以通過輸入設備1340向計算機1310輸入命令和信息。監(jiān)視器或其他類型的顯示設備也經(jīng)由接口,諸如輸出接口 1350連接至系統(tǒng)總線1321。除監(jiān)視器之外,計算機還可以包括其他外圍輸出設備,如揚聲器和打印機,它們可以通過輸出接口 1350連接。計算機1310可使用至一個或多個遠程計算機,諸如遠程計算機1370的邏輯連接在網(wǎng)絡化或分布式環(huán)境中操作。遠程計算機1370可以是個人計算機、服務器、路由器、網(wǎng)絡PC、對等設備或其他常見網(wǎng)絡節(jié)點、或任何其他遠程媒體消費或傳輸設備,并且可以包括上面關于計算機1310所描述的任何或全部元件。附圖13所示的邏輯連接包括諸如局域網(wǎng) (LAN)或廣域網(wǎng)(WAN)等的網(wǎng)絡1371,但也可以包括其他網(wǎng)絡/總線。這樣的聯(lián)網(wǎng)環(huán)境在家庭、辦公室、企業(yè)范圍計算機網(wǎng)絡、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見的。如上所述,雖然結(jié)合各計算設備、網(wǎng)絡和廣告體系結(jié)構(gòu)描述了示例性實施例,但還可將底層概念應用于其中想要結(jié)合與云或網(wǎng)絡服務的交互來發(fā)布、構(gòu)建應用或消費數(shù)據(jù)的任何網(wǎng)絡系統(tǒng)和任何計算設備或系統(tǒng)。有多種實現(xiàn)此處描述的一個或多個實施例的方式,例如,使應用和服務能使用基于數(shù)據(jù)驅(qū)動角色的安全的適當?shù)腁PI、工具包、驅(qū)動程序代碼、操作系統(tǒng)、控件、獨立或可下載的軟件對象等等??梢詮腁PI (或其他軟件對象)的觀點以及從便于提供根據(jù)所描述的實施例中的一個或多個的基于數(shù)據(jù)驅(qū)動角色的安全的軟件或硬件對象來構(gòu)想各實施例。此處描述的各種實現(xiàn)和實施例可以具有完全采用硬件、部分采用硬件并且部分采用軟件、以及采用軟件的方面。在本文中使用的詞語“示例性”意味著用作示例、實例或說明。為避免疑惑,本文公開的主題不受限于這樣的示例。此外,本文描述為“示例性”的任何方面或設計不必解釋成優(yōu)于其他方面或設計或比其他方面或設計有利,它也不旨在排除本領域的普通技術人員所知的等效示例性結(jié)構(gòu)和技術。而且,就術語“包括”、“具有”、“包含”和其他類似的詞語在詳細描述或權(quán)利要求書中的使用而言,為避免疑惑,這樣的術語旨在以類似于術語“包括”作為開放的過渡詞的方式解釋而不排除任何附加或其他元素。如上所述,此處所述的各種技術可結(jié)合硬件或軟件,或在適當時以兩者的組合來實現(xiàn)。如在此所使用的,術語“組件”、“系統(tǒng)”等同樣指的是計算機相關實體,或者是硬件、 硬件和軟件的組合、軟件或執(zhí)行中的軟件。例如,組件可以是,但不限于是,在處理器上運行的進程、處理器、對象、可執(zhí)行碼、執(zhí)行的線程、程序和/或計算機。作為說明,運行在計算機上的應用程序和計算機本身都可以是計算機組件。一個或多個組件可以駐留在進程和/或執(zhí)行的線程中,并且組件可以位于一個計算機內(nèi)和/或分布在兩個或更多的計算機之間。已經(jīng)關于若干組件之間的交互描述了前述系統(tǒng)。應該理解,這樣的系統(tǒng)和組件可以包括根據(jù)前述的各種置換和組合的那些組件或指定的子組件、指定的組件或子組件中的某一些、和/或另外的組件。子組件也可以被實現(xiàn)為通信耦合至其他組件而非被包括在父組件(分層)內(nèi)的組件。另外,應注意到一個或多個組件可被組合成提供聚集功能的單個組件,或被分成若干單獨的子組件,且諸如管理層等任何一個或多個中間層可被設置成通信耦合到這樣的子組件以便提供集成功能。此處描述的任何組件也可以與在此未具體描述但本領域的技術人員公知的一個或多個其他組件交互??紤]到以上描述的示例性系統(tǒng),參考各附圖的流程圖將可以更好地理解依照所公開的主題實現(xiàn)的方法。盡管為了簡潔起見,作為一系列框示出和描述了方法,但是,應該理解,所要求保護的主題不僅限于所描述的框的順序,一些框可以按與此處所描繪和描述的不同的順序進行和/或與其他框并發(fā)地進行。盡管經(jīng)由流程圖示出了非順序或分支的流程,但可以理解,可實現(xiàn)達成相同或類似結(jié)果的各種其他分支、流程路徑和框次序。此外,并非所有的所示出的方框都是實現(xiàn)下面所描述的方法所必需的。雖然在某些實施例中,說明了客戶機側(cè)觀點,但要出于避免存在相對應的服務器觀點的疑問來理解,反之亦然。類似地,在實施方法的地方,可以提供具有存儲和被配置成經(jīng)由一個或多個組件實施該方法的至少一個處理器的相對應的設備。盡管結(jié)合各附圖的優(yōu)選實施例描述了各實施例,但可以理解,可以使用其他類似的實施例,或可以對所描述的實施例進行修改和添加來執(zhí)行相同的功能而不背離本發(fā)明。 而且,此處描述的各實施例的一個或多個方面可以在多個處理芯片或設備中實現(xiàn)或跨多個處理芯片或設備實現(xiàn),且存儲可以類似地跨多個設備來實現(xiàn)。因此,本發(fā)明不應限于任何單個實施例,而是應該根據(jù)所附權(quán)利要求書的廣度和范圍來解釋。
權(quán)利要求
1.一種方法,包括查詢(1000)與代表用戶身份的至少一個計算設備對計算系統(tǒng)的一個或多個計算對象的潛在訪問有關的數(shù)據(jù)上下文;所述至少一個計算設備接收(1010)對所述一個或多個計算對象中的至少一個計算對象的訪問請求;基于所述數(shù)據(jù)上下文來對管理對所述至少一個計算對象的訪問的對象的控制表達式進行求值(1020)以形成許可集;以及如果所述許可集包括對所述訪問請求的許可,則授予(1030)對所述至少一個計算對象的訪問。
2.如權(quán)利要求1所述的方法,其特征在于,所述求值(1020)包括針對所述計算系統(tǒng)的所述一個或多個計算對象的一個或多個當前版本來對程序表達式進行求值。
3.如權(quán)利要求1所述的方法,其特征在于,還包括如果所述許可集不包括對所述訪問請求的許可,則拒絕對所述至少一個計算對象的訪問。
4.如權(quán)利要求1所述的方法,其特征在于,所述求值(1020)包括基于所述數(shù)據(jù)上下文來對管理對所述至少一個計算對象的訪問的訪問控制列表的控制表達式進行求值。
5.如權(quán)利要求4所述的方法,其特征在于,所述求值(1020)包括對所述控制表達式進行求值來形成許可列表。
6.如權(quán)利要求1所述的方法,其特征在于,所述求值(1020)還包括對管理對所述至少一個計算對象的訪問的對象中所包括的靜態(tài)許可集進行求值。
7.如權(quán)利要求1所述的方法,其特征在于,所述查詢(1000)包括響應于接收到對所述至少一個計算對象的附加訪問請求來查詢更新的數(shù)據(jù)上下文。
8.如權(quán)利要求1所述的方法,其特征在于,還包括從用戶界面接收管理對所述至少一個計算對象的訪問的對象的控制表達式的定義,所述定義表達了訪問控制和所述計算系統(tǒng)的所述一個或多個計算對象之間的關系。
9.一種計算機實現(xiàn)的系統(tǒng),包括被配置成響應于用戶登錄來查詢對計算系統(tǒng)的數(shù)據(jù)對象的訪問請求的數(shù)據(jù)上下文的登錄組件(550),所述數(shù)據(jù)上下文是基于所述數(shù)據(jù)對象來被檢索的;訪問控制組件(560),所述訪問控制組件(560)被配置成響應于對所述數(shù)據(jù)對象中的至少一個數(shù)據(jù)對象的訪問請求來動態(tài)地對控制是否授予訪問的訪問控制對象的至少一個控制表達式進行求值以確定許可集,并且被配置成基于所述許可集來授予許可。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述訪問控制組件(560)被配置成針對所述數(shù)據(jù)對象的當前版本動態(tài)地對程序表達式進行求值。
11.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述訪問控制組件(560)還被配置成如果所述許可集不包括對所述訪問請求的許可,則拒絕對所述至少一個數(shù)據(jù)對象的訪問。
12.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述訪問控制組件(560)被配置成對管理對所述至少一個數(shù)據(jù)對象的訪問的對象中所包括的靜態(tài)許可集進行求值。
13.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述登錄組件(550)被配置成響應于接收到基于標識用戶的用戶憑證的登錄來查詢所述數(shù)據(jù)上下文。
14.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述登錄組件(550)被配置成響應于接收到對所述至少一個數(shù)據(jù)對象的附加訪問請求來查詢更新的數(shù)據(jù)上下文。
15.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述登錄組件(550)被配置成查詢與對表示企業(yè)員工的數(shù)據(jù)對象的訪問有關的數(shù)據(jù)上下文。
全文摘要
提供了基于數(shù)據(jù)驅(qū)動角色的安全。在登錄時,系統(tǒng)查詢與對計算系統(tǒng)的計算對象的訪問有關的數(shù)據(jù)上下文。當計算系統(tǒng)接收到對計算對象的訪問請求時,對為正被訪問的計算對象指定的一個或多個控制表達式進行求值。對控制表達式的求值可以引用用戶上下文或先前建立的數(shù)據(jù)上下文,并返回有效許可集。如果該許可集包括對該訪問請求的適當許可,則授予對該計算對象的訪問。
文檔編號G06F21/22GK102236763SQ201110122748
公開日2011年11月9日 申請日期2011年5月4日 優(yōu)先權(quán)日2010年5月5日
發(fā)明者J·A·巴羅斯, S·伊萬諾夫 申請人:微軟公司