關(guān)于網(wǎng)絡(luò)安全授權(quán) 你應(yīng)該知道的……
與認(rèn)證相對(duì)應(yīng)的是授權(quán)。認(rèn)證確定用戶身份;授權(quán)指定該用戶能做什么。通常認(rèn)為是建立一種對(duì)資源的訪問(wèn)方式,例如文件和打印機(jī),授權(quán)也能處理用戶在系統(tǒng)或者網(wǎng)絡(luò)上的特權(quán)。在最終使用過(guò)程中,授權(quán)甚至能指定特定的用戶是否能訪問(wèn)系統(tǒng)。有各種類型的授權(quán)系統(tǒng),包括用戶權(quán)限,基于角色的授權(quán),訪問(wèn)控制列表和基于規(guī)則的授權(quán)。
授權(quán)通常是描述的用戶訪問(wèn)資源,如訪問(wèn)文件或行使特權(quán),如關(guān)閉系統(tǒng)。然而,授權(quán)也專用于系統(tǒng)的特定區(qū)域。例如,很多操作系統(tǒng)分為用戶空間和內(nèi)核空間,運(yùn)行一個(gè)可執(zhí)行文件的能力在某個(gè)空間或其他空間上是受到嚴(yán)格控制的。在內(nèi)核中運(yùn)行可執(zhí)行文件,必須擁有特權(quán),這種權(quán)限通常僅限于本機(jī)操作系統(tǒng)組件。
什么是網(wǎng)絡(luò)安全中的用戶權(quán)限
特權(quán)或用戶權(quán)限的權(quán)限不同。用戶權(quán)限提供授權(quán)去做可以影響整個(gè)系統(tǒng)的事情??梢詣?chuàng)建組,把用戶分配到組,登錄系統(tǒng),以及多用戶權(quán)限的分配。其他的用戶權(quán)限是隱含的,默認(rèn)分配給組——由系統(tǒng)創(chuàng)建的組而不是管理員創(chuàng)建。無(wú)法移除這些權(quán)限。
在典型的Unix系統(tǒng)實(shí)現(xiàn)中,隱含的特權(quán)是與賬號(hào)綁定的??梢允跈?quán)賬號(hào)在系統(tǒng)上做任何事情。另一方面,用戶擁有有限的權(quán)限,包括登錄,訪問(wèn)某一文件,運(yùn)行授權(quán)他們執(zhí)行的應(yīng)用程序。
在一些Unix系統(tǒng)上,系統(tǒng)管理員可以授予某一用戶權(quán)限使用特定的命令,類似超級(jí)用戶一樣,而不需要提供給他們超級(jí)用戶的密碼。在公共領(lǐng)域可以做到這一點(diǎn)的應(yīng)用程序,被稱為sudo。
方式一:基于角色的授權(quán)(RBAC)
在公司中每個(gè)員工都有自己的工作職責(zé)。如果員工需要開(kāi)展工作,則需要特權(quán)(做某些事情的權(quán)限)和權(quán)限(訪問(wèn)特定資源和做他們職責(zé)范圍內(nèi)的事情)。早期計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)者認(rèn)為用戶對(duì)于系統(tǒng)的要求可能會(huì)有所不同,并不是所有用戶都應(yīng)該給予系統(tǒng)管理員權(quán)限。
早期計(jì)算機(jī)系統(tǒng)存在的兩個(gè)角色是用戶和管理員。早期的系統(tǒng)針對(duì)這些類型的用戶,基于他們的組成員關(guān)系來(lái)定義角色和授權(quán)的訪問(wèn)。授予管理員(超級(jí)用戶,root用戶,系統(tǒng)管理員等等) 特權(quán),并允許其比普通用戶訪問(wèn)更多的計(jì)算機(jī)資源。例如,管理員可以增加用戶,分配密碼,訪問(wèn)系統(tǒng)文件和程序,并重啟機(jī)器。這個(gè)群體后來(lái)擴(kuò)展到包括審計(jì)員的角色(用戶可以讀取系統(tǒng)信息和在其他系統(tǒng)上的活動(dòng)信息,但不能修改系統(tǒng)數(shù)據(jù)或執(zhí)行其他管理員角色的功能)。
隨著系統(tǒng)的發(fā)展,用戶角色更加精細(xì)化。用戶可以通過(guò)安全許可來(lái)量化,例如,允許訪問(wèn)特定的數(shù)據(jù)或某些應(yīng)用程序。其他區(qū)別可能基于用戶在數(shù)據(jù)庫(kù)或者其他應(yīng)用系統(tǒng)中的角色而定。通常情況下,角色由部門(mén)所分配,如財(cái)務(wù),人力資源,信息技術(shù)和銷售部門(mén)。
最簡(jiǎn)單的例子,在這些基于角色的系統(tǒng)中,將用戶添加到具有特定權(quán)限和特權(quán)的組里。其他基于角色的系統(tǒng)使用更復(fù)雜的訪問(wèn)控制系統(tǒng),包括一些專門(mén)為實(shí)現(xiàn)訪問(wèn)控制所設(shè)計(jì)的操作系統(tǒng)。在Bell-Lapadula安全模型中,例如,將數(shù)據(jù)資源分為層或區(qū)域。每個(gè)區(qū)域代表一種數(shù)據(jù)類型,在沒(méi)有特定授權(quán)的情況下,數(shù)據(jù)不能從某個(gè)區(qū)域移動(dòng)到其他區(qū)域,用戶必須提供某個(gè)區(qū)域的訪問(wèn)權(quán)限才能使用數(shù)據(jù)。在這個(gè)角色中,用戶不能往低層次區(qū)域中寫(xiě)入數(shù)據(jù)(例如,從機(jī)密區(qū)域到秘密區(qū)域),也不能從比他們更高層次的區(qū)域中讀取數(shù)據(jù)(例如,用戶獲取了訪問(wèn)公共區(qū)域的權(quán)限,但不能讀取秘密或機(jī)密區(qū)域)。
Unix中基于角色的訪問(wèn)控制工具可以將管理員權(quán)限委派給普通用戶。它通過(guò)定義好的角色賬號(hào),或可以執(zhí)行某些管理員任務(wù)的賬號(hào)來(lái)進(jìn)行工作。角色賬號(hào)無(wú)法直接登錄,只能通過(guò)su命令進(jìn)行訪問(wèn)。
方式二:訪問(wèn)控制列表(ACLs)
某些社交場(chǎng)合只有被邀請(qǐng)的人才能出席。為了確保只有邀請(qǐng)的嘉賓來(lái)參加歡迎派對(duì),可能需要將一份被邀請(qǐng)人的名單提供給門(mén)衛(wèi)那邊。當(dāng)你抵達(dá)時(shí),門(mén)衛(wèi)會(huì)將你的名字與名單進(jìn)行比對(duì),以此來(lái)判斷你是否能夠入內(nèi)。通過(guò)照片的形式進(jìn)行比對(duì)的認(rèn)證,可能不會(huì)出現(xiàn)在這里,但這是簡(jiǎn)單使用訪問(wèn)控制列表(ACL)很好的例子。
信息系統(tǒng)可能也可以使用ACL來(lái)確定所請(qǐng)求的服務(wù)或資源是否有權(quán)限。訪問(wèn)服務(wù)器上的文件通常由保留在每個(gè)文件的信息所控制。同樣,網(wǎng)絡(luò)設(shè)備上不同類型的通信也可以通過(guò)ACL來(lái)控制。
1. 文件訪問(wèn)權(quán)限
Windows和Unix系統(tǒng)都使用文件權(quán)限來(lái)管理文件訪問(wèn)。實(shí)現(xiàn)方式雖然各不相同,但都適用于兩個(gè)系統(tǒng)。只有當(dāng)你需要互通性時(shí),問(wèn)題才會(huì)出現(xiàn),請(qǐng)確保授權(quán)可以支持跨平臺(tái)。
Windows文件——訪問(wèn)權(quán)限 Windows NTFS文件系統(tǒng)為每個(gè)文件和文件夾都提供了一個(gè)ACL。ACL由一系列的訪問(wèn)控制條目(ACEs)所組成。每個(gè)ACE都包含安全標(biāo)識(shí)符(SID)和授予的權(quán)限??梢允窃试S或拒絕的權(quán)限,SIDs可能代表用戶賬號(hào),計(jì)算機(jī)賬號(hào)或組。系統(tǒng)管理員,文件所有者,或有權(quán)限的用戶可以分配ACEs。
登錄過(guò)程中會(huì)確定特權(quán)用戶和組成員對(duì)特定的用戶或計(jì)算機(jī)的權(quán)限。列表包括用戶SID,以及該用戶所在組的SIDs。當(dāng)與計(jì)算機(jī)進(jìn)行連接時(shí),訪問(wèn)令牌為用戶創(chuàng)建并附加到用戶在系統(tǒng)上啟動(dòng)的所有正在運(yùn)行的進(jìn)程中去。
在Windows系統(tǒng)中權(quán)限細(xì)粒度非常高。下表1中列出的權(quán)限實(shí)際上代表的是權(quán)限集,但是權(quán)限也可以單獨(dú)分配。
表1 Windows文件權(quán)限
注意:上表這些權(quán)限不同于表中所示的權(quán)限分組。表中列出的每個(gè)權(quán)限都可以單獨(dú)應(yīng)用。當(dāng)試圖訪問(wèn)資源時(shí),安全子系統(tǒng)會(huì)對(duì)資源的ACEs列表和訪問(wèn)令牌中的SIDs和特權(quán)列表進(jìn)行比對(duì)。如果SID和訪問(wèn)權(quán)限兩者都比對(duì)成功,則授予權(quán)限,除非訪問(wèn)授權(quán)為拒絕。權(quán)限積累(也就是說(shuō),如果授予了用戶讀取和寫(xiě)的權(quán)限,那么用戶將擁有讀和寫(xiě)的權(quán)限),但是拒絕授權(quán)將導(dǎo)致否定,甚至在有訪問(wèn)權(quán)限的情況下。缺乏任何匹配結(jié)果都將導(dǎo)致拒絕。
值得注意的是在Windows中文件的權(quán)限和其他基于對(duì)象的權(quán)限,也可以通過(guò)共享文件夾的權(quán)限加以補(bǔ)充。也就是說(shuō),如果一個(gè)文件夾能夠通過(guò)服務(wù)器消息塊(SMB)協(xié)議直接從網(wǎng)絡(luò)中訪問(wèn),可以在可以文件夾上設(shè)置權(quán)限來(lái)控制訪問(wèn)。將這些權(quán)限與直接使用NTFS權(quán)限設(shè)置在文件夾上的相關(guān)權(quán)限進(jìn)行評(píng)估。在兩組權(quán)限之間存在沖突的情況下,選擇最嚴(yán)格的權(quán)限。舉例說(shuō)明,如果給會(huì)計(jì)組共享了讀和寫(xiě)的權(quán)限, Alice是其中一個(gè)成員,但底層的文件夾權(quán)限拒絕Alice訪問(wèn),最終Alice也將無(wú)法訪問(wèn)該文件夾。
Unix 文件——訪問(wèn)權(quán)限 傳統(tǒng)的Unix文件系統(tǒng)不使用ACL。相反,通過(guò)限制用戶賬號(hào)和組的訪問(wèn)權(quán)限來(lái)保護(hù)文件。例如,如果你想授予讀的權(quán)限給所有者之外的人,是行不通的。如果你想授予讀的權(quán)限給一個(gè)組,寫(xiě)的權(quán)限給另外一個(gè)組,也無(wú)法做到。這種缺乏細(xì)粒度的訪問(wèn)控制在有些Unix(例如Solaris)系統(tǒng)中,可以通過(guò)提供ACL來(lái)彌補(bǔ),但是在我們看那個(gè)系統(tǒng)之前,我們將審視傳統(tǒng)的文件保護(hù)系統(tǒng)。
有關(guān)文件的信息,除了文件名之外,都包括在索引之中。文件的索引包含文件信息、文件所有者、用戶ID、文件所屬組、文件模式,讀/寫(xiě)/執(zhí)行權(quán)限的設(shè)置。
文件的權(quán)限分配來(lái)控制訪問(wèn),他們包含三個(gè)級(jí)別的訪問(wèn)權(quán)限:所有者,組和其他。所有者的特權(quán)包括確定誰(shuí)可以訪問(wèn)該文件并讀取它,寫(xiě)入文件,或者,如果它是一個(gè)可執(zhí)行文件,執(zhí)行這個(gè)文件的權(quán)限。對(duì)于這些細(xì)粒度比較小的權(quán)限。目錄也可以有權(quán)限分配給所有者,組和其他。表2列出并解釋了權(quán)限。
表2 傳統(tǒng)的Unix文件權(quán)限
2. 網(wǎng)絡(luò)設(shè)備的ACLs
網(wǎng)絡(luò)設(shè)備使用ACLs來(lái)控制網(wǎng)絡(luò)的訪問(wèn)和授予的訪問(wèn)類型。具體來(lái)說(shuō),路由器和防火墻的訪問(wèn)控制列表指明了來(lái)訪流量能夠訪問(wèn)哪臺(tái)計(jì)算機(jī)的哪個(gè)端口,或是設(shè)備能接受并路由到其他網(wǎng)絡(luò)中的流量類型。
方式三:基于規(guī)則的授權(quán)
基于規(guī)則的授權(quán)需要開(kāi)發(fā)一套規(guī)則來(lái)規(guī)定特定的用戶在系統(tǒng)上能做什么。這些規(guī)則可能會(huì)提供如下信息,如“用戶Alice能夠訪問(wèn)資源Z但不能訪問(wèn)資源D”,更復(fù)雜的規(guī)則是指定組合,例如“用戶Bob只有坐在數(shù)據(jù)中心的控制臺(tái)時(shí)才能閱讀文件P。”在小的系統(tǒng)中,基于規(guī)則的授權(quán)可能并不難維護(hù),但是在大的系統(tǒng)和網(wǎng)絡(luò)中,極其繁瑣和難以管理。