Zero Trust的基礎(chǔ)是為每個(gè)應(yīng)用程序、用戶和設(shè)備定義精細(xì)的控制和授權(quán)政策。擁有足夠精細(xì)的系統(tǒng)來做到這一點(diǎn)對(duì)于同時(shí)滿足監(jiān)管和安全要求至關(guān)重要。但如此多的控制有一個(gè)潛在的負(fù)面影響:為了解決用戶問題,管理員必須考慮應(yīng)用程序、用戶身份和設(shè)備信息等變量的復(fù)雜組合,這可能需要“極其痛苦”地花費(fèi)大量時(shí)間和精力篩選日志。
我們認(rèn)為應(yīng)該可以有一種更好的方法-為此,我們隆重宣布:管理員現(xiàn)已可以輕松審核所有活躍的用戶訪問以及在其Cloudflare One策略下的全部相關(guān)數(shù)據(jù)。這可以實(shí)現(xiàn)兩全其美的效果:極其精細(xì)的控制,同時(shí)在單一簡潔的控制面板中保持更高效的故障排除和診斷Zero Trust部署的能力。那些曾經(jīng)僅存在于用戶瀏覽器中或動(dòng)態(tài)更改的信息,管理員現(xiàn)在都可輕松獲取,而無需打擾終端用戶或深入挖掘日志。
有關(guān)應(yīng)用程序身份驗(yàn)證和授權(quán)的快速解讀
身份驗(yàn)證和授權(quán)是Zero Trust策略在允許用戶訪問資源之前評(píng)估的兩個(gè)組件。
身份驗(yàn)證是驗(yàn)證用戶、設(shè)備或系統(tǒng)身份的過程。常見的身份驗(yàn)證方法包括輸入用戶名和密碼、出示數(shù)字證書,以及指紋或面部掃描等生物識(shí)別技術(shù)。多因素身份驗(yàn)證(MFA)需要兩種或更多獨(dú)立的身份驗(yàn)證方法來增強(qiáng)安全性,例如硬件密鑰與密碼相結(jié)合。
授權(quán)是在實(shí)體成功通過身份驗(yàn)證后授予或拒絕對(duì)特定資源或權(quán)限的訪問的過程。它定義了經(jīng)過身份驗(yàn)證的實(shí)體在系統(tǒng)中可以做什么和不能做什么。
應(yīng)用程序身份驗(yàn)證及授權(quán)的運(yùn)作機(jī)制
這里我們將重點(diǎn)介紹Web應(yīng)用程序的場(chǎng)景,此類應(yīng)用程序通常使用HTTP Cookie來處理身份驗(yàn)證和授權(quán)。
身份驗(yàn)證:
登錄:當(dāng)用戶通過輸入用戶名和密碼登錄Web應(yīng)用程序時(shí),應(yīng)用程序會(huì)根據(jù)其數(shù)據(jù)庫或身份提供商(IdP)驗(yàn)證這些憑證。還可以應(yīng)用其他形式的身份驗(yàn)證來實(shí)現(xiàn)多因素身份驗(yàn)證。如果它們匹配,服務(wù)器或外部安全服務(wù)(例如Cloudflare Access)就會(huì)認(rèn)為用戶已通過身份驗(yàn)證。
Cookie/令牌創(chuàng)建:然后,服務(wù)器以Cookie或JSON Web令牌的形式為用戶創(chuàng)建會(huì)話。Cookie在一段時(shí)間內(nèi)有效,之后用戶必須重新進(jìn)行身份驗(yàn)證。
發(fā)送和存儲(chǔ)Cookie:服務(wù)器向用戶的瀏覽器發(fā)送響應(yīng),其中包括會(huì)話ID和Cookie中有關(guān)用戶的其他識(shí)別信息。然后,瀏覽器會(huì)存儲(chǔ)這個(gè)Cookie。此Cookie用于在用戶的后續(xù)請(qǐng)求中識(shí)別該用戶。
授權(quán):
后續(xù)請(qǐng)求:對(duì)于對(duì)Web應(yīng)用程序的所有后續(xù)請(qǐng)求,用戶的瀏覽器會(huì)自動(dòng)在請(qǐng)求中包含Cookie(帶有會(huì)話ID和其他識(shí)別信息)。
服務(wù)器端驗(yàn)證:服務(wù)器從Cookie中獲取用戶數(shù)據(jù)并檢查會(huì)話是否有效。如果有效,服務(wù)器還會(huì)檢索用戶的詳細(xì)信息及其與該會(huì)話ID相關(guān)的訪問權(quán)限。
授權(quán)決定:根據(jù)用戶的訪問權(quán)限,服務(wù)器決定用戶是否有權(quán)執(zhí)行請(qǐng)求的操作或訪問請(qǐng)求的資源。
這樣,用戶在登錄后,其所有后續(xù)請(qǐng)求都保持經(jīng)過身份驗(yàn)證的狀態(tài)(并且可以檢查其授權(quán)),直到會(huì)話到期或他們退出帳戶。
在現(xiàn)代Web應(yīng)用程序中,此會(huì)話狀態(tài)通常以JSON Web令牌(JWT)的形式存儲(chǔ)。
調(diào)試基于JWT的身份驗(yàn)證
許多現(xiàn)代Web應(yīng)用程序和Cloudflare Access等Zero Trust網(wǎng)絡(luò)訪問(ZTNA)解決方案都使用JWT來進(jìn)行身份驗(yàn)證和授權(quán)。JWT包含一個(gè)有效負(fù)載,該有效負(fù)載對(duì)有關(guān)用戶的信息和可能的其他數(shù)據(jù)進(jìn)行編碼,并且由服務(wù)器對(duì)其進(jìn)行簽名以防止篡改。JWT通常以無狀態(tài)方式使用,這意味著服務(wù)器不會(huì)保留每個(gè)JWT的副本,它只是在其隨著請(qǐng)求傳入時(shí)對(duì)其進(jìn)行驗(yàn)證和解碼。JWT的無狀態(tài)性質(zhì)意味著您不必依賴中央系統(tǒng)來處理用戶會(huì)話管理,這可以避免隨著訪問系統(tǒng)的用戶數(shù)量增加而產(chǎn)生的可擴(kuò)展性問題。
但是,由于JWT的這種無狀態(tài)性質(zhì),如果不從用戶處獲得特定的JWT,則很難調(diào)試基于JWT的身份驗(yàn)證。原因如下:
令牌特定性:每個(gè)JWT都特定于一個(gè)用戶和一個(gè)會(huì)話。它包含有關(guān)用戶、頒發(fā)機(jī)構(gòu)、令牌的頒發(fā)時(shí)間、到期時(shí)間以及可能的其他數(shù)據(jù)的信息(聲明)。因此,要調(diào)試問題,您通常需要獲得導(dǎo)致問題的確切JWT。
無服務(wù)器端記錄:由于JWT是無狀態(tài)的,因此服務(wù)器默認(rèn)不存儲(chǔ)會(huì)話。它無法查找過去的令牌或其關(guān)聯(lián)狀態(tài),除非它是專門設(shè)計(jì)用來記錄它們的,但出于隱私和數(shù)據(jù)最小化考慮,通常情況并非如此。
暫時(shí)性問題:JWT的問題可能是暫時(shí)性的,它們可能與使用令牌的具體時(shí)刻有關(guān)。例如,如果用戶嘗試使用令牌時(shí),該令牌已過期,則需要該特定令牌來調(diào)試問題。
隱私和安全:JWT可能包含敏感信息,因此應(yīng)謹(jǐn)慎處理。從用戶那里獲取JWT可能會(huì)將他們的個(gè)人信息或安全憑證暴露給調(diào)試問題的人員。此外,如果用戶通過不安全的渠道將JWT發(fā)送給開發(fā)人員或IT幫助臺(tái),則可能會(huì)被攔截(Cloudflare最近發(fā)布了免費(fèi)的HAR Sanitizer來幫助緩解這一問題)。
這些因素使得在沒有相關(guān)特定令牌的情況下,很難對(duì)基于JWT的身份驗(yàn)證問題進(jìn)行故障排除。
調(diào)試身份問題的更好方法
我們著手構(gòu)建一種更好的方法來調(diào)試與Cloudflare Zero Trust中用戶身份相關(guān)的問題,而無需來回分享JWT或HAR文件。管理員現(xiàn)在可以查看用戶的注冊(cè)表身份(用于Gateway策略)和所有活躍的Access會(huì)話。
此會(huì)話信息包括Zero Trust需要評(píng)估的完整身份信息,包括IdP聲明、設(shè)備態(tài)勢(shì)信息、網(wǎng)絡(luò)背景信息等。通過利用Cloudflare Workers KV,我們能夠在不對(duì)Access的身份驗(yàn)證邏輯進(jìn)行任何額外負(fù)載的情況下構(gòu)建此功能。當(dāng)用戶使用Access進(jìn)行身份驗(yàn)證時(shí),其關(guān)聯(lián)的身份會(huì)立即保存到Workers KV中的鍵/值對(duì)中。這一切都發(fā)生在用戶身份驗(yàn)證事件的上下文中,這意味著延遲影響或?qū)ν獠糠?wù)的依賴都極小。
使用任一Zero Trust計(jì)劃的所有客戶都將可以使用此功能。如果您想即刻開始使用Cloudflare Zero Trust,可以立即注冊(cè)一個(gè)最多可容納50位用戶的免費(fèi)帳戶!或者,與Cloudflare的專業(yè)團(tuán)隊(duì)取得聯(lián)系,評(píng)估并討論適合貴司的SSE或SASE計(jì)劃,一步一步地幫助您推進(jìn)Zero Trust策略實(shí)施、或解決您的Zero Trust用例相關(guān)問題。