信息安全理論:
CIA模型:機密性、完整性和可用性
? CIA模型能夠幫助建議一些信息安全原則,但該模型并不是一個需要嚴格遵守的規(guī)則
? hadoop平臺可能設(shè)計多個CIA模型組件,也kennel一個也不涉及
機密性:
? ?信息只應(yīng)該被期望的接收者看到
? ?身份標識:唯一標識消息傳遞者
? ?身份驗證:證明自己的身份
? ?加密:將數(shù)學(xué)算法應(yīng)用于信息片段,使加密后輸出內(nèi)容對于非預(yù)期接收者不可讀
? ?解密:只有期望的接收者能對加密消息進行解密,從而得到原始信息
完整性:
??保證發(fā)送方發(fā)送的信息和接收分接收的完全一致
可用性:
? ?數(shù)據(jù)能夠被準確送達,不會丟失
驗證、授權(quán)和審計(AAA):
? ?指計算機安全領(lǐng)域的一個架構(gòu)模式,在該模式中,使用服務(wù)的用戶要證明自己的身份,然后規(guī)則規(guī)則被授予權(quán)限,同時其操作被記錄下來留待審計。
身份:指系統(tǒng)如何將不同的實體、用戶和服務(wù)區(qū)分開來
? linux系統(tǒng):
驗證:/etc/passwd
授權(quán):/etc/sudoers、/etc/group
審計:/var/log/secure
統(tǒng)一身份認證管理:
? ? ?在開源大數(shù)據(jù)平臺中,用戶可能需要同時使用很多開源組件,因此會涉及到每個組件的身份認證和訪問權(quán)限等問題。利用統(tǒng)一的認證服務(wù)能夠更好的管理用戶的身份認證及會話管理等。
? ? ?在大數(shù)據(jù)平臺中通過統(tǒng)一用戶管理系統(tǒng),可以實現(xiàn)平臺中的各種開源組件應(yīng)用系統(tǒng)的用戶、角色和組織機構(gòu)統(tǒng)一化管理,實現(xiàn)各種應(yīng)用系統(tǒng)間跨域的單點登錄登出和統(tǒng)一的身份認證功能。
統(tǒng)一身份認證系統(tǒng)的主要功能特性如下:
用戶管理
用戶認證
單點登錄
分級管理
權(quán)限管理
會話管理
兼容多種操作系統(tǒng)
目前,絕大多數(shù)廠商的統(tǒng)一認證管理系統(tǒng)都是由統(tǒng)一認證管理模塊、統(tǒng)一身份認證服務(wù)、身份信息存儲服務(wù)器三大部分組成。
?在華為大數(shù)據(jù)解決方案中,我們通過基于開源的OpenLDAP的身份認證的管理和存儲技術(shù)以及Kerberos統(tǒng)一身份認證技術(shù),實現(xiàn)了一種能夠通過WebUI進行集群中的數(shù)據(jù)與資源訪問控制權(quán)限管理
kerberos:
kerberod是麻省理工學(xué)院開發(fā)的一個認證機制,該系統(tǒng)設(shè)計上采用客戶端/服務(wù)器結(jié)構(gòu)與DES,AES等加密技術(shù),并且能夠進行互相認證,即客戶短和服務(wù)端均對對方進行身份認證。客戶端需要確認即將訪問的網(wǎng)絡(luò)服務(wù)就是自己所想要訪問的服務(wù)而不是一個偽造的服務(wù)器,而服務(wù)端需要確認這個客戶端是一個身份真實,安全可靠的客戶端,而不是一個想要進行惡意網(wǎng)絡(luò)攻擊的用戶。
Kerberos核心三要素:
krbServer認證機制的核心工作是使用一種能夠證明用戶身份的票據(jù)(密鑰),保護集群免受竊聽和攻擊。
kerberos client: 發(fā)送請求的一方
kerberos kdc server: 接收請求的一方
kdc(key distribution center):? 有兩個部分,分別是:
AS
(Authentication Server):認證服務(wù)器,專門用來認證客戶端的身份并發(fā)放客戶用于訪問TGS的TGT(授予票據(jù))
TGS(Ticket Granting ticket):?票據(jù)授予服務(wù)器,用來發(fā)放整個認證過程以及客戶端訪問服務(wù)端時所需的服務(wù)授予票據(jù)。
kerberos 術(shù)語:
主體(principal):
kerberos中的身份標識,每個參與kerberos認證協(xié)議的用戶和服務(wù)都需要一個主體來唯一地表示自己。
用戶主體(UPN):
代表常規(guī)用戶,類似于操作系統(tǒng)中的用戶名
?<短名稱><@域>
<短名稱>/admin@<域>
服務(wù)主體<SPN>:
代表用戶需要訪問的服務(wù),例如特定服務(wù)器上的數(shù)據(jù)庫
<短名稱>/<主機名>@<域>
域(realm):
就是一個身份驗證管理區(qū)域,所有主體都被分配到特定的kerberos域,域確定了邊界,使得管理更為容易。
密鑰分發(fā)中心(KDC):
? ? ? kerberos數(shù)據(jù)庫:存儲主體及其所屬域的所有相關(guān)信息
? ? ?認證服務(wù)(AS):當客戶端向AS發(fā)起請求時,向客戶端發(fā)放票據(jù)授予票據(jù)TGT用于請求訪問其他服務(wù)
? ?票據(jù)授予服務(wù)(TGS):負責驗證票據(jù)許可票據(jù)(TGT), 并授予服務(wù)票據(jù)(ST)。服務(wù)票據(jù)允許認證過的主體使用應(yīng)用服務(wù)器提高的服務(wù),該服務(wù)通過SPN進行標識。
EXAMPLE.COM:Kerberos域
zph:一個系統(tǒng)用戶,其UPN為zph@EXAMPLE.COM
myservice:server1.example.com上運行的一個服務(wù),其SPN為myservice/server1.example.com@EXAMPLE.COM
kdc.example.com:Kerberos域EXAMPLE.COM的KDC
kerberos工作流程:
簡化流程:
1、客戶端向KDC請求獲取想要訪問的目標服務(wù)的服務(wù)授予票據(jù)(Ticket);
2、客戶端拿著從KDC獲取的服務(wù)授予票據(jù)(Ticket)訪問相應(yīng)的網(wǎng)絡(luò)服務(wù)
上面簡化了kerberos的認證流程,大致分為兩步,雖然只有兩步,但是其中還是有一些問題問題:
(1)?? ?KDC怎么知道你(客戶端)就是真正的客戶端?憑什么給你發(fā)放服務(wù)授予票據(jù)(Ticket)呢?
(2)?? ?服務(wù)端怎么知道你帶來的服務(wù)授予票據(jù)(ticket)就是一張真正的票據(jù)呢?
kerberos認證過程中的第一步做了兩件事,這兩件事解決了上述問題中的問題1,然后第二部解決了問題2,最終結(jié)束認證過程建立通信。
因此kerberos認證流程可以細化為三個階段,也可以理解為三次通信,接下來從三個階段三次通信角度細說認證過程。
Kerberos認證流程:
kerberos認證前提條件:
1、kerberos協(xié)議是一個”限權(quán)“的認證協(xié)議,kerberos中會自帶一個數(shù)據(jù)庫,數(shù)據(jù)庫會由創(chuàng)建kerberos的運維人員提前在庫中添加好整個系統(tǒng)中擁有使用kerberos認證權(quán)限的用戶和網(wǎng)絡(luò)服務(wù)。在后續(xù)的認證中也是根據(jù)數(shù)據(jù)庫中是否存在該用戶和服務(wù)來判斷該對象是否能夠通過認證服務(wù)的。
2、所有使用kerberos協(xié)議的用戶和網(wǎng)絡(luò)服務(wù),在他們添加到kerberos系統(tǒng)時,都會根據(jù)自己當前的密碼生成一把密鑰存儲在kerberos數(shù)據(jù)庫紅,且kerberos數(shù)據(jù)庫也會同時保存用戶的基本信息(用戶名,用戶ip地址)和網(wǎng)絡(luò)服務(wù)的基本信息(ip)
3、kerberos中存在的三個角色,只要發(fā)生兩兩之間的通信,那都需要先進行身份認證。
第一次通信:
?為了獲得能夠用來訪問服務(wù)端服務(wù)的票據(jù),客戶端首先需要來到KDC獲得服務(wù)授予票據(jù)(Ticket)。由于客戶端是第一次訪問KDC,此時KDC也不確定該客戶端的身份,所以第一次通信的目的為KDC認證客戶端身份,確認客戶端是一個可靠且擁有訪問KDC權(quán)限的客戶端,過程如下:
1、客戶端用戶向kdc以明文的方式發(fā)起請求,該請求攜帶自己的用戶名、主機ip和當前時間戳
2、kdc中的AS接收請求后去kerberos認證數(shù)據(jù)庫中根據(jù)用戶名查找是否存在該用戶,此時只會查找是否有相同用戶名的用戶,并不會判斷身份的可靠性。(AS是KDC中專門用來認證客戶端身份的認證服務(wù)器)
3、如果沒有用戶名,認證失敗,服務(wù)結(jié)束,如果存在該用戶名,則AS認證中心認為用戶存在,此時便返回客戶端,其中包含兩部分內(nèi)容:
第一部分為TGT,票據(jù)授予票據(jù),客戶端需要使用TGT去kdc中的TGS獲取訪問網(wǎng)絡(luò)服務(wù)所需的Ticker(服務(wù)授予票據(jù)),TGT中包含的內(nèi)容有kerberos數(shù)據(jù)庫中存在的該客戶端name、ip、當前時間戳、客戶端即將訪問的TGS的name,TGT的有效時間以及一把用戶客戶端和TGS間進行通信的session_key(CT_SK)。整個TGT使用TGS密鑰加密,客戶端解密不了,由于密鑰沒有在網(wǎng)絡(luò)中傳輸過,所以不存在密鑰被劫持破解的情況。
第二部分是使用客戶端密鑰加密的一段內(nèi)容,其中包括用戶將客戶端和TGS間通信的CT_SK,客戶端即將訪問的TGS的name以及TGT的有效時間、當前時間戳。該部門內(nèi)容使用客戶端密鑰加密,所以客戶端難道該部門內(nèi)容可以通過密鑰解密。如果是一個假的客戶端,那么他不會擁有真正客戶端的密鑰,因為密鑰也沒有在網(wǎng)絡(luò)中傳輸過。這就認證了客戶端的身份,如果是假客戶端會猶豫解密失敗從而終端認證流程。
至此,第一次通信完成。
第二次通信:
第三次通信:
kerberos認證時序圖:
LDAP & LdapServer:
目錄服務(wù):
目錄服務(wù)是一個為查詢、瀏覽和搜索而優(yōu)化的服務(wù),其類似于文件目錄一樣,以樹形結(jié)構(gòu)進行數(shù)據(jù)存儲和遍歷。
日常生活中最常用的目錄服務(wù)就是手機中的通訊錄。其中通訊錄是由以字母順序排列的名字、地址和電話號碼等組成,用戶能夠在短時間內(nèi)查找到相應(yīng)的用戶及其信息
LDAP協(xié)議概述:
LDAP是輕量目錄訪問協(xié)議(Lightweight Directory Access Protocol)的縮寫,是一種基于X.500目錄訪問協(xié)議的集中賬號管理架構(gòu)的實現(xiàn)協(xié)議標準
Ldap協(xié)議的特點如下:
- Ldap運行在TCP/IP或其他面向連接的傳輸服務(wù)之上。
- Ldap同時是一個IETF標準跟蹤協(xié)議,在”輕量級目錄訪問協(xié)議(Ldap )技術(shù)規(guī)范路線圖”RFC4510中被指定
LdapServer作為目錄服務(wù)系統(tǒng),實現(xiàn)了對大數(shù)據(jù)平臺的集中賬號管理
LdapServer作為目錄服務(wù)系統(tǒng)是由目錄數(shù)據(jù)庫和一套訪問協(xié)議組成的系統(tǒng):
-
LdapServer基于OpenLDAP開源技術(shù)實現(xiàn)。
-
LdapServer以Berkeley DB作為默認的后端數(shù)據(jù)庫。
-
LdapServer是基于LDAP標準協(xié)議的一種具體開源實現(xiàn)
LdapServer組織模型:
ldapserver組織模型又叫做Ldapserver目錄樹或者LdapServer命名模型,特點如下:
Ldapserver目錄信息是基于樹形結(jié)構(gòu)來組織和存儲的
LdapServer目錄樹中的每一個極點都被稱作條目,并且擁有自己的唯一顆區(qū)別的名稱DN(distinguished name)
LdapServer目錄樹的樹根一般定義域名dc(domain? component)
域名下可以自由定義組織單位ou(organization unit), 組織單位可以包含其他的各種對象,在目錄服務(wù)系統(tǒng)中,組織單位包含該組織下的所有用戶賬戶相關(guān)信息,組織單位下可以定義具體對象,在定義組織對象時可以指定組織對象的名稱cn(common nbame)和用戶uid(user id)
LdapServer功能模型:
LdapServer有10種不同的操作,分為4類操作:
查詢類:信息搜索、信息比對
更新類:添加條目、刪除條目、修改條目、修改條目名
認證類:認證綁定,接觸認證綁定文章來源:http://www.zghlxwxcb.cn/news/detail-764649.html
其他操作:放棄服務(wù)操作,擴展服務(wù)操作文章來源地址http://www.zghlxwxcb.cn/news/detail-764649.html
LdapServer集成設(shè)計:
到了這里,關(guān)于hadoop安全保護機制(kerberos + ldap)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!