GCP

在公有雲服務環境的虛擬機器,以及建置在企業內部的伺服器、虛擬機器,都可能會面臨在開機前攻入的惡意軟體,以及經由韌體rootkit感染系統的威脅。

以Google Cloud Platform(GCP)而言,在2019年4月,正式推出「受保護VM(Shielded VMs)」的特色,強化虛擬機器的開機安全,相隔1年後,他們宣布,Shielded VM成為預設組態,用戶不需為這系列特色支付費用。

基本上,用戶在建立任何虛擬機器執行個體的前置作業時,可以先選定開機磁碟,接著在底下的管理、安全、硬碟、網路、單獨承租設定分頁,可選擇是否啟用Shielded VM的三大功能:安全開機、虛擬的可信任模組(vTPM)、完整性監控。

而在機密運算應用上,GCP最初是在2018年推出開原碼軟體框架Asylo,讓大家開發出能在信任執行環境(TEE)執行的應用程式,可用於加密通訊,以及針對在安全區(enclaves)執行的程式碼,驗證完整性,希望能讓機密運算環境,變得易於部署與使用,適用於在雲端服務執行的工作負載。

在2020年7月,GCP宣布推出機密VM(Confidential VMs),用戶僅需勾選一個項目,即可將執行個體服務,自動轉換成支援機密VM的N2D執行個體。

同年9月,這套GCP第一款機密運算服務正式上線,並揭露機密VM延展性的規格──可擴展至240顆虛擬CPU與896 GB記憶體。

此時,GCP還預告將推出第二款機密運算產品Confidential GKE Nodes,會從GKE(Google Kubernetes Engine)1.18開始支援這項特色;在11月,他們釋出Beta測試版,表明是建在機密VM之上。

到了12月,GCP宣布機密VM完成在9個雲端區域上線供應的工作。

【GCP機密VM的運作架構】2020年9月,GCP正式推出機密VM,就組成方式而言,與GCP其他執行個體無太大不同,差異在於搭配AMD第二代EPYC處理器,而能運用記憶體加密功能(僅於CPU進行解密),每臺虛擬機器都會配置一支由CPU硬體產生的加密金鑰。(圖片來源/GCP)

提供單鍵啟用的機密運算執行個體

目前若要在GCP環境使用機密VM服務,用戶需選用N2D系列的執行個體。在最初揭露機密VM推出的消息裡面,GCP已表明這裡運用的底層運算技術,正是AMD第二代EPYC處理器平臺,當中的安全加密虛擬化(Secure Encrypted Virtualization,SEV)技術是關鍵,能讓伺服器在面對資料的日常使用、索引建立、查詢,甚至是深度學習的訓練時,均可讓虛擬機器存取的記憶體持續處於加密狀態。

這裡所憑藉的加密金鑰會在硬體層級產生(EPYC處理器內建的AMD Secure Processor),根據每臺虛擬機器來產生,而且無法匯出──金鑰會單獨存在AMD Secure Processor內部,GCP或同臺實體伺服器執行的其他虛擬機器,都無法取得這些金鑰。

除了上述基於硬體的記憶體即時加密,機密VM雖然搭配的是AMD第二代EPYC處理器,但與GCP其他運算執行個體一樣,都是構築在Shielded VM之上,可享有作業系統映像安全強化,以及韌體、核心二進位碼、驅動程式的完整性驗證,在作業系統的部份,Google也提供多種支援Shielded VM的映像。

而在系統效能的部份,GCP表示,VM記憶體加密處理不會干擾工作負載效能,他們也加入新的開放原始碼軟體驅動程式,可涵蓋NVMe與gvnic虛擬網路卡的使用,以更高吞吐量來處理儲存與網路流量,確保機密VM與非機密VM的效能不會有太大的落差。

