Google基礎(chǔ)設(shè)施安全設(shè)計概述翻譯&導(dǎo)讀 |
來源:聚銘網(wǎng)絡(luò) 發(fā)布時間:2017-02-25 瀏覽次數(shù): |
信息來源:FreeBuf
聲明:截至2017年1月,文章符合Google現(xiàn)狀。但Google可能會不斷的改進(jìn)升級安全策略導(dǎo)致實際情況有所出入。
CIO級摘要
小編導(dǎo)讀:這一段其實主要是Google說自己如何厲害,如果你是第一遍看本文的話,可以跳過去,看完了再回過頭來看看總結(jié)比較合適。 概述本文簡要介紹了Google基礎(chǔ)設(shè)施是如何設(shè)計安全特性的。該基礎(chǔ)設(shè)施的使命就是在Google整個信息處理生命周期中提供安全性,包括安全的發(fā)布服務(wù)、安全存儲用戶隱私數(shù)據(jù)、在Google多個服務(wù)之間安全的交互數(shù)據(jù)、保障用戶和服務(wù)之間的互聯(lián)網(wǎng)流量安全、安全的運維管理操作。 Google使用此基礎(chǔ)設(shè)施構(gòu)建自己的服務(wù),包括搜索、Gmail、照片等(面向普通用戶的)服務(wù),也包括G Suite、Google Cloud Platform等(面向企業(yè))的服務(wù)。 我們將從數(shù)據(jù)中心的物理安全開始,逐層介紹硬件和軟件等底層設(shè)計是如何保障安全的,最后一直到技術(shù)規(guī)范和運維流程,如何保障運維操作等方面的安全。 底層基礎(chǔ)設(shè)施安全這一節(jié),我們會詳細(xì)的從基礎(chǔ)設(shè)施的最底層開始介紹,從機(jī)房的物理安全,到安全定制加固過的硬件,再到底層的軟件引導(dǎo)棧。 機(jī)房物理安全Google自己設(shè)計數(shù)據(jù)中心,在數(shù)據(jù)中心里包含了多級的安全保護(hù)措施,并限制了只有非常少的Google員工才有權(quán)限訪問。包括:生物識別、金屬探測、監(jiān)控攝像頭、路障、激光檢測。當(dāng)Google跟第三方數(shù)據(jù)中心合作時, Google要求合作方在原有數(shù)據(jù)中心安全措施的基礎(chǔ)上,必須額外增加完全由Google自主控制的生物識別、攝像頭監(jiān)控和金屬探測等機(jī)制。
硬件安全每個Google的數(shù)據(jù)中心都是由數(shù)千臺接入到本地網(wǎng)絡(luò)的服務(wù)器組成的。所有的服務(wù)器主板、網(wǎng)絡(luò)設(shè)備都由Google自行設(shè)計。Google謹(jǐn)慎的選擇每一個組件的供應(yīng)商,精心挑選組件,并且和供應(yīng)商一起審計、確認(rèn)該組件所提供的安全屬性是符合要求的。Google還自行設(shè)計芯片,包括一個硬件的安全芯片,該芯片被部署在服務(wù)器以及外圍設(shè)備上,用于在硬件層面識別合法的Google自有設(shè)備。
引導(dǎo)棧安全加固與機(jī)器身份識別Google服務(wù)器使用多種技術(shù)來確保運行的軟件引導(dǎo)棧是合法受信的。我們使用加密簽名的方式,對底層組件,諸如BIOS、bootloader、內(nèi)核、操作系統(tǒng)鏡像進(jìn)行簽名。這些簽名在每一次啟動、更新的時候會被校驗。而每一個上述組件都是完全由Google控制的(Google自行構(gòu)建、加固),每一代硬件都會提升和加強(qiáng)安全能力。例如,在不同年代的服務(wù)器設(shè)計中,Google通過一個可以被鎖定的固件芯片(firmware)、微處理器或者上述提到的安全芯片,來確保引導(dǎo)鏈的信任根是安全的。(均由Google自行編碼或者設(shè)計實現(xiàn)) 數(shù)據(jù)中心里的每一臺服務(wù)器都有它獨特定制的身份標(biāo)識(與硬件信任根綁定)。這個標(biāo)識在底層的服務(wù)管理API調(diào)用中,會被用作源和目標(biāo)的鑒權(quán)依據(jù)。 Google還實現(xiàn)了全自動化的系統(tǒng),確保每一個服務(wù)器上運行的軟件棧(包括安全補(bǔ)?。┒寄苌壍阶钚?、檢測硬件和軟件的故障、或者在必要的情況下將其從踢出網(wǎng)絡(luò)。
服務(wù)發(fā)布安全這一節(jié),我們從硬件和軟件的基本安全,過渡到描述“服務(wù)”是怎么樣安全發(fā)布的。本文的 “服務(wù)”指的是由開發(fā)者編寫的,運行在我們的基礎(chǔ)設(shè)施上的應(yīng)用程序,例如:Gmail 的SMTP服務(wù)程序、BigTable存儲服務(wù)程序、YouTube視頻轉(zhuǎn)碼程序、或者一個用來運行用戶程序的App Engine沙箱。它們可能會在數(shù)千臺機(jī)器運行相同的的副本。這些服務(wù)都運行在一個叫做Borg的集群調(diào)度系統(tǒng)上(也是Google的基礎(chǔ)設(shè)施之一)。 如上所述,基礎(chǔ)設(shè)施并沒有賦予服務(wù)和服務(wù)之間任何的信任。換句話說,我們的基礎(chǔ)設(shè)施設(shè)計出來就是提供給多租戶模式使用的。
服務(wù)標(biāo)識,完整性和隔離Google內(nèi)部的服務(wù)之間,仍然使用加密認(rèn)證和授權(quán)機(jī)制來保障安全。在管理員和服務(wù)易于理解的前提下,提供了很強(qiáng)的訪問控制能力。 盡管Google也的確在網(wǎng)絡(luò)入口和出口過濾了一些內(nèi)容,避免IP欺騙之類的攻擊。但Google并沒有把網(wǎng)絡(luò)的隔離作為主要的安全手段,這樣的思路讓我們可以最大化的保障網(wǎng)絡(luò)的性能和可靠性。
每一個運行服務(wù)都擁有一個服務(wù)標(biāo)識。向其它服務(wù)發(fā)起RPC調(diào)用或者接收RPC返回信息的時候,需要提供基于這個標(biāo)識的加密憑據(jù)。這些標(biāo)識對于client端來說,可以確保和自己通信的遠(yuǎn)程服務(wù)端是可信的,對于server端而言,則可用來限制僅有受信的client才能發(fā)起請求,或者只能訪問特定的方法。 Google的源代碼都存儲在一個中心倉庫中,確保當(dāng)前和歷史版本的源代碼均可被審計?;A(chǔ)設(shè)施可以要求代碼必須經(jīng)由特定的代碼審核、簽入、測試,才能被構(gòu)建成二進(jìn)制版本。代碼審核必須由至少1名作者之外的其他工程師執(zhí)行,并且需要系統(tǒng)的負(fù)責(zé)人同意,才能提交修改動作到代碼里。這些要求,限制了內(nèi)部員工或者外部黑客提交惡意代碼的能力,并且也為源代碼的追溯取證提供了必要信息。
在同一臺服務(wù)器上運行多個服務(wù)的時候,我們用了很多隔離和沙箱技術(shù),來保護(hù)它們之間互不干擾。這些技術(shù)包括普通的Linux用戶空間、語言和基于內(nèi)核的沙箱以及硬件的虛擬化。一般而言,對于高風(fēng)險的服務(wù),我們會用更多層的隔離手段(比如轉(zhuǎn)化用戶提交的數(shù)據(jù)需要做復(fù)雜的格式轉(zhuǎn)換的時候,或者在GAE(Google App Engine)、GCE(Google Compute Engine)中運行用戶提交的代碼時)。對于特別敏感的服務(wù),例如集群管理、密鑰管理服務(wù),我們也會專機(jī)專用,作為額外的一層加固手段。
內(nèi)部服務(wù)的訪問控制管理服務(wù)的負(fù)責(zé)人可以使用基礎(chǔ)設(shè)施特別提供的訪問控制管理功能,精確的限制哪些服務(wù)可以和自己的服務(wù)進(jìn)行通信。例如,讓特定的API只能被白名單范圍的服務(wù)訪問,只要配置白名單服務(wù)的標(biāo)識,基礎(chǔ)設(shè)施就會自動實現(xiàn)這些功能。 Google的工程師訪問這些服務(wù),也同樣需要獨立的身份標(biāo)識,做類似的配置,基礎(chǔ)設(shè)施就可以自動實現(xiàn)對特定的人允許或者拒絕訪問的能力。所有這些身份標(biāo)識(機(jī)器、服務(wù)、員工)都在一個全局的命名空間里,由基礎(chǔ)設(shè)施進(jìn)行維護(hù)。本文的后續(xù)部分會進(jìn)一步解釋,普通用戶的憑據(jù)會有單獨的處理方式。
基礎(chǔ)設(shè)施提供了豐富的工作流管理系統(tǒng)來支持這些身份標(biāo)識的管理工作,包括審批鏈、日志、告警等功能。例如,通過本系統(tǒng)可以設(shè)置需要雙人批準(zhǔn)(均為群組管理員)后,方能讓某些身份標(biāo)識訪問特定的群組。本系統(tǒng)可以為基礎(chǔ)設(shè)施上數(shù)以千計規(guī)模的服務(wù)提供安全的訪問控制能力。 為了自動化實現(xiàn)API級別的訪問控制,基礎(chǔ)設(shè)施還允許從數(shù)據(jù)庫里讀取ACL列表、群組信息,以便系統(tǒng)負(fù)責(zé)人在必要的情況下,靈活運用訪問控制能力設(shè)計規(guī)則。
內(nèi)部服務(wù)之間的加密通信基礎(chǔ)設(shè)施除了提供前面討論的認(rèn)證、授權(quán)能力之外,也在網(wǎng)絡(luò)上提供了隱私加密能力和RPC數(shù)據(jù)的完整性保護(hù)能力。為了提供這些能力給到一些類似于HTTP之類的應(yīng)用,我們會把它們封裝在RPC內(nèi)。從本質(zhì)上來說,RPC這樣的機(jī)制給了應(yīng)用層天然的隔離防御能力,并拋棄了對網(wǎng)絡(luò)信道的安全依賴。內(nèi)部服務(wù)之間的通訊加密,可以在網(wǎng)絡(luò)被中間人劫持,或者網(wǎng)絡(luò)設(shè)備被攻陷的時候,仍然是安全的。 每一個RPC的加密級別是可配置的(例如,對低敏感、低價值的數(shù)據(jù),可以選擇在機(jī)房內(nèi)部通訊的時候,僅僅做完整性的檢查)。為了對抗高級別的攻擊方(比如有能力在公網(wǎng)上監(jiān)聽Google流量和隱私的對手),基礎(chǔ)設(shè)施在所有跨機(jī)房的網(wǎng)絡(luò)流量上,強(qiáng)制加密通訊。這個特性無需任何配置。Google也開始部署硬件加速器,打算讓數(shù)據(jù)中心內(nèi)部的通信也默認(rèn)加密。
用戶數(shù)據(jù)的訪問管理典型的Google服務(wù)是為終端用戶提供某種功能的。例如,一個終端用戶可能在Gmail里保存郵件。終端用戶在使用Gmail的時候,會跟其它服務(wù)產(chǎn)生交互(比如聯(lián)系人服務(wù)),以便訪問這個用戶的地址簿。 如前所述,我們已經(jīng)知道Contacts(聯(lián)系人)服務(wù),會被配置成僅僅接受Gmail(或者其它指定服務(wù))的RPC請求了。 但是,這仍然是一個非常寬松的權(quán)限管理級別,在此狀態(tài)下,Gmail服務(wù)可以隨時請求任意用戶的全部聯(lián)系人數(shù)據(jù)。 所以,當(dāng)Gmail發(fā)起RPC請求到Contacts(聯(lián)系人),要求查詢某個特定的終端用戶的數(shù)據(jù)時,基礎(chǔ)設(shè)施要求Gmail出示終端用戶權(quán)限票據(jù)(end user permission ticket),作為RPC請求的一部分。該票據(jù)證明了Gmail正在為某個特定的終端用戶提供服務(wù),也確保了Contacts(聯(lián)系人)服務(wù)只會為合法票據(jù)所代表的用戶提供對應(yīng)數(shù)據(jù)的安全能力。 基礎(chǔ)設(shè)施利用票據(jù)(end user permission tickets)提供特定用戶識別服務(wù)。一個終端用戶的登錄被專門的認(rèn)證服務(wù)驗證通過后,會得到一個認(rèn)證憑據(jù)(例如Cookie、OAuth token),保存在客戶端設(shè)備上。該設(shè)備發(fā)起的每一個子請求,都需要攜帶本憑據(jù)。 當(dāng)一個服務(wù)收到用戶的認(rèn)證憑據(jù)時,它會轉(zhuǎn)發(fā)給到專門的認(rèn)證服務(wù)校驗。校驗通過會返回一個短時間內(nèi)有效的“終端用戶權(quán)限票據(jù)”,以便于RPC請求時攜帶。在上文提到的例子中,就是Gmail服務(wù)拿到了這個票據(jù),可以發(fā)給Contacts服務(wù)。此刻起,該票據(jù)就可以被調(diào)用方攜帶在RPC請求里,并且被處理方使用了。
數(shù)據(jù)存儲安全通過上面的討論,我們已經(jīng)描述了Google如何安全的發(fā)布服務(wù)?,F(xiàn)在開始討論我們?nèi)绾卧诨A(chǔ)設(shè)施上實現(xiàn)數(shù)據(jù)存儲的安全。 靜態(tài)加密Google的基礎(chǔ)設(shè)施提供了多種存儲服務(wù),類似于BigTable和Spanner,以及特定的密鑰管理服務(wù)。多數(shù)Google的應(yīng)用不直接訪問物理存儲,而是通過存儲服務(wù)替代。存儲服務(wù)在實際寫入物理硬盤之前,可以被配置為使用密鑰(從特定的密鑰管理服務(wù)中獲?。┩瓿杉用軘?shù)據(jù)。密鑰管理服務(wù)支持自動輪換,提供精確的審計日志,并且與前面提到的權(quán)限票據(jù)關(guān)聯(lián)到特定的用戶。 實施應(yīng)用層的加密可以讓基礎(chǔ)設(shè)施避免被潛在的底層存儲攻擊,比如說一個惡意的硬盤固件。也就是說,基礎(chǔ)設(shè)施也實現(xiàn)了額外的保護(hù)層。我們在物理硬盤、SSD的整個生命周期都啟用硬件加密。在一塊硬盤被廢棄或者更換前,它會被一個多步驟的流程進(jìn)行清理(包括2條獨立驗證的方法并行)。沒有通過這個擦除程序的磁盤會直接物理銷毀(比如粉碎)。
數(shù)據(jù)刪除在Google,數(shù)據(jù)的刪除通常是打上一個刪除標(biāo)記,表示該數(shù)據(jù)“即將被刪除”,而不是真正的移除數(shù)據(jù)實體。這允許我們有機(jī)會從不小心的刪除誤操作中恢復(fù)數(shù)據(jù),不管用戶發(fā)起的還是由于bug導(dǎo)致的。當(dāng)數(shù)據(jù)被標(biāo)記為“即將被刪除”后,這個數(shù)據(jù)會被按服務(wù)預(yù)先配置的策略進(jìn)行處理。 當(dāng)一個終端用戶刪除了他的帳號實體,基礎(chǔ)設(shè)施會通知服務(wù)處理該請求,找出該帳號關(guān)聯(lián)的相關(guān)數(shù)據(jù)進(jìn)行移除。
Internet通信安全介紹到這一節(jié),我們已經(jīng)描述了Google的服務(wù)在我們的基礎(chǔ)設(shè)施上是如何被加固的。這一節(jié)我們會轉(zhuǎn)過來描述,我們的服務(wù)在Internet上的通訊,是如何加固的。 正如此前所討論的,基礎(chǔ)設(shè)施連接了大量的物理設(shè)備,包括局域網(wǎng)和互聯(lián)網(wǎng),并且服務(wù)之間的通訊并不依賴網(wǎng)絡(luò)本身的安全。但是,Google仍然把基礎(chǔ)設(shè)施的IP地址配置內(nèi)網(wǎng),以便于跟互聯(lián)網(wǎng)隔開。這樣我們可以更容易的實現(xiàn)一些額外的防護(hù),比如規(guī)避拒絕服務(wù)攻擊的威脅。因為我們可以只暴露很少的一部分機(jī)器到外部的互聯(lián)網(wǎng)上。 Google 前端服務(wù)當(dāng)一個服務(wù)希望把自己提供給Internet訪問時,它得去基礎(chǔ)設(shè)施的GFE(Google Front End)上進(jìn)行注冊。GFE確保所有的終端與自己的連接都正確的使用了TLS連接,用了正確的證書,并且遵循正確的安全策略。GFE還提供了拒絕服務(wù)防御能力(后文會討論)。GFE收到互聯(lián)網(wǎng)的請求后,通過前面介紹過的RPC安全協(xié)議轉(zhuǎn)發(fā)到內(nèi)部。 事實上,所有的內(nèi)部服務(wù)要將自己發(fā)布到外網(wǎng),都會使用GFE做為智能反向代理。GFE提供了公網(wǎng)域名的公網(wǎng)IP,拒絕服務(wù)防御能力,TLS連接。值得一提的是,GFE也是運行在基礎(chǔ)設(shè)施上的,像其它服務(wù)一樣,GFE可以處理海量規(guī)模的請求。
拒絕服務(wù)防御從規(guī)模和體量上來說,Google比較容易化解拒絕服務(wù)攻擊。我們有多層級聯(lián)的拒絕服務(wù)防御手段,以緩解或者阻止拒絕服務(wù)對GFE后方的服務(wù)的風(fēng)險。 在骨干網(wǎng)傳遞外部請求到數(shù)據(jù)中心時,它會經(jīng)過多層硬件和軟件的負(fù)載均衡。這些負(fù)載均衡設(shè)備會上報入流量的信息給基礎(chǔ)設(shè)施上的DoS處理服務(wù)。當(dāng)DoS處理服務(wù)檢測到攻擊時,它可以要求負(fù)載均衡設(shè)備丟棄或者限制與攻擊相關(guān)的請求。 在下一層,GFE實例也會上報請求的信息給到DoS處理服務(wù),包括一些負(fù)載均衡無法識別的應(yīng)用層的信息。GFE同樣可以接受DoS處理服務(wù)的指令丟棄與攻擊相關(guān)的請求。
用戶認(rèn)證討論完了拒絕服務(wù)防御,下一層防御來自我們的中央認(rèn)證服務(wù)。這個服務(wù)對于終端用戶而言,通常展現(xiàn)為登錄頁面。除了詢問簡單的用戶名和密碼,該服務(wù)也會智能的根據(jù)用戶的其它信息(比如是否從一個已知的安全設(shè)備、歷史相似登錄地點),判斷風(fēng)險等級并對應(yīng)的做出風(fēng)險控制的挑戰(zhàn)確認(rèn)。通過鑒定后,認(rèn)證服務(wù)會派發(fā)一個認(rèn)證憑據(jù)(比如cookies、OAuth Token)以便后續(xù)的請求攜帶。 用戶也可以在登錄時選擇類似于OTP或者防釣魚的安全證書服務(wù)做二次驗證。為了把這些安全能力提供給Google以外的公司,我們還跟FIDO(安全密碼聯(lián)盟)共同協(xié)定了U2F(通用二次認(rèn)證)開放標(biāo)準(zhǔn)?,F(xiàn)在這些設(shè)備也可以在市場上買到,并且主流的web站點也跟隨我們實現(xiàn)了對U2F的支持。 運維安全說到這里,我們已經(jīng)描述了安全是如何被設(shè)計到基礎(chǔ)設(shè)施里的,并且也介紹了一些類似于RPC請求的訪問控制安全機(jī)制。 現(xiàn)在我們來介紹一下我們是如何安全的運營基礎(chǔ)設(shè)施的:怎么安全的寫出基礎(chǔ)設(shè)施軟件,怎么保護(hù)雇員的機(jī)器和認(rèn)證憑據(jù),以及如何從內(nèi)部和外部對抗基礎(chǔ)設(shè)施的威脅。 安全開發(fā)除了中央源碼控制和雙人review機(jī)制,我們還為一些典型的安全漏洞提供了庫和框架,開發(fā)者直接調(diào)用就可以自動規(guī)避這些典型漏洞。例如,我們提供了防止XSS漏洞的web庫文件和框架。我們也提供了一些自動化的安全漏洞檢測工具,包括fuzzer、靜態(tài)代碼掃描工具和Web漏洞掃描器。 針對不同的風(fēng)險我們有不同的應(yīng)對方式,作為終極大招,我們也使用人工審計來解決快速的風(fēng)險分類,到深度的安全設(shè)計和實現(xiàn)上的安全問題。這些審查是由一個包含了Web安全、加密算法、運維安全等各方面的專家團(tuán)組成的。人工安全檢查出來的結(jié)果,往往被封裝成新的安全庫特性,或者設(shè)計新的fuzzer,以便在未來用于其它產(chǎn)品。 除此之外,我們還運營了一個漏洞獎勵計劃,為任何發(fā)現(xiàn)我們的基礎(chǔ)設(shè)施或者應(yīng)用程序的漏洞報告者提供現(xiàn)金獎勵。我們已經(jīng)在此計劃里支付了數(shù)百萬美金。 Google也投入大量的努力來尋找我們所使用的開源軟件的0day漏洞。例如,OpenSSL的心臟滴血漏洞是由Google發(fā)現(xiàn)并報告的,同時Google也是CVE漏洞最多的提交者,也是為Linux KVM 提交最多安全bug補(bǔ)丁的廠商。
保護(hù)雇員設(shè)備和認(rèn)證憑據(jù)的安全為了保護(hù)員工設(shè)備和憑據(jù)免受入侵、竊取和其它非法內(nèi)部活動,Google在這方面投入了大量資金,這也是Google確保自身基礎(chǔ)設(shè)施安全運行的重要組成部分。 一直以來,針對Google員工的高端復(fù)雜釣魚攻擊總是持續(xù)不斷,為了對抗這種攻擊,Google強(qiáng)制員工帳號OTP口令認(rèn)證方式更換成了支持 U2F 的安全密鑰(OTP畢竟還是存在被釣魚攻擊的風(fēng)險的)。 Google投入大量的資金來監(jiān)控用于操作基礎(chǔ)設(shè)施的客戶端設(shè)備。確保操作系統(tǒng)更新到了安全的補(bǔ)丁包,限制允許安裝的軟件。我們還掃描辦公設(shè)備中,員工安裝的app程序、下載的文件,瀏覽器的擴(kuò)展和所瀏覽的web頁面內(nèi)容。 Google并不使用信任局域網(wǎng)某個網(wǎng)段的方式來授予訪問權(quán)限。取而代之的是,Google用應(yīng)用級別的訪問管理控制手段,來把內(nèi)部的應(yīng)用開放給合適的用戶,并且僅允許他們從合法受控的設(shè)備,和安全可信的網(wǎng)絡(luò)(和物理位置)。(更詳細(xì)的描述可以閱讀BeyondCorp相關(guān)的文章)
內(nèi)部風(fēng)險控制我們嚴(yán)格限制并嚴(yán)密監(jiān)控那些被賦予了基礎(chǔ)設(shè)施管理員權(quán)限的Google員工。持續(xù)的評估一些特殊任務(wù)所需要的最小權(quán)限,鼓勵自動化的安全可控的方式來完成工作。這些手段包括雙人審批機(jī)制、在debug時使用受限的(脫敏的)API接口。 Google雇員訪問終端用戶的信息會被基礎(chǔ)設(shè)施底層的Hook記錄日志,安全團(tuán)隊據(jù)此監(jiān)控異常數(shù)據(jù),并對可疑的問題展開調(diào)查。
入侵檢測Google擁有成熟的數(shù)據(jù)處理管道,可以很好的集成每一臺設(shè)備的主機(jī)、網(wǎng)絡(luò)、服務(wù)的檢測日志。內(nèi)置在這些管道上的安全策略會及時的向運維安全人員發(fā)出告警。Google的應(yīng)急響應(yīng)團(tuán)隊實施365天24小時的全天候待命。同時,Google內(nèi)部也經(jīng)常實施紅藍(lán)軍對抗,以不斷的衡量和提高檢測能力。
Google云平臺安全在這一節(jié),我們重點介紹我們的公共云基礎(chǔ)設(shè)施,GCP,是如何從底層基礎(chǔ)設(shè)施繼承安全能力的。以GCE(Google Compute Engine)為例,我們詳細(xì)介紹基礎(chǔ)設(shè)施為它賦予了哪些安全能力。 GCE允許用戶在Google的基礎(chǔ)設(shè)施上運行自己的虛擬機(jī)。它是由多個邏輯組件組成的,尤其是管理所用的控制面板和虛擬機(jī)本身。 其中,管理控制面板會暴露一些外部API接口并對虛擬機(jī)創(chuàng)建遷移等進(jìn)行任務(wù)管理。由于它運行在一些基礎(chǔ)設(shè)施上,所以它自然繼承了基礎(chǔ)設(shè)施的底層安全能力:比如安全的引導(dǎo)棧。不同的服務(wù)會運行在不同的服務(wù)帳號下,所以每一個服務(wù)都只會被賦予它發(fā)起RPC請求時必須的最小化的權(quán)限。正如此前介紹過的,這些服務(wù)都存儲在一個中央的Google源碼倉庫,它們是可審計的,并且二進(jìn)制是被安全的發(fā)布的。 GCE控制面板是通過GFE對外提供API的,所以它又集成了GFE的DDOS防御特性,以及天然繼承了SSL/TLS的加密特性。用戶可以選擇Google云負(fù)載均衡服務(wù)的選項來緩解多種拒絕服務(wù)攻擊。 用戶在登錄GCE控制面板的時候,是通過Google的認(rèn)證服務(wù)校驗的(提供類似于劫持檢測的安全能力),授權(quán)服務(wù)則由中央的IAM服務(wù)實施。 控制面板的流量,包括GFE轉(zhuǎn)發(fā)給其后的服務(wù),和跨機(jī)房之間的所有流量,都由基礎(chǔ)設(shè)施自動實施認(rèn)證和加密。除此之外,也可以配置控制面板的一些特定流量在機(jī)房內(nèi)部也必須加密。 每一個虛擬主機(jī)實例,都會有一個與之關(guān)聯(lián)的虛擬主機(jī)的管理服務(wù)同時運行。基礎(chǔ)設(shè)施會給這2個服務(wù)獨立的ID。一個ID是給VMM服務(wù)實例自身調(diào)用,另一個用來代表VM的身份。這使得我們可以區(qū)分那些請求是從可信的VMM來的。 GCE的將數(shù)據(jù)持久化寫入的磁盤會自動調(diào)用一個基礎(chǔ)設(shè)施的中央密鑰管理系統(tǒng),在空閑時自動加密。這些密鑰是自動輪換的,并且支持對密鑰訪問記錄進(jìn)行審計。 如今,用戶可以選擇是否把流量從他們的虛擬主機(jī)發(fā)送到互聯(lián)網(wǎng)上其它的虛擬主機(jī),或者通過加密的方式傳送這些流量。我們已經(jīng)開始推出廣域網(wǎng)之間的VM流量自動加密的機(jī)制。如前所述,基礎(chǔ)設(shè)施在所有廣域網(wǎng)之間的流量傳輸都已經(jīng)是加密過的了。未來,我們也計劃通過硬件加密加速器,把所有在局域網(wǎng)之間的流量也進(jìn)行加密,這一點之前也提過了。 給VM提供隔離能力是在硬件層面的虛擬化技術(shù)實施的,主要使用了開源的KVM。我們未來會自己給KVM做一些定制化加固的實現(xiàn),包括將一些控制代碼和硬件模擬代碼移動到內(nèi)核之外的低權(quán)限進(jìn)程中。我們也已經(jīng)使用包括fuzzing、靜態(tài)代碼掃描和人工代碼審計等方式仔細(xì)的對KVM的核心代碼進(jìn)行了檢測。之前提到了,現(xiàn)在Google是KVM提交漏洞最多的廠商。 最后,我們的運維安全控制是確保上述數(shù)據(jù)遵從安全策略的重要組成部分。做為Google Cloud Platform的一部分,GCE使用的用戶數(shù)據(jù)同樣遵從相同的安全策略,Google不會訪問和使用用戶的數(shù)據(jù),除非必須為用戶提供某種支持。
總結(jié)我們已經(jīng)介紹了Google基礎(chǔ)設(shè)施是怎么樣被設(shè)計成安全的構(gòu)建、發(fā)布和運維服務(wù)的。包括為用戶提供的服務(wù)(例如Gmail),也包括為企業(yè)提供的服務(wù)。除此之外,我們的Google云也是在同樣的基礎(chǔ)設(shè)施之上完成的。 我們投入重金加固這些基礎(chǔ)設(shè)施。Google擁有數(shù)百名專注于安全和隱私的工程師,遍布在所有Google產(chǎn)品里,包括一些專業(yè)領(lǐng)域里的權(quán)威都在其列。 正如我們看到的,基礎(chǔ)設(shè)施的安全性是從物理組件和數(shù)據(jù)中心開始,到硬件原型,到加固的安全啟動引導(dǎo)鏈,到內(nèi)網(wǎng)服務(wù)交互加固,到靜態(tài)數(shù)據(jù)加密,內(nèi)網(wǎng)服務(wù)之間的安全管理和終端用戶訪問時的安全管理,以及對于人和技術(shù)的流程管理。
小編后記Google關(guān)鍵思路總結(jié):
可能為了鼓勵更多人去用自家的云服務(wù),Google祭出了安全大旗,連續(xù)發(fā)了好幾篇paper??赐曛?,第一時間感覺到它對于甲方安全團(tuán)隊價值巨大,于是趕緊逐字翻譯并梳理了一些值得借鑒的地方。如果大家英文水平好的話,強(qiáng)烈推薦閱讀原文和參考鏈接。我們需要學(xué)習(xí)的地方還很多。理解的不對的地方也請大家指正。 感謝被我騷擾的幾位Google同學(xué)。另外,我們團(tuán)隊長期招人,歡迎大家推薦或者自薦。一起打造一流的安全能力。 |