測試已工作五年统倒,系統(tǒng)中總有個(gè)安全管理功能:1) 有操作集有角色有用戶肤晓;2) 用戶可以有多個(gè)角色安皱,每個(gè)角色可以分配給不同的用戶调鬓;3) 每個(gè)角色可以有多個(gè)操作集,每個(gè)操作集可以分給多個(gè)角色酌伊;4) 操作集可以自己定義也有預(yù)定義的腾窝,角色也是有一樣的,用戶一般只預(yù)定義一個(gè)admin用戶居砖。認(rèn)證可以是本地認(rèn)證虹脯,也可以是外部認(rèn)證比如ldap /ldaps或radius等服務(wù)器。此外用戶還綁定賬戶規(guī)則:定義了什么時(shí)間段有權(quán)限登錄奏候,哪些服務(wù)器(主機(jī)IP)可以登錄等等循集。
意外發(fā)現(xiàn):接觸這么久的安全管理竟基于RBAC模型,那什么是RBAC呢鼻由?
RBAC(Role-Based Access Control)基于角色訪問控制有4個(gè)模型:RBAC0暇榴、RBAC1、RBAC2蕉世、RBAC3蔼紧。RBAC0為最基本的權(quán)限功能。RBAC1在RBAC0基礎(chǔ)上增加角色分層的概念狠轻,一個(gè)角色可以繼承另外一個(gè)角色奸例。RBAC2在RBAC0基礎(chǔ)上增加一些限制:互斥角色、角色的最大用戶數(shù)上限、角色使用的先決條件查吊。RBAC3包含RBAC0谐区,RBAC1和RBAC2。
安全模型的4個(gè)要素:
User :可以訪問某系統(tǒng)的用戶逻卖,關(guān)聯(lián)一個(gè)唯一的用戶id宋列。
Role: 一個(gè)或多個(gè)操作權(quán)限的集合。
Permission:對一個(gè)或多個(gè)對象的特定訪問模式评也,相當(dāng)于訪問權(quán)限和授權(quán)炼杖。
Session:用戶與被分配用戶的角色集的激活子集之間的映射。
用戶和角色是多對多的關(guān)系盗迟,用戶可以有多個(gè)角色坤邪,每個(gè)角色可以分配給不同的用戶。角色和操作集也是多對多的關(guān)系罚缕,每個(gè)角色可以有多個(gè)操作集艇纺,每個(gè)操作集可以分給多個(gè)角色。session在1個(gè)用戶和1至多個(gè)角色之間定義一個(gè)臨時(shí)的一對多關(guān)系邮弹。
這就是最基本的安全模型RBAC0黔衡。
然而管理角色權(quán)限比運(yùn)維角色的有更多訪問資源的權(quán)限,運(yùn)維角色權(quán)限是管理角色的一個(gè)子集肠鲫。這樣的角色層次結(jié)構(gòu)利用繼承概念使一個(gè)角色隱式包含一個(gè)從屬角色關(guān)聯(lián)的訪問權(quán)限员帮。角色分層提供一個(gè)映射角色層次結(jié)構(gòu)的方法。
這就是角色分層的安全模型RBAC1导饲。
角色有一定的分層結(jié)構(gòu)(從屬關(guān)系)捞高,但也有角色操作權(quán)限重疊的時(shí)候,這就需要角色之間增加限制渣锦。都有哪些限制條件呢硝岗?互斥角色,角色的最大用戶數(shù)上限和先決條件
1) 互斥角色限制
互斥角色只能給一個(gè)用戶只能分配一個(gè)角色袋毙。這個(gè)限制可以是靜態(tài)的也可以是動(dòng)態(tài)的型檀。互斥角色的限制保證職責(zé)和權(quán)限的分離听盖。
互斥角色的擁有以下屬性:
? ? ? a) 一個(gè)用戶只能分配一個(gè)角色在動(dòng)態(tài)的session或靜態(tài)的session中(session不好理解:用戶和角色的映射關(guān)系)胀溺。
? ? ? b) 任何權(quán)限都只能分配給一個(gè)角色。
互斥角色為了增加不同技能的個(gè)人或不同的工作職能之間串通的難度皆看,以阻礙安全政策仓坞。
2) 角色的最大用戶數(shù)上限
一個(gè)項(xiàng)目組或一個(gè)部門,一般都只有一個(gè)負(fù)責(zé)人腰吟,那么項(xiàng)目負(fù)責(zé)人角色或部門主管角色通常僅限于單個(gè)用戶无埃。系統(tǒng)需要對用戶分配的角色數(shù)量或用戶為單個(gè)會(huì)話激活的角色數(shù)量施加約束。
3) 先決條件限制
一個(gè)用戶分配給某個(gè)高權(quán)限角色的前提是已經(jīng)分配給某個(gè)低權(quán)限的角色。先決條件可用于構(gòu)建最小權(quán)限概念的實(shí)現(xiàn)嫉称。
這就是限制的安全模型RBAC2侦镇。
RBAC3在RBAC0基礎(chǔ)上,包含了RBAC1的角色分層和RBAC2的角色限制功能织阅。
NIST RBAC規(guī)范
2001年隨著RBAC社區(qū)進(jìn)一步改善壳繁,已被美國國家標(biāo)準(zhǔn)協(xié)會(huì)ANSI/INCITS(國際信息技術(shù)標(biāo)準(zhǔn)委員會(huì))采納為ANSI INCITS 359-2004。
NIST標(biāo)準(zhǔn)的主要?jiǎng)?chuàng)新是引入了RBAC系統(tǒng)和管理功能規(guī)范荔棉,該規(guī)范定義了RBAC系統(tǒng)所需的功能氮趋。
該規(guī)范的好處
? ? ? ? a) 該規(guī)范為供應(yīng)商提供了功能基準(zhǔn),指出必須向用戶提供哪些功能以及這些功能的通用編程接口江耀。
? ? ? ? b) 該規(guī)范指導(dǎo)用戶開發(fā)需求文檔和統(tǒng)一評(píng)估供應(yīng)商產(chǎn)品。
? ? ? ? c) 該規(guī)范還提供了一個(gè)基線系統(tǒng)诉植,研究人員和實(shí)施人員可以在其上構(gòu)建增強(qiáng)功能祥国。
規(guī)范定義了3類功能:
? ? ? ? a)? 管理功能Administrative functions: 提供增加刪除的能力以及維護(hù)RBAC元素和關(guān)系。
? ? ? ? b) 支持系統(tǒng)功能Supporting system functions: 提供session管理(配置用戶和角色映射關(guān)系)和訪問控制決策making access control decisions晾腔。
? ? ? c)? 查看功能Review functions: 提供RBAC元素和關(guān)系的查詢功能舌稀。
NIST RBAC模型包含4個(gè)組件:
core RBAC,hierarchical RBAC灼擂,static separation of duty (SSD) relations壁查,dynamic separation of duty (DSD) relations。
Core RBAC
core RBAC的核心元素和RBAC0一樣是: users, roles, permissions, and sessions剔应。
NIST RBAC模型引入兩個(gè)從屬實(shí)體(Object 和Operation)來闡述權(quán)限Permission睡腿,相關(guān)定義如下:
對象Object: 受訪問控制的任何系統(tǒng)資源,如文件峻贮,打印席怪,終端和數(shù)據(jù)庫記錄等。比如愛奇藝視頻APP上的VIP視頻纤控,沒有VIP會(huì)員只能看前5分鐘挂捻。
操作Operation: 程序可執(zhí)行的映象,在調(diào)用時(shí)為用戶執(zhí)行某些功能船万。比如愛奇藝視頻APP上只有VIP可以操作連續(xù)簽到獲取VIP刻撒。
權(quán)限Permission: 控制一個(gè)或多個(gè)RBAC受保護(hù)對象的操作。
Core RBAC的管理功能包括 用戶的增加刪除耿导;角色的增加刪除声怔; 用戶角色關(guān)系(給用戶分配角色:session)的增加刪除;角色權(quán)限關(guān)系的增加刪除碎节。
支持系統(tǒng)功能包括創(chuàng)建一個(gè)用戶和一個(gè)默認(rèn)角色的會(huì)話session捧搞;會(huì)話中增加和刪除角色;檢查會(huì)話是否有權(quán)限對某個(gè)資源對象執(zhí)行某個(gè)請求操作;
查看功能包括查看模型的所有元素和它們的關(guān)系胎撇,包括用戶介粘,角色,用戶分配晚树,角色分配和session元素姻采。
Core RBAC是最基本的模型,具有當(dāng)前RBAC系統(tǒng)的常見功能爵憎。
Hierarchical RBAC
Hierarchical RBAC引用之前提到的RBAC1的繼承概念慨亲。如果角色r1繼承角色r2的所有權(quán)限且擁有角色r1權(quán)限的所有用戶也同時(shí)擁有角色r2的權(quán)限,則角色r1為r2的后代宝鼓。
NIST model模型定義了兩種角色層次結(jié)構(gòu):
? ? ? a) 常規(guī)角色層次結(jié)構(gòu):允許角色層次結(jié)構(gòu)的任意部分排序刑棵。支持多重繼承,一個(gè)角色可以從多個(gè)從屬角色中繼承權(quán)限愚铡,多個(gè)角色可以從同一從屬角色繼承權(quán)限蛉签。
? ? ? b) 有限的層次結(jié)構(gòu):施加限制導(dǎo)致更簡單的角色樹結(jié)構(gòu)。限制使一個(gè)角色有一個(gè)或多個(gè)直屬父代沥寥,但僅限于一個(gè)直屬后代碍舍。
? ? ? 角色層次結(jié)構(gòu)的基本原理是繼承屬性極大地簡化了權(quán)限關(guān)系的定義。角色可以具有重疊的操作權(quán)限邑雅,意味著屬于不同角色的用戶可能擁有一些相同的操作權(quán)限片橡。為了避免從頭開始定義多個(gè)角色以適應(yīng)各種用戶,角色層次結(jié)構(gòu)用于許多商業(yè)實(shí)現(xiàn)中淮野。常規(guī)角色層次結(jié)構(gòu)為此提供了最強(qiáng)大的工具捧书,限制的層次結(jié)構(gòu)也很有用,可以更簡單地實(shí)現(xiàn)角色層次結(jié)構(gòu)录煤。
Hierarchical RBAC給Core RBAC增加了4個(gè)管理功能:兩個(gè)角色間直屬繼承關(guān)系的增加 鳄厌;兩個(gè)角色間直屬繼承關(guān)系的刪除;創(chuàng)建一個(gè)現(xiàn)有角色的直屬后代妈踊;創(chuàng)建一個(gè)現(xiàn)有角色的直屬父代了嚎。
Hierarchical RBAC查看功能使管理者有查看操作權(quán)限,查看用戶和角色之間直接或間接的關(guān)系廊营。
Static Separation of Duty(SSD) Relations靜態(tài)分離關(guān)系
SSD和DSD是NIST RBAC model中兩個(gè)限制性的組件歪泳。這些限制以職責(zé)關(guān)系分離的形式,用于執(zhí)行可能產(chǎn)生的利益沖突政策露筒,以防止用戶超出其角色(職位)的合理權(quán)限級(jí)別呐伞。
SSD定義了互斥角色的集合,比如一個(gè)用戶分配互斥角色集合中某個(gè)角色那么就不能分配該集合中另外的角色慎式。 此外SSD還設(shè)置了角色集合的用戶數(shù)最大上限伶氢。SSD簡單地定義為(role set, n) 趟径,意味著沒有用戶可以分配到比n更多的角色集合。
SSD管理功能:創(chuàng)建或刪除角色集癣防;增加刪除角色成員蜗巧。
SSD功能查看功能:用于查看現(xiàn)有SSD集合屬性。
Dynamic Separation of Duty Relations動(dòng)態(tài)分離關(guān)系
和SSD一樣蕾盯,DSD限制了一個(gè)用戶可用的操作權(quán)限幕屹。 DSD規(guī)范對用戶會(huì)話內(nèi)或跨用戶會(huì)話內(nèi)激活的角色設(shè)置constraints(角色的用戶最大數(shù)上限),來限制權(quán)限的可用性级遭。DSD定義constraints為(role set, n)望拖,意味著沒有用戶會(huì)話可以從角色集中激活比n個(gè)更多的角色。
DSD使管理員能夠在不重疊的時(shí)間范圍內(nèi)為用戶指定某些功能挫鸽。 與SSD一樣说敏,DSD管理功能:DSD關(guān)系的增刪,查看功能:DSD關(guān)系的查看丢郊。