跟著大公司學安全之BeyondCorp安全架構
過去這些年,技術發生了很大的革命,雲端計算改變了業務方式,敏捷改變了開發方式,某寶改變了購物方式。而在內部安全上,零信任則提供了一個新的模式。
過去這些年,各種資料洩漏層出不窮,我懶得去找例子,反正比比皆是,從大公司到小公司,從政府到商業機構。這說明什麼呢?這說明我們過去的方法出了問題,以前基於邊界來劃分可信不可信的辦法行不通了。
傳統的內部安全外圍取決於防火牆、VPN來隔離,但隨著員工用自己的電腦、用自己的手機、再加上,整個網路邊界越來越模糊。零信任安全則直接在概念上顛覆了原有概念,內部使用者比外部使用者更不可信!看以往的各種案例,太多由於駭客掌握了密碼,證書之後得手的攻擊。因此,對這些內部使用者零信任,可能是未來減少資料洩漏的主要方法。
一、Google實踐
Gartner提出了CARTA方法論,意為持續自適應風險與信任評估,包含了零信任安全的核心元素。當然,更關鍵的是,Google已經在15年就開始付諸實施,這個專案就是大名鼎鼎的BeyondCorp,開始從本質上改變。BeyondCorp完全不信任網路,而是基於裝置、使用者、動態訪問控制和行為感知策略。零信任需要一個強大的身份服務來確保每個使用者的訪問,一旦身份驗證透過,並能證明自己裝置的完整性,則賦予適當許可權訪問資源。所以這裡有四個元素:驗證使用者、驗證裝置、許可權控制、自學習和自適應。
1. 驗證使用者
驗證使用者最基本的是使用者名稱和密碼,但怎麼確保這個密碼不是從黑市上買來的?所以就出現了多因素認證來獲得額外的保證,國內一般是簡訊驗證碼或軟硬體token,當然現在也開始逐漸出現人臉、指紋等。使用者有很多型別,普通使用者、管理員、外包、合作伙伴、客戶,多因素認證都可以適用。
2.驗證裝置
要實現零信任安全,要把控制擴充套件到裝置級。如果裝置未經過驗證,裝置就不可信。如果使用者數用常用、可信裝置訪問,則有可信度。如果他在網咖用一臺電腦來登陸,那這個信任度就低。裝置驗證還包括了一些安全准入條件,比如是否安裝防毒軟體和最新補丁。
3. 限制訪問許可權和特權
限制使用者最小許可權的訪問,就可以限制攻擊的橫向移動。其次是對業務應用的授權,業務層包含大量敏感資料,是攻擊的首要目標,因此在應用側限制許可權也同樣重要。資料越重要,許可權越少,也可以用多因素來進一步驗證。
4.自學習和自適應
收集使用者、裝置、應用和伺服器資料和行為資訊,形成日誌資料庫進行機器學習分析,達到異常識別的目的,比如從異常位置訪問資源,則立即觸發強認證。
整個方案有幾個好處:
一是重新定義了身份,以前都是根據角色進行的,而零信任模型則更加動態,用時間、屬性、狀態的組合來實時評估。
二是集中控制,所有的流量都透過中央閘道器來處理認證和授權,這種可以攔截所有到資源之間的通訊。但中央閘道器不是隻有一個,而是分散式的,只是邏輯上的集中。BeyondCorp就在每個受保護的資源之前放了一個反向代理服務。
三是主動防範,能夠檢查日誌做審計是一回事,能夠實時攔截主動防範則是另一回事了。
Google的方法很好,值得借鑑,但不一定要完全照搬。每個企業有自己的實際情況,要是上來就幹,可能會導致更多的問題。根據Google的幾篇論文,我試著分析一下實現路徑做參考。
二、資訊收集
整個專案上,第一步要實現的就是資料的收集,收集資料的作用是掌握全域性,包括賬號和應用的流向關係、網路架構、應用協議等。在這個過程中也能清理掉很多沒用的系統和賬號。而資料的收集分為幾種:
1、裝置資訊
因為裝置驗證屬於一個重要環節,因此要對裝置進行清點。Google要求所有裝置都有IT管理,並且儲存一個資產庫,但這在國內企業中並不現實,例如有的員工自帶電腦,自帶。所以實際上需要在Google的思路上有所擴充,雖然我不知道,但我可以透過裝置指紋來建立一個資產庫。每個裝置都有的獨一無二的標識,透過標識,把員工常用裝置作為可信裝置,從而建立自己的資產庫。
2、梳理訪問記錄
零信任的目標是完全消除靜態密碼的使用,轉為更加動態的驗證,可以對每個單獨的訪問釋出範圍、時間的證書。這是這個架構的好處,也是防範內部風險的最佳答案。所以需要掌握公司內部的訪問記錄,常見是透過SSO訪問日誌來進行。而且定期review內網訪問日誌,也應該是一個常態化工作。梳理這個的目的,是瞭解賬戶和應用之間的關係。
3、系統架構圖
零信任的目標是拋棄掉網路層的訪問控制,但現實是需要在整個過程中逐步改造,因此需要掌握網路拓撲,掌握各訪問控制的位置,掌握資源位置。最後才能達到把訪問控制放到應用側來實現。所以這裡的著眼思考點是,如果我把這個資源放到網際網路上,需要怎麼控制。
4、流量日誌
流量是基於網路拓撲來的,在應用日誌完備的情況下,甚至可以不需要做流量日誌。不過考慮到大家的實際情況,還是加上比較好。另外網路內跑的協議也很重要,Google在計劃階段發現網內使用了各種協議,因此在新系統中作了嚴格的規定,以HTTPS和SSH為主要協議。
二、訪問策略
在Google的論文中,多次提到了他們在形成這個框架時面臨的挑戰,為了有效推進,這個安全措施必須在全公司強制執行,覆蓋廣泛且易於管理。這其實在很多公司是個不容易的事情。而且Google也提到,安全架構不應該影響生產力,在國內就是就是安全不應影響業務。因此把敏感應用放到公網上,需要小心謹慎。零信任要求每個請求都完整驗證身份,授權和加密,這個信任是基於動態使用者和裝置決定的,而不再基於網路單一維度進行判斷。
資料收集以後,接下來要做的事情就是訪問策略框架了。Google整個專案週期是7年(淚奔,7年後我還在不在現在的公司都不好說),提到的建議是情景決策,換成中國話的意思就是業務場景。例如我是一個運營,要去訪問運營報表系統,那麼我用公司給我的筆記本電腦登入報表系統,然後透過跳板機登陸到Hadoop上去調整源資料。這些業務場景會告訴你一些資訊,運營應該授予報表系統、Hadoop許可權,而在這裡的授權元素包括,裝置、角色、被訪問資源、時間等。
1、資料欄位
聽上去比較彆扭,換成中國話的意思,要收集那些資料維度,以用做訪問控制要素。常見的比如組織架構、角色。新增的裝置與使用者配對關係,也包括比如作業系統是否更新,防毒軟體是否安裝這些裝置狀態。同時也可以包括更多的要素:時間、位置、多因素等。這些條件組成了驗證規則,但這太容易被猜測出來了,所以在這個基礎上,還可以增加一些新的判斷欄位,比如wifi的mac等資訊。
2、規則
接下來制定規則,規則中除了包括上面所說的欄位,還應包括行為資訊。例如有一個提出離職的員工,進入文件系統大量下載文件,這就是一個風險。可能需要的規則是,打通PS系統掌握誰提出了離職,然後限制該員工對文件系統的大量下載行為。再細分一點規則,主動離職和被動離職對系統的風險是不同的,下載和檢視文件也是不同的。
規則中一個常見錯誤是設定了太多細緻的規則,Google在實踐中遇到了這個問題,最終他們在代理服務的粗粒度,和後端資源的細粒度之間找到了平衡點。在論文中他們提到了兩個例子:
全域性規則:粗粒度,影響所有服務和資源。比如“底層裝置不允許提交程式碼”。特定服務規則:比如G組中的供應商允許訪問web應用A。
如果規則太複雜,或者對資源規定太過具體,那對規則的語言是很有挑戰性的,所以應該用一套任何人都可以理解的策略規則。Google的做法是從粗規則開始,然後再將RBAC和ABAC引入。
3、許可權
零信任是把信任從外圍改變到端點,目標是在不斷變化的環境中基於動態使用者和裝置,做出智慧的選擇。BeyondCorp是最小許可權原則,透過不斷地處理使用者、裝置、行為資料,為這些資料建立信任值,每個資源都有一個信任層,必須滿足才能訪問。比如你的手機版本過低,系統會給你一個低信任評分。當你訪問工資資料的時候,需要你有更高的信任等級。你必須把手機版本升級,否則不能訪問資源。這其實和金融裡的信用分一個意思,這些元素的組合形成了分數。
但有一點,就是要明確的告訴使用者,基於什麼原因,你的分數過低,要把補救方法明確的提示出來,不然使用者就陷入了迷思,然後會幹出一些亂七八糟的事情出來。換句話說,可以把規則形成問題,你的補丁打了嗎?防毒軟體更新了嗎?然後透過驗證這些問題,賦予許可權。
三、訪問控制
策略訂好了以後就是控制措施,這裡也是國內大多數公司和Google做法有分叉的地方,Google當然有能力自己造所有輪子,都能自己寫,但國內公司很少會這麼幹,同時在內部這些應用裡,或多或少都會有外購的應用系統。
1、微服務
傳統系統已經做了很多訪問控制手段,有的可能就是一個SSO賬號,這種方式是角色、許可權是在後面邏輯上處理的,也就是說,你先進入內網門戶,然後透過門戶進入各個子系統。在進入門戶這個環節並不做後面的資源的驗證,把驗證放在了後端應用上處理。這也就是之前烏雲還在的時候,我們看到一旦拿到一個員工賬號,就可以在內部各種橫向漂移。
而在Google,則使用了微服務,把驗證邏輯和資源系統,以實現靈活的驗證。加入你們採購了外部的一個財務系統,那麼財務系統在這裡只看作是一個原始資料的記錄系統。透過微服務方式的解耦,服務之間不再需要關心對方的模型,僅透過事先約定好的介面來進行資料流轉即可。因此策略層改變起來也很容易,這是其中一個關鍵。
2、集中處理
零信任中有一個處理所有流量的ACCESS GATEWAY,這是個反向代理服務,集中了身份驗證和授權過程,統一進行處理,也是理想的日誌監控點。代理服務支援PKI證書,所有請求都透過HTTPS提供給閘道器,使用者和裝置的資料在這時候被提取出來進行驗證授權。再接下來則是SSH,RDP或TLS連線,與資源進行安全會話,這就大大限制了攻擊面。
在某個時間點,根據動態資料來配置身份驗證,而不是單純的依靠網路。這就是零信任系統的能力。但在初期的時候,這個動態,是需要經過磨合的。最簡單的例子是根據大多數人的共同的行為來調整策略,這裡就需要機器學習來輔助,讓機器來了解共同行為是什麼意思。
四、資源遷移
最後一步則是資源的遷移。資源遷移有個灰度過程,關鍵系統往後放,先從簡單應用開始,這個應用應該適合粗粒度規則,且資料敏感度比較低,比如內部的wiki這種。為了防止在這個過程中的資料洩漏,Google初期是並聯傳統系統的,然後逐漸割接。Google非常強調他們把所有資源都放到公網上,消滅了網路分割槽需求。但實際上,我們大可不必這麼冒險,傳統基於網路層的控制方法仍然可以使用。
透過這個邏輯,只需要把流量指向訪問結構,就可以保護資源。在所有流量都經過閘道器的情況下,需要確保和應用的連線是安全的,每個請求必須端到端加密。但只有這麼個安全隧道是不夠的,還需要確保每個請求都被完全驗證授權,方法上可以是對請求證書和關聯資料進行簽名,再配置應用驗證,也可以是對特定IP列入白名單。
五、總結
Google在基礎架構安全上付出了巨大的努力。我在看這些paper的時候就在想,為什麼Google公開宣傳內部的安全實踐呢,我以小人之心揣測,可能與Google雲相關,從Google一系列的部落格來看,資訊保護一直都是重點範圍。但對於我們這些安全從業者來說,這5個paper提供了很多安全的先進點,讓我們一探頂尖網際網路企業的基礎安全架構。整個閱讀理解過程中,有幾句話我覺得是特別值得總結的:
1、“我們不依賴於內部網路分隔或作為我們的主要安全機制”
我曾在阿里工作過幾年,早在14年阿里安全就提出“去防火牆”。但當時的“去防火牆”思想,更多的是擺脫傳統盒子硬體防火牆層次,和Google還不一樣。零信任的核心主題是,它是一個無周邊架構,這和Google的員工分佈在全球各地辦公有關係。這並不是說防火牆完蛋了,而是說不作為“主要”安全機制。但是在借鑑過程上,去防火牆不是第一步,而應在各種認證、授權等機制建立後的最後一步。
2、“終端使用者登陸由中央驗證,然後中央伺服器向使用者端裝置傳送憑證,例如cookie或OAuh令牌,從客戶端裝置到Google的每個後續請求都需要該憑據”。
零信任基於使用者和裝置的狀態做出智慧決策,憑證是動態的,也就是可撤銷、可審計、有較短時間期限。這其中說,每個後續都需要該憑據,這就是零信任的精髓了。
3、“實際上,任何釋出的服務都使用GFE作為智慧反向代理前端,這個代理提供了DNS,拒絕服務保護,TLS終止和公共IP託管”
把內部應用放到公網,可以實現端到端的前向加密,但卻讓系統面臨攻擊,透過反向代理來管理這些流量。現實而言,我們並不需要這麼激進,抗ddos保護對於中小企業來說,還是應該依靠外部力量。
4、“在企業區域網上不是我們授予訪問許可權的主要機制。相反,我們使用應用程式級的訪問管理控制,允許我們只在特定使用者來自正確管理的裝置以及期望的網路和地理位置時才將內部應用程式公開。
身份認證是整個流程中的重要部分,但零信任獨特在於:使用者、裝置組成一個可以實時進行信任決策的配置檔案。舉例來說,我在北京從我的手機上登陸crm應用,那肯定不會在同一時間允許我在上海的pc上登陸。訪問策略上要麼允許,要麼提示你另一個認證因素。
安全性和可用性一直存在互相矛盾,安全部門要在這裡尋找平衡。每個公司也都有自己的風險容忍度,有的公司因為月餅開除員工,有的公司因為雲盤上傳開除員工。每一個處罰,都會引起內部很多爭論,對於零信任來說,決策是動態的,允許更多的自適應,其中機器學習是這裡的重要工具。
5、“我們積極地限制和監督已經被授予基礎設施管理許可權的員工的活動,提供能安全和可控的方式完成相同任務的自動化,不斷努力消除特定任務的特權訪問需求。
零信任目的在減少內部威脅,整個架構中學習和適應是重要環節。同時也對自動化很敏感,在這麼大一個全球企業中,人工是不現實的。另外,整個專案對特權的檢查,會比對普通許可權的檢查要仔細的多。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31510736/viewspace-2155390/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- BeyondCorp 打造得物零信任安全架構架構
- 遠端辦公怎麼保證系統安全?跟著谷歌BeyondCorp學一學谷歌
- 專案-安全架構架構
- 【跟著大佬學JavaScript】之節流JavaScript
- 安全架構中的前端安全防護架構前端
- 安全架構評審實戰架構
- 跟著GPT學設計模式之代理模式GPT設計模式
- 【跟著我們學Golang】之物件導向Golang物件
- 跟著官方文件學Maven構建生命週期Maven
- Kubernetes 下零信任安全架構分析架構
- 零信任安全架構應如何落地?架構
- 跟著GPT學設計模式之橋接模式GPT設計模式橋接
- 【跟著我們學Golang】之異常處理Golang
- EasyMR 安全架構揭秘:如何管理 Hadoop 資料安全架構Hadoop
- 跟著Zepto學dom(二)
- 跟著菜鳥學pythonPython
- 建立雲安全架構的5個技巧架構
- 跟著《架構探險》學輕量級微服務架構 (一)架構微服務
- Spring認證-Spring 安全架構專題教程Spring架構
- 跟著 React 官方文件學 HooksReactHook
- 跟著廖雪峰學python 005Python
- 【跟著大佬學JavaScript】之lodash防抖節流合併JavaScript
- 如何建設網路安全架構及防禦措施?架構
- NB-IOT物聯網系統的安全架構架構
- Android:跟著實戰專案學快取策略之LruCache詳談Android快取
- Android:跟著實戰專案學快取策略之DiskLruCache詳談Android快取
- 【跟著我們學Golang】流程控制Golang
- 跟著Docker學分層複用思想Docker
- 前端進階:跟著開源專案學習外掛化架構前端架構
- 阿里雲安全肖力:雲原生安全定義下一代安全架構阿里架構
- 物聯網時代 跟著Thingsboard學IOT架構-CoAP裝置協議架構協議
- 物聯網時代-跟著Thingsboard學IOT架構-MQTT裝置協議架構MQQT協議
- 跟著學習100天演算法演算法
- Vue-跟著李南江學程式設計Vue程式設計
- 跟著 AI 一個小時學會 PythonAIPython
- 跟著禹神學前端——CSS 基礎 (2)前端CSS
- 跟著禹神學前端——CSS 基礎 (1)前端CSS
- 《大型網際網路企業安全架構》讀書筆記架構筆記