本發(fā)明涉及計(jì)算機(jī)軟件安全認(rèn)證
技術(shù)領(lǐng)域:
,尤其涉及一種網(wǎng)絡(luò)安全認(rèn)證方法。
背景技術(shù):
:ApacheKerby是一套開(kāi)源的java開(kāi)發(fā)的安全認(rèn)證框架,它作為ApacheDirectory的子項(xiàng)目出現(xiàn)的,通過(guò)kerby開(kāi)發(fā)者可以自己開(kāi)發(fā)Kerberos認(rèn)證服務(wù)器KDCServer,而且它還支持多種安全協(xié)議,如X509,oauth2都有很好的支持,它可以為Hadoop大數(shù)據(jù),云計(jì)算環(huán)境搭建出色的安全盾牌?;贏pacheKerby的安全認(rèn)證框架,可通過(guò)web配置,獨(dú)立完成KDC服務(wù)器的環(huán)境搭建,提供Kerberos認(rèn)證服務(wù),并無(wú)需第三方服務(wù),并且提供auto-failover功能,無(wú)單點(diǎn)故障。支持多種安全認(rèn)證協(xié)議,如x509、oauth2等,能在Http、Tcp、Udp多種方式下提供安全服務(wù)。同時(shí),也能提供Token(令牌)票據(jù)服務(wù),并且票據(jù)有失效時(shí)間,最大程序的保護(hù)用戶資源安全。在現(xiàn)有技術(shù)中,網(wǎng)絡(luò)安全認(rèn)證主要包括以下步驟:(1)、通過(guò)Kerberos命令方式搭建起KDC服務(wù)器,確保Client與KDC服務(wù)器可以正常通信。(2)、Client用戶將之前獲得TGT和待請(qǐng)求的服務(wù)信息(服務(wù)名等)發(fā)送給KDC服務(wù)器。KDC服務(wù)器中的TicketGrantingService(票據(jù)授予服務(wù))將為Client和Service之間生成一個(gè)SessionKey用于Service對(duì)Client的身份鑒別。然后KDC服務(wù)器將SessionKey和用戶名、用戶地址(IP)、服務(wù)名、有效期及時(shí)間戳一起包裝成一個(gè)Ticket(這些信息最終用于Service對(duì)Client的身份鑒別)發(fā)送給Service。不過(guò)Kerberos協(xié)議并沒(méi)有直接將Ticket發(fā)送給Service,而是通過(guò)Client轉(zhuǎn)發(fā)給Service。(3)、此時(shí)KDC服務(wù)器將剛才的Ticket轉(zhuǎn)發(fā)給Client。由于這個(gè)Ticket是要給Service的,不能讓Client看到,所以KDC服務(wù)器用協(xié)議開(kāi)始前KDC服務(wù)器與Service之間的密鑰將Ticket加密后再發(fā)送給Client。同時(shí)為了讓Client和Service之間共享那個(gè)秘密(KDC在第一步為它們創(chuàng)建的SessionKey),KDC服務(wù)器用Client與其之間的密鑰將SessionKey加密隨加密的Ticket一起返回給Client用戶。(4)、為了完成Ticket的傳遞,Client將剛才收到的Ticket轉(zhuǎn)發(fā)到Service。由于Client用戶不知道KDC服務(wù)器與Service之間的密鑰,所以它無(wú)法算改Ticket中的信息。同時(shí)Client將收到的SessionKey解密出來(lái),然后將自己的用戶名,用戶地址(IP)打包成Authenticator用SessionKey加密也發(fā)送給Service)。(5)、Service收到Ticket后利用它與KDC服務(wù)器之間的密鑰將Ticket中的信息解密出來(lái),從而獲得SessionKey和用戶名、用戶地址(IP)、服務(wù)名、有效期。然后再用SessionKey將Authenticator解密從而獲得用戶名、用戶地址(IP)將其與之前Ticket中解密出來(lái)的用戶名,用戶地址(IP)做比較從而驗(yàn)證Client用戶的身份。(6)、如果Service有返回結(jié)果,將其返回給Client用戶。由于Kerberos的安裝配置是極其復(fù)雜的,而且要配置的參數(shù)非常多,一般用戶很難完全掌握,配置環(huán)境也是在Linux環(huán)境shell里,操作也不是很方便明了,并且沒(méi)有監(jiān)控方案。因此,也存在統(tǒng)一管理的用戶界面的問(wèn)題,導(dǎo)致用戶無(wú)法真正掌握KDC服務(wù)器內(nèi)部的運(yùn)行狀態(tài),所有的操作需要用戶通過(guò)命令行方式進(jìn)行操作,用戶體驗(yàn)較差。此外,現(xiàn)有技術(shù)對(duì)Hadoop或者云計(jì)算的集成度不高,用戶需要做額外的配置工作,配置與運(yùn)維存在一定的困難與風(fēng)險(xiǎn)。同時(shí),由于沒(méi)有任何監(jiān)控手段,KDC服務(wù)器的穩(wěn)定性成為了重要的瓶頸,存在安全性的隱患。有鑒于此,有必要對(duì)現(xiàn)有技術(shù)中的基于apacheKerby的網(wǎng)絡(luò)安全認(rèn)證方案予以改進(jìn),以解決上述問(wèn)題。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的在于公開(kāi)一種網(wǎng)絡(luò)安全認(rèn)證方法,用以簡(jiǎn)化安裝認(rèn)證的部署流程,提高認(rèn)證方法的安全性,并能夠與大數(shù)據(jù)或者云計(jì)算系統(tǒng)的深度的整合,同時(shí)實(shí)現(xiàn)對(duì)KDC服務(wù)器運(yùn)行狀態(tài)的有效監(jiān)控。為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種網(wǎng)絡(luò)安全認(rèn)證方法,其基于ApacheKerby安全認(rèn)證框架,所述網(wǎng)絡(luò)安全認(rèn)證方法包括以下步驟:S1、管理員自web客戶端配置出基于Kerberos認(rèn)證服務(wù)的KDC服務(wù)器;S2、通過(guò)KDC服務(wù)器對(duì)資源與用戶Id、角色、TokenId、Token狀態(tài)進(jìn)行關(guān)聯(lián),以構(gòu)建出關(guān)聯(lián)信息;S3、用戶自web客戶端獲取令牌值及令牌信息,將令牌信息保存至持久化節(jié)點(diǎn)中,并將令牌與資源綁定;S4、根據(jù)令牌信息與步驟S2中的關(guān)聯(lián)信息確定用戶對(duì)資源的訪問(wèn)權(quán)限。作為本發(fā)明的進(jìn)一步改進(jìn),所述持久化節(jié)點(diǎn)包括分布式應(yīng)用程序協(xié)調(diào)服務(wù)、json文件、xml文件、數(shù)據(jù)庫(kù)或者非易失性存儲(chǔ)介質(zhì)。作為本發(fā)明的進(jìn)一步改進(jìn),所述資源包括文件系統(tǒng)、物理機(jī)資源、虛擬機(jī)資源。作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟S4之后還包括通過(guò)ELK或者grafana將被用戶所訪問(wèn)的資源推送至用戶的web客戶端。作為本發(fā)明的進(jìn)一步改進(jìn),所述數(shù)據(jù)庫(kù)包括opentsdb或者influxdb。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果:用戶可通過(guò)web瀏覽器對(duì)KDC服務(wù)器進(jìn)行配置操作,實(shí)現(xiàn)了一鍵化部署數(shù)據(jù)安全服務(wù),此外通過(guò)運(yùn)行監(jiān)控方式,通過(guò)jmx監(jiān)控,實(shí)現(xiàn)了對(duì)KDC服務(wù)器的運(yùn)行狀態(tài)的有效監(jiān)控,并實(shí)現(xiàn)了與大數(shù)據(jù)及云計(jì)算的深度整合;最后,通過(guò)用戶與權(quán)限角色、權(quán)限角色與資源的關(guān)系問(wèn)題,通過(guò)對(duì)資源的token認(rèn)證,為被用戶訪問(wèn)的資源提供了安全級(jí)別更高的保護(hù)機(jī)制。附圖說(shuō)明圖1為本發(fā)明一種網(wǎng)絡(luò)安全認(rèn)證方法的流程圖;圖2為用戶在網(wǎng)絡(luò)安全認(rèn)證的實(shí)例的流程圖;圖3為用戶用例圖;圖4為管理員自web客戶端配置出基于Kerberos認(rèn)證服務(wù)的KDC服務(wù)器的示意圖;圖5為用戶自web客戶端獲取令牌值及令牌信息并將令牌信息保存至持久化節(jié)點(diǎn)中以實(shí)現(xiàn)將令牌與資源綁定的過(guò)程的示意圖;圖6為web應(yīng)用服務(wù)器在用戶正常訪問(wèn)資源時(shí)所形成的記錄;圖7為web應(yīng)用服務(wù)器在用戶不正常訪問(wèn)資源時(shí)所形成的記錄。具體實(shí)施方式下面結(jié)合附圖所示的各實(shí)施方式對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明,但應(yīng)當(dāng)說(shuō)明的是,這些實(shí)施方式并非對(duì)本發(fā)明的限制,本領(lǐng)域普通技術(shù)人員根據(jù)這些實(shí)施方式所作的功能、方法、或者結(jié)構(gòu)上的等效變換或替代,均屬于本發(fā)明的保護(hù)范圍之內(nèi)。請(qǐng)參圖1至圖7所示出的本發(fā)明一種網(wǎng)絡(luò)安全認(rèn)證方法的一種實(shí)施方式。在本實(shí)施方式中,一種網(wǎng)絡(luò)安全認(rèn)證方法,其基于ApacheKerby安全認(rèn)證框架,該網(wǎng)絡(luò)安全認(rèn)證方法包括以下步驟:首先,執(zhí)行步驟S1、管理員自web客戶端配置出基于Kerberos認(rèn)證服務(wù)的KDC服務(wù)器。在建立apachekerby的基礎(chǔ)之上,可以通過(guò)web客戶端方式而無(wú)需在Linux系統(tǒng)中以輸入命令行的方式,就可以快速搭建KDC服務(wù)器,還可以通過(guò)Java管理擴(kuò)展JMX所反饋的監(jiān)控信息,把KDC服務(wù)器的運(yùn)行狀態(tài)信息(例如KDC服務(wù)器的負(fù)載、內(nèi)存消耗情況、CPU占用率、線程占用情況)以web方式反應(yīng)到web客戶端上,方便用戶查看。同時(shí),用戶可以方便的使用通過(guò)Web瀏覽器對(duì)Kerberos進(jìn)行參數(shù)配置。Kerberos為內(nèi)建于apachekerby中的一種服務(wù),其作用在于大數(shù)據(jù)或者云計(jì)算的安全認(rèn)證服務(wù)。然后,執(zhí)行步驟S2、通過(guò)KDC服務(wù)器對(duì)資源與用戶Id、角色、TokenId及Token狀態(tài)進(jìn)行關(guān)聯(lián),以構(gòu)建出關(guān)聯(lián)信息。用戶Id、資源、角色、TokenId、Token狀態(tài)這五個(gè)參數(shù)的關(guān)聯(lián)信息參下述表一所示。通過(guò)表1所示出的五個(gè)參數(shù)的關(guān)聯(lián)信息,可對(duì)資源起到保護(hù)作用。表一表二展示了令牌(token)的關(guān)聯(lián)信息,并主要包括TokenId、Token值、Token生成時(shí)間與Token失效時(shí)間這四個(gè)參數(shù)。表二與表一有關(guān)聯(lián)關(guān)系,可以通過(guò)token來(lái)解決時(shí)間的訪問(wèn)權(quán)限爭(zhēng)議。在本實(shí)施方式中,可以通過(guò)表二中Token失效時(shí)間來(lái)控制Token失效后資源的訪問(wèn)權(quán)限,從而起到對(duì)資源分配與釋放的合理管控,從而起到了對(duì)被用戶訪問(wèn)的資源的合理配置,避免資源被頻繁請(qǐng)求,提高了用戶體驗(yàn)。TokenIdToken值Token生成時(shí)間Token失效時(shí)間0001Xawerrtrqwweewew2016/2/1224h0002Axtyxdaca233xetew2016/3/324h表二用戶通過(guò)KDC服務(wù)器獲取token值,并把token的信息保存到持久化節(jié)點(diǎn)中。具體的,該持久化節(jié)點(diǎn)包括:分布式應(yīng)用程序協(xié)調(diào)服務(wù)、json文件、xml文件、數(shù)據(jù)庫(kù)或者非易失性存儲(chǔ)介質(zhì)(Non-volatileMemory)。然后執(zhí)行步驟S3、用戶自web客戶端獲取令牌值及令牌信息,將令牌信息保存至持久化節(jié)點(diǎn)中,并將令牌與資源綁定。通過(guò)Token與資源的對(duì)應(yīng)關(guān)系,使大數(shù)據(jù)或者云計(jì)算等其它應(yīng)用的安全級(jí)別近一步提高,同時(shí)把角色與資源增加了一層關(guān)系,不同的資源都有一個(gè)管理角色,可以對(duì)Token進(jìn)行生成與發(fā)放,普通角色可以獲取資源Token進(jìn)行資源訪問(wèn)。參圖4與圖5所示,部署搭建支持ApacheKerby安全認(rèn)證框架的web應(yīng)用服務(wù)器。通過(guò)web方式管理員可以進(jìn)行適當(dāng)?shù)呐渲镁涂梢詥?dòng)KDC服務(wù)器。在KDC服務(wù)器正常啟動(dòng)后,可以啟動(dòng)Identitystoreserver,可以把KDC服務(wù)器的配置參數(shù)通過(guò)RPC(遠(yuǎn)程過(guò)程調(diào)用協(xié)議)調(diào)用,保存到Identitystoreserver,保存方式多種可以為zookeeper、jsonfile等持久化節(jié)點(diǎn)。資源(大數(shù)據(jù)與云主機(jī))監(jiān)控服務(wù)的部署與安裝。通過(guò)kibana數(shù)據(jù)的可視化,可以對(duì)訪問(wèn)實(shí)現(xiàn)jmx監(jiān)控,以防止當(dāng)KCD服務(wù)器出現(xiàn)宕機(jī)或者異常的訪問(wèn)登錄。最后,執(zhí)行步驟S4、根據(jù)令牌信息與步驟S2中的關(guān)聯(lián)信息確定用戶對(duì)資源的訪問(wèn)權(quán)限。優(yōu)選的,該數(shù)據(jù)庫(kù)包括opentsdb或者influxdb。Opentsdb是一個(gè)架構(gòu)在Hbase系統(tǒng)之上的實(shí)時(shí)監(jiān)控信息收集和展示平臺(tái)。influxdb是一個(gè)開(kāi)源分布式時(shí)序、事件和指標(biāo)數(shù)據(jù)庫(kù)。其使用Go語(yǔ)言編寫(xiě),無(wú)需外部依賴(lài)。其設(shè)計(jì)目標(biāo)是實(shí)現(xiàn)分布式和水平伸縮擴(kuò)展,并具有以下主要特性:(1)TimeSeries(時(shí)間序列):可以使用與時(shí)間有關(guān)的相關(guān)函數(shù)(如最大,最小,求和等);(2)Metrics(度量):你可以實(shí)時(shí)對(duì)大量數(shù)據(jù)進(jìn)行計(jì)算;(3)Events(事件):它支持任意的事件數(shù)據(jù)。token本身是一份文件的方式存在的。當(dāng)token信息持久后,如果KDC服務(wù)器故障,可以通過(guò)token信息進(jìn)行故障恢復(fù),用戶可以通過(guò)表一與表二信息來(lái)獲取權(quán)限,例如:查看或者訪問(wèn)目錄與云主機(jī)等資源等等。同時(shí),由于token有一定的失效時(shí)間,因此,一旦token發(fā)生失效,與該token所關(guān)聯(lián)的角色就不能對(duì)資源進(jìn)行訪問(wèn),而需要重新申請(qǐng)認(rèn)證,這樣能最大程度保證資源隔離性。具體的,在本實(shí)施方式中,資源包括文件系統(tǒng)、物理機(jī)資源、虛擬機(jī)資源。同時(shí),在步驟S4之后還包括通過(guò)ELK或者grafana將被用戶所訪問(wèn)的資源推送至用戶的web客戶端。用戶可以對(duì)待訪問(wèn)的資源進(jìn)行實(shí)時(shí)監(jiān)控,并可為接下來(lái)的大數(shù)據(jù)用戶行為分析奠定基礎(chǔ)。該網(wǎng)絡(luò)安全認(rèn)證方法可支持x509、oauth2等安全認(rèn)證協(xié)議。參圖2所示,接下來(lái),以oauth2在發(fā)明中的認(rèn)證過(guò)程作具體闡述。(1)普通用戶申請(qǐng)令牌(RequestToken),服務(wù)提供者驗(yàn)證通過(guò)后將令牌返回。這個(gè)過(guò)程由web應(yīng)用服務(wù)器發(fā)起,對(duì)用戶透明。(2)普通用戶使用令牌讓瀏覽器重定向到服務(wù)提供方進(jìn)行登錄驗(yàn)證和授權(quán)。服務(wù)提供方校驗(yàn)令牌,用戶同意授權(quán),服務(wù)提供者發(fā)放已授權(quán)令牌并將用戶引導(dǎo)到當(dāng)前應(yīng)用的注冊(cè)地址。(3)普通用戶使用已授權(quán)令牌向KDC服務(wù)提供方換取token。在本方案中,token的保存由web應(yīng)用服務(wù)器來(lái)獲取和保管token,這樣不需要人為來(lái)管理保存,非常方便用戶對(duì)token的管理使用。(4)用token作為令牌訪問(wèn)受保護(hù)資源。token包含了某個(gè)用戶對(duì)某個(gè)應(yīng)用或者數(shù)據(jù)授權(quán)憑據(jù),token對(duì)應(yīng)用戶授權(quán)時(shí)所賦予的一系列權(quán)限的集合。token信息保存在持久化節(jié)點(diǎn)中,而token保存在文件中,兩者分別存儲(chǔ),除了校驗(yàn)token的合法性之外,服務(wù)提供方還需對(duì)該token是否擁有足夠的權(quán)限執(zhí)行被保護(hù)操作進(jìn)行判斷,為用戶的資源提供了安全級(jí)別更高的保護(hù)機(jī)制。用戶訪問(wèn)資源監(jiān)控流程:(1)當(dāng)web應(yīng)用服務(wù)器開(kāi)啟資源訪問(wèn)監(jiān)控后,用戶通過(guò)shell登錄大數(shù)據(jù)和云主機(jī)或者通過(guò)URL方式訪問(wèn)某個(gè)資源時(shí),每次請(qǐng)求都會(huì)記錄下來(lái)并存儲(chǔ)于數(shù)據(jù)庫(kù)中。用戶自web客戶端所發(fā)起的訪問(wèn)請(qǐng)求所形成的數(shù)據(jù)結(jié)構(gòu)如下所示:用戶id+登錄時(shí)間+訪問(wèn)資源內(nèi)容+token是否許可,每次訪問(wèn)記錄變成一天文本記錄保存在數(shù)據(jù)庫(kù),并以時(shí)間序列方式存儲(chǔ),通過(guò)UI實(shí)時(shí)顯示(參圖6與圖7所示),管理員可以直接通過(guò)web頁(yè)面進(jìn)行對(duì)資源訪問(wèn)情況進(jìn)行實(shí)時(shí)監(jiān)控。(2)通過(guò)基本邏輯回歸,設(shè)定用戶正常訪問(wèn)資源時(shí)取值為0,設(shè)定用戶非正常訪問(wèn)資源時(shí)取值為1,進(jìn)行資源訪問(wèn)監(jiān)控建模。資源訪問(wèn)監(jiān)控建模的流程如下:(a)首先對(duì)上述步驟(1)中用戶自web客戶端所發(fā)起的訪問(wèn)請(qǐng)求所形成的數(shù)據(jù)結(jié)構(gòu)(以下簡(jiǎn)稱(chēng)原始數(shù)據(jù))進(jìn)行分析,遍歷原始數(shù)據(jù)中的各個(gè)數(shù)據(jù)變量的含義并分析數(shù)據(jù)質(zhì)量;(b)基于上述遍歷結(jié)果,形成用戶訪問(wèn)資源的記錄,從而由多個(gè)記錄形成圖6或者圖7所示出的曲線圖;(c)對(duì)部分連續(xù)型指標(biāo)采用單變量決策樹(shù)的方法進(jìn)行分欄處理,從而對(duì)web應(yīng)用服務(wù)器進(jìn)行關(guān)于用戶對(duì)特定資源進(jìn)行訪問(wèn)習(xí)慣的學(xué)習(xí)與記錄,從而把角色與資源實(shí)現(xiàn)模型化處理,并有助于發(fā)現(xiàn)并記錄用戶對(duì)特定資源的訪問(wèn)習(xí)慣或者用戶模擬行為(例如:某個(gè)用戶在web客戶端對(duì)某個(gè)網(wǎng)站持續(xù)性的訪問(wèn)),從而提高KDC服務(wù)器對(duì)資源與用戶、權(quán)限角色進(jìn)行關(guān)聯(lián)以構(gòu)建出關(guān)聯(lián)信息的效率,防止資源的任意分配,并為web應(yīng)用服務(wù)器提供有效決策;(d)利用上述構(gòu)件的邏輯回歸算法構(gòu)建資源訪問(wèn)風(fēng)險(xiǎn)評(píng)估模型,并向web應(yīng)用服務(wù)器提供;(e)管理員在web應(yīng)用服務(wù)器上對(duì)各邏輯回歸算法所構(gòu)建的模型、用戶對(duì)特定資源的訪問(wèn)習(xí)慣或者用戶模擬行為進(jìn)行評(píng)估和分析。上文所列出的一系列的詳細(xì)說(shuō)明僅僅是針對(duì)本發(fā)明的可行性實(shí)施方式的具體說(shuō)明,它們并非用以限制本發(fā)明的保護(hù)范圍,凡未脫離本發(fā)明技藝精神所作的等效實(shí)施方式或變更均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。對(duì)于本領(lǐng)域技術(shù)人員而言,顯然本發(fā)明不限于上述示范性實(shí)施例的細(xì)節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實(shí)現(xiàn)本發(fā)明。因此,無(wú)論從哪一點(diǎn)來(lái)看,均應(yīng)將實(shí)施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權(quán)利要求而不是上述說(shuō)明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化囊括在本發(fā)明內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。此外,應(yīng)當(dāng)理解,雖然本說(shuō)明書(shū)按照實(shí)施方式加以描述,但并非每個(gè)實(shí)施方式僅包含一個(gè)獨(dú)立的技術(shù)方案,說(shuō)明書(shū)的這種敘述方式僅僅是為清楚起見(jiàn),本領(lǐng)域技術(shù)人員應(yīng)當(dāng)將說(shuō)明書(shū)作為一個(gè)整體,各實(shí)施例中的技術(shù)方案也可以經(jīng)適當(dāng)組合,形成本領(lǐng)域技術(shù)人員可以理解的其他實(shí)施方式。當(dāng)前第1頁(yè)1 2 3