全解Google(谷歌)基礎設施架構安全設計
針對谷歌技術基礎設施的安全設計作了簡要分析與介紹,這些技術基礎設施為谷歌全球信息系統(tǒng)提供了一系列安全防護,它們包括運行安全服務、終端用戶數(shù)據(jù)安全存儲、服務安全通信、用戶安全通信和運維安全管理等。
在介紹中,我們將圍繞谷歌數(shù)據(jù)中心的物理安全、整體軟硬件基礎安全、技術限制和操作的運維安全進行逐層描述。
底層基礎設施安全設計
物理基礎架構安全
谷歌數(shù)據(jù)中心包括了生物識別、金屬感應探測、監(jiān)控、通行障礙和激光入侵感應系統(tǒng)等多層物理安全保護,并做了嚴格的限制訪問。
因為谷歌的某些服務托管在第三方數(shù)據(jù)中心,為了確保絕對的安全控制,必須部署此類高度安全措施。
硬件設計部署
谷歌數(shù)據(jù)中心網(wǎng)絡由數(shù)千臺服務器組成,這些服務器的主板和網(wǎng)絡設備都由谷歌自行定制設計,相關設備組件和供應商都必須經(jīng)過嚴格的安全檢測和背景審查。
同時谷歌也自己設計了安全芯片,這些芯片被廣泛應用于服務器和相關外設環(huán)境,為硬件級別的安全識別和認證提供了有效的安全手段。
安全引導和服務器識別機制
為了確保正確的服務啟動,谷歌服務器使用了一系列的啟動引導技術,包括在BIOS、bootloader、kernel和系統(tǒng)鏡像等底層組件中使用加密簽名,這些簽名在每次啟動和更新時都能進行安全驗證。
整個過程中涉及的組件都由谷歌構建、控制和加固。隨著硬件的更新?lián)Q代,谷歌也在不斷努力進行安全改進,比如自行設計了可鎖固件芯片、安全微控制器和安全芯片,并按照不同服務器的設計版本,在各類芯片中內置了可信的安全啟動機制。
在軟件引導和硬件啟動過程中,數(shù)據(jù)中心的每臺服務器都有自己獨特的標識身份,這些標識也被用于機器底層管理的API調用驗證。
另外,谷歌也開發(fā)了自動更新檢測系統(tǒng),以保證各類軟硬件的及時更新、識別和診斷,必要時可以自動隔離那些出現(xiàn)故障的服務器。
安全服務部署
此節(jié)中,將對一些基本的軟硬件服務安全進行介紹,數(shù)千臺服務器將對這些服務應用請求進行伺服和備份,這些服務包括Gmail的SMTP服務、分布式數(shù)據(jù)存儲服務、YouTube視頻轉碼服務、客戶端APP沙箱運行服務等常規(guī)用戶請求。
所有運行于基礎設施架構的服務請求都由一個叫Borg的集群業(yè)務管理服務進行控制。
服務標識、完整性與隔離
在內部服務的應用層通信之間,谷歌使用了加密認證授權方式,為管理和服務提供了高強度的訪問控制。
雖然谷歌不完全依賴內部網(wǎng)絡劃分和防火墻作為主要安全機制,但為了防止IP欺騙等進一步攻擊,谷歌在網(wǎng)絡入口和出口的各種不同點位使用了過濾策略,這種方法也最大化地提高了網(wǎng)絡性能和可用性。
每一個運行服務都有自身相關的服務賬戶標識,當創(chuàng)建服務或接收RPC請求時,就能提供相應的加密驗證憑據(jù)。這些標識同樣被用于服務間通信,以及對特定客戶端的數(shù)據(jù)和方法訪問限制。
谷歌的源代碼被存儲在一個中心庫內,在這里可以針對當前和以往的代碼進行審計。谷歌基礎設施可以針對特定服務配置相應的安全審核、驗證和源代碼檢測程序。
在代碼審查方面,需要除編寫者之外的至少一名工程師進行審查和批準,另外,在審查出現(xiàn)問題之后,需要經(jīng)系統(tǒng)管理員批準才能更改和執(zhí)行代碼。
這些強制要求限制了內部人員或攻擊者對源代碼作出惡意更改,同時也為服務代碼提供了可追溯的取證流程。
除此之外,為了保護同一臺服務器上運行的其它服務,谷歌還設置了一系列的沙箱和隔離技術。這些技術包括通用的用戶隔離、基于語言和內核的沙箱以及硬件虛擬化等。
總體來說,為了應對存在風險的請求服務,如用戶請求的復雜文件格式轉換,或APP端及谷歌運算引擎這類產(chǎn)品面臨的用戶執(zhí)行代碼等,谷歌使用了多層隔離技術。
另外,為了保證網(wǎng)絡邊界的安全可按,谷歌還使用了一些特殊敏感的服務,如集群業(yè)務服務和關鍵管理服務等,這些服務都運行在專門的服務器之上。
服務間訪問管理
所有運行服務可以使用谷歌基礎設施提供的訪問管理功能來指定哪些服務可以與其進行通信。
例如,某個服務可以設置只提供一些特定白名單服務的API請求調用,該服務可以被配置為僅允許白名單帳戶身份,之后,這種訪問限制機制將會被谷歌基礎設施自動執(zhí)行。
就像谷歌工程師對服務的訪問同樣需要身份標識驗證一樣,這些服務可以設置為允許或拒絕訪問。所有標識類型信息(機器、服務或員工)都存儲于谷歌基礎設施的全局域中。
在內部身份標識認證中,谷歌提供了多樣的標識管理系統(tǒng),包括審批流程、記錄和通知等。例如,這些標識可以通過某個系統(tǒng)指派給訪問控制組,以方便不同工程師進行服務的更改和批準。
標識管理系統(tǒng)可以對成千上萬的運行服務進行安全訪問管理。除了自動的API級別訪問控制機制外,谷歌還設置了訪問控制列表(ACLs)和數(shù)據(jù)庫的讀取服務,以方便執(zhí)行必要時自定義和細粒度的訪問控制操作。
服務間通信加密設計
除了前述的PRC認證授權功能之外,谷歌還提供了網(wǎng)絡內PRC數(shù)據(jù)的加密保密性和完整性功能,為了對HTTP等其它應用層協(xié)議進行安全保護,這些加密功能被谷歌封裝在了內部的PRC機制中。
本質上來說,這提供了應用層隔離,同時消除了任何網(wǎng)絡路徑的安全依賴因素。即使網(wǎng)絡被竊聽或設備被入侵,加密的服務通信也能保證信息安全可靠。
可以針對每一種PRC調用,為服務設置不同的加密保護級別,例如,對于數(shù)據(jù)中心內部的低價值數(shù)據(jù)交換只設置完整性保護級別;而針對復雜的網(wǎng)絡攻擊和內部網(wǎng)絡竊聽行為,將會自動開啟所有RPC流量加密功能,無需額外的操作配置。
同時,谷歌配置部署了硬件加密加速器,可以為數(shù)據(jù)中心內部所有PRC流量進行加密。
終端用戶數(shù)據(jù)訪問管理
典型的谷歌服務為終端用戶帶來了很多便利,例如Gmail,在用戶使用類似程序的過程中,將會和谷歌基礎設施進行交互,如Gmail服務中調用通訊錄服務API訪問終端用戶地址薄。
結合前述章節(jié),通訊錄服務可以設置成Gmail服務中只允許特定RPC的請求。然而,這仍然是一個非常廣泛的權限控制集。但在權限許可范圍內,Gmail服務將對任何時間的任何用戶作出請求回應。
由于Gmail服務將會代表終端用戶執(zhí)行對通訊錄的RPC請求,而此時,作為RPC請求的一部分,谷歌基礎設施將會為Gmail服務提供一個“終端用戶許可憑據(jù)”,該憑據(jù)是特定終端用戶的身份證明,這也為特定終端用戶通訊錄服務的數(shù)據(jù)回應實現(xiàn)了安全保障。
為了向終端用戶發(fā)布“權限許可憑據(jù)”,谷歌運行有一個中央用戶身份服務系統(tǒng)。
終端用戶登錄后,將會通過該身份服務進行多種方式驗證,如用戶密碼、cookie信息、OAuth令牌等,之后,任何從客戶端發(fā)起到谷歌內部的后續(xù)請求也將需要身份信息驗證。
當服務接收到終端用戶密碼信息后,將把其傳遞到中央身份服務系統(tǒng)進行驗證,如果驗證正確,身份服務系統(tǒng)將返回一個短期有效的“權限許可憑據(jù)”,用于用戶的RPC相關請求。
結合前面的例子,Gmail服務如果獲得了“權限許可憑據(jù)”后,將把該憑據(jù)將傳遞給通訊錄服務進行驗證。之后,作為RPC調用的一部分,該憑據(jù)將適用于任何客戶端請求。
安全數(shù)據(jù)存儲
靜態(tài)加密
谷歌基礎設施中運行有很多存儲服務,如分布式數(shù)據(jù)庫(BigTable)、Spanner以及集中密鑰管理系統(tǒng)。大多數(shù)應用程序都將通過這些存儲服務對物理存儲設備進行直接訪問。
存儲數(shù)據(jù)在寫入物理存儲設備之前,可以配置使用集中密鑰管理系統(tǒng)分發(fā)的密鑰進行加密。而集中密鑰管理系統(tǒng)支持自動密鑰輪換,并提供了全面的日志審計、特定用戶身份完整性校驗等功能。
Spanner是谷歌公司研發(fā)的、可擴展的、多版本、全球分布式、同步復制數(shù)據(jù)庫。它是第一個把數(shù)據(jù)分布在全球范圍內的系統(tǒng),并且支持外部一致性的分布式事務。
在應用層執(zhí)行加密允許基礎設施隔離掉一些如惡意磁盤固件的底層存儲潛在威脅,這也是另一種加密保護層的額外實現(xiàn)。
谷歌的每一塊機械硬盤和固態(tài)硬盤都支持硬件加密和狀態(tài)跟蹤。如果某個加密存儲設備被更換或廢棄,必須經(jīng)過多步驟的磁盤清理和兩次獨立驗證,不經(jīng)過此清除過程的設備也將被執(zhí)行物理破壞。
數(shù)據(jù)刪除
谷歌的數(shù)據(jù)刪除不是執(zhí)行完全數(shù)據(jù)清除,而是針對某些特定數(shù)據(jù)的“計劃性刪除”,這樣做的好處是,可以恢復那些客戶端或運維操作無意刪除的數(shù)據(jù)。如果數(shù)據(jù)被標記為“計劃性刪除”后,將按照特定服務策略刪除。
當某個終端用戶執(zhí)行了賬戶刪除之后,谷歌的基礎設施將通知相關數(shù)據(jù)清除服務對被刪賬戶的數(shù)據(jù)進行清除。刪除了谷歌賬號和谷歌郵箱之后,谷歌系統(tǒng)將刪除掉該賬戶相關的所有數(shù)據(jù),不能再繼續(xù)以該賬戶使用谷歌提供的各項服務。
網(wǎng)絡通信的安全性設計
此節(jié)中,將描述谷歌安全通信和相關服務設計。如前所述,谷歌基礎設施由大量物理設備組成,這些設備共同構成了不同的LAN和WAN。為了防止諸如DoS之類的攻擊,谷歌基礎設施使用了一段私有IP空間。
谷歌前端服務
谷歌基礎設施內部的服務需要通過谷歌前端服務(GFE)注冊之后,才能運行于外部互聯(lián)網(wǎng)上。GFE確保所有TLS連接必須使用正確的證書和安全策略,同時還能起到防御DoS攻擊的作用。
GFE對請求的轉發(fā)使用了前述的RPC安全協(xié)議。實際上,任何通過GFE注冊運行于互聯(lián)網(wǎng)的內部服務都是敏捷的反向前端代理服務,該前端不僅能提供服務的DNS公共IP,還能起到DoS防御和TLS保護作用。
GFE像其它運行于谷歌基礎設施的服務一樣,可以應對大量的發(fā)起請求。
DoS攻擊防御
從規(guī)模體量上來說,谷歌基礎設施可以化解或承受大量DoS攻擊,谷歌具備多層級聯(lián)的DoS防護手段,以阻止和緩解任何對GFE注冊服務的DoS攻擊。外部骨干網(wǎng)向谷歌數(shù)據(jù)中心發(fā)起的連接請求,將通過多層軟硬件的負載平衡傳導。
這些負載平衡傳導器將實時向谷歌基礎設施內部的中央DoS監(jiān)測系統(tǒng)反饋傳入流量的狀態(tài)信息,當DoS監(jiān)測系統(tǒng)探測到DoS攻擊之后,將會第一時間讓負載平衡傳導器丟棄或節(jié)流可疑攻擊流量。
在更下一層,GFE實例還會實時向谷歌中央DoS監(jiān)測系統(tǒng)反饋所接收到的請求信息,這些信息包括了網(wǎng)絡層負載平衡傳導器不具備的應用層信息。
如果監(jiān)測到疑似攻擊,中央DoS監(jiān)測系統(tǒng)同樣會讓GFE實例丟棄或節(jié)流可疑攻擊流量。
用戶認證
在DoS防御之后,接下來就是谷歌的中央身份服務系統(tǒng),該服務從終端用戶的登錄頁面開始,除了要求所需的用戶名密碼之外,系統(tǒng)內部還會對最近登錄地點和登錄設備進行智能校驗。
在認證步驟完成之后,身份服務系統(tǒng)將會向用戶分發(fā)一個如cookie或OAuth令牌的憑據(jù),以進行后續(xù)請求調用。
當然,在登錄時,用戶還可以采用如OTP動態(tài)口令、防釣魚安全密鑰等雙因素認證措施。
另外,谷歌還與安全密碼聯(lián)盟(FIDO)共同協(xié)定了U2F用戶雙因素認證標準,制作了YubiKey外連密鑰登錄USB適配器,用戶可以通過購買該適配器實現(xiàn)更安全的登錄。
運維安全
安全軟件開發(fā)
除了前述的安全控制系統(tǒng)之外,谷歌還提供了防止開發(fā)人員引入某些安全缺陷的開發(fā)庫。
例如,在Web APP方面,谷歌設置有排除XSS漏洞的開發(fā)庫和框架。另外,谷歌還配置有大量自動化安全缺陷檢測工具,如Fuzzer、靜態(tài)代碼分析工具、網(wǎng)頁安全掃描器等。
最后,谷歌還會從快速簡單的缺陷識別到深度的風險發(fā)現(xiàn),對開發(fā)代碼進行全方位的手工安全審查。這些手工審查由包括Web安全、加密和操作系統(tǒng)安全等各方面專家組成的團隊實施。
除此之外,谷歌還通過實施的漏洞獎勵計劃,來發(fā)現(xiàn)應用程序和基礎設施存在的漏洞,到目前為止,谷歌已經(jīng)為此計劃支付了數(shù)百萬美元的漏洞賞金。
另外,谷歌還投入了大量智力和精力,致力于尋找其基礎設施中在用和上游產(chǎn)品的0-day漏洞。
例如,由谷歌工程師發(fā)現(xiàn)的心臟出血漏洞就是最好的典型,而且谷歌安全團隊一直是CVE漏洞庫的最多提交者,并且是Linux KVM hypervisor虛擬化技術漏洞的發(fā)現(xiàn)和修復者。
員工設備和憑據(jù)安全保護
為了保護員工設備和憑據(jù)免受入侵、竊取和其它非法內部活動,谷歌在這方面投入了大量資金和代價,這也是谷歌確保自身基礎設施安全運行的關鍵組成部分。
一直以來,針對谷歌員工的高端復雜釣魚攻擊總是持續(xù)不斷,為了防止這種攻擊,我們強制員工把存在釣魚風險的OTP口令認證方式更換成了 U2F的USB適配器安全密鑰。
另外,谷歌投入了大量資金開發(fā)了員工客戶端安全操作監(jiān)控系統(tǒng),同時,還配置了針對員工客戶端的安裝程序、下載程序、瀏覽器擴展和訪問內容的安全掃描系統(tǒng)。
進入公司內部局域網(wǎng),并不意味著可以獲取到谷歌的訪問控制權限。谷歌使用了應用級別的訪問控制管理,只允許那些來自特定管理設備、網(wǎng)絡或地埋位置的限定用戶才能訪問內部控制程序。(詳細參見BeyondCorp內容)
內部風險消控
谷歌嚴格限制具備管理權限的員工數(shù)量,并對其網(wǎng)絡行為進行了積極監(jiān)管。另外,對于一些特殊任務,盡量不需要權限許可,而使用自動化的安全可控方式完成,以消除權限許可需求的泛濫。
這就要求某些活動需行為雙方批準,同時將引入限制性API以排除信息泄露風險。谷歌員工對終端用戶信息的獲取,會被底層架構信息鉤子(hook)記錄,谷歌安全團隊會對所有訪問類型進行實時監(jiān)控,并對其中的異??梢墒录_展調查。
入侵檢測
谷歌擁有成熟的數(shù)據(jù)處理管道,可以很好地集成基于主機、基于網(wǎng)絡和基于服務的入侵檢測信號。內置在這些管道內的安全規(guī)則和探測機制會及時向運維安全人員發(fā)出事件警告,谷歌的事件響應團隊也實行全天候待命。
同時,谷歌內部運維團隊也定期實施紅方練習,以不斷衡量和提高檢測響應機制的有效性。
谷歌云存儲平臺(GCP)安全設計
在此,我們將以谷歌運算引擎 (GCE)服務為例,簡單描述谷歌云存儲平臺(GCP)的安全設計和改進。
Google Compute Engine,GCE是谷歌旗下的IaaS(基礎設施即服務)的一個基礎架構服務產(chǎn)品,可以讓你用Google的服務器來運行Linux的虛擬機,得到更強大的數(shù)據(jù)運算能力。
谷歌在I/O大會上表示,Compute Engine服務比對手的產(chǎn)品更具性價比,每一美元所購買的計算能力要高出對手50%。谷歌Compute Engine服務的背后是由大量的Linux虛擬機組成,此外用于該服務的處理器共計771886核。
GCE服務可以使客戶在谷歌基礎設施上運行谷歌Linux虛擬機,來得到強大的數(shù)據(jù)運算能力。GCE服務的實現(xiàn)由多個邏輯部件組成,尤其是管理控制面板和虛擬機本身。
其中,管理控制面板負責與外部API的連接,同時對虛擬機創(chuàng)建遷移等進行任務編排,由于涉及運行多種服務,管理控制面板內置了安全啟動機制。
由于GCE控制平面通過GFE顯示出API接口,所以它具有和GFE實例一樣的DoS防護和SSL/TLS連接保護功能,與此同時,客戶在運行虛擬機時,可以選擇使用內置于GFE中的谷歌云服務負載平衡器,它能緩解多種類型的DoS攻擊。
用戶認證的GCE控制面板API通過谷歌集中身份認證服務提供安全保護,如劫持檢測。授權則使用中央云IAM服務完成。
身份及訪問管理(IAM):IAM允許用戶按照已定的IAM角色分類規(guī)則對Google云資源的權限進行分配,讓其他用戶能夠按權限,以所有者/編輯者/查看者的身份,訪問一個項目中的所有資源。
控制面板之間的網(wǎng)絡流量,以及從GFE到其它服務之間的流量都經(jīng)過自動認證和加密,可以安全地從一個數(shù)據(jù)中心到達另一個數(shù)據(jù)中心。每個虛擬機(VM)與相關的虛擬機管理器(VMM)服務實例同時運行。
谷歌基礎設施為虛擬機提供了兩個認證身份,一個用于VMM服務實例自身調用,另一個用于VMM對客戶VM身份的代表,這也增加了來自VMM的調用信任。
GCE的永久磁盤采用靜態(tài)數(shù)據(jù)加密,使用谷歌中央密鑰管理系統(tǒng)分發(fā)的密鑰進行安全保護,并允許密鑰自動輪換和系統(tǒng)審計。
另外,虛擬機隔離技術是基于硬件虛擬化的開源KVM堆棧,為了最大化的安全防護,谷歌還對KVM的核心代碼進行了如Fuzzing、靜態(tài)分析、手工核查等一系列安全測試,所以,如前所述,谷歌最近提交和披露了多個KVM漏洞。
最后,谷歌的運維安全控制也是確保數(shù)據(jù)訪問遵循安全策略的關鍵部分。作為谷歌云平臺的一部分,GCE客戶的數(shù)據(jù)使用行為同樣遵循GCP的使用策略,谷歌不會訪問或使用客戶數(shù)據(jù),但必要的為客戶提供服務的情況除外。
原 文:Cloud.Google
譯 文:FreeBuf
作 者: clouds譯