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