在機密VM正式推出之際,GCP宣布增加四大新特色。首先是因應法規遵循需求,提供稽核報告,裡面呈現AMD Secure Processor韌體完整性的詳細記錄。我們之所以要了解這個韌體的狀態,主要是因為這裡會負責機密VM執行個體的金鑰產生。在使用上,GCP本身會在用戶第一次啟動虛擬機器時建立基準,並且在虛擬機器重新開機時比對,用戶也能基於這些記錄來設置自定的處理動作或警報。

第二是新增機密運算資源的政策控管。用戶可運用身分與存取管理的機構政策(IAM Org Policy),針對所用的機密VM去定義特定的存取權限,也可以在自己管理的雲端服務專案裡面,停用任何非機密的VM執行。

舉例來說,一旦套用這樣的政策,任何在專案內試圖啟動非機密VM的動作都無法進行;當用戶擴展與機密運算有關的服務,可透過身分與存取管理的政策,對自身專案或機構運用的機密運算資源,提供控管機制。

第三是能夠整合其他政策施行方式。用戶可結合共用VPC(Shared VPCs)、機構政策使用限制(organization policy constraints)、雲端防火牆規則等功能,確保機密VM只能與其他機密VM互動(就算這些機密VM位在不同專案),甚至還可以運用GCP提供的網路代管功能VPC Service Controls,為機密VM去定義GCP資源的邊界,像是限定Google Cloud Storage的儲存桶,只能供機密VM的服務帳號來存取。

第四則是能夠讓機密VM共享加密金鑰。在操作機密VM時,用戶可能需要處理以外部金鑰加密的檔案,在這樣的狀況下,密文與加密金鑰需要與機密VM共享,而為了確保這些資訊能夠以安全的方式互通,機密VM可運用vTPM,搭配開放原始碼程式庫go-tpm的API來綁定。

 

【簡便的機密VM設定】想要在GCP環境當中使用機密VM,設定方式相當簡易,我們僅需在建立執行個體的頁面當中,在「機密VM服務」這一項勾選「啟用這個VM執行個體的機密運算服務」。(圖片來源/GCP)

未來將機密運算拓展至K8s叢集

推出機密VM之餘,GCP也發出預告,他們接下來會推出的另一個機密運算服務會是Confidential GKE Nodes,針對全代管的Kubernetes容器平臺應用。

在最初揭露這項消息時,GCP表示,用戶在部署GKE(叢集底層的節點資源池時,可設為只以機密VM來組成。而此種採用Confidential GKE Nodes的叢集,可針對全部的工作節點,自動強制使用機密VM,因此,同樣可以運用AMD EPYC處理器內建的SEV功能,獲得硬體記憶體加密機制。

而在幾週之後,GCP公布Confidential GKE Nodes的測試版,他們介紹幾個特點,像是:建構在機密VM之上、運用AMD SEV、加密節點的記憶體與當中執行的工作負載、每個節點執行個體均配置由處理器產生與管理的專屬金鑰,而且,這些金鑰會在節點建立時產生、單獨存放在處理器,Google或任何同一臺伺服器的其他虛擬機器均不能存取這些機密GKE節點等。

GCP還特別提到幾個新的應用方式,能讓安全防護變得更周延。例如,可結合既有的資料加密機制,像是:資料儲存加密,以用戶自行管理的金鑰來加密節點所掛載的持續性磁碟,以及開機磁碟;網路傳輸加密,可由Anthos Service Mesh提供加密功能;工作負載隔離的模式,透過GKE Sandbox保護節點執行的系統核心,預防來路不明程式碼的執行,以免影響系統核心;節點本身的系統開機保護,經由Shielded GKE nodes來預防rootkit與bootkits這類威脅,確保作業系統的完整性。

【一行指令即可建立Confidential GKE Nodes】Confidential GKE Nodes是GCP的第二款機密運算產品,在2020年10月的展示中,搭配的是GKE 1.18,能讓想要使用Kubernetes叢集的用戶,也能在GKE當中獲得資料加密的保護。(圖片來源/GCP)

熱門新聞

Advertisement