初識雲原生安全:雲時代的最佳保障

語言: CN / TW / HK

什麼是雲原生安全?

雲原生安全是指將安全納入企業整體雲原生應用開發的戰略。這一方法解決了建立安全應用程式所需的基礎設施、團隊和流程的變化。因此,雲原生安全強調應用安全,以確保在雲環境中檢測和修復漏洞。

實現雲原生安全需要一個整體的規劃使安全得以滲透到整個軟體開發生命週期(SDLC)中。安全平臺可以幫助開發人員交付基於雲原生理念的設計,開發團隊應該負責提供安全程式碼。每個設計決策都應考慮到雲原生架構,以確保應用程式是完全基於雲原生架構的。

確保基於雲架構的安全會面臨一些挑戰。開發人員可以通過基礎設施即程式碼(IaC)配置動態地部署基礎設施,通常是與應用程式程式碼同時編寫基礎設施程式碼。開發人員可以將安全工具整合到他們的工作流程中,為補救措施提供見解和建議。例如,他們可以用命令列介面(CLI)工具進行本地測試,並使安全資料在整合開發環境(IDE)中可見。

雲原生的安全有哪些需要考慮的?

儘管企業已經體會到了雲原生應用的優勢,但企業對管理和維持此類應用環境的安全依舊缺乏經驗。在雲原生環境中,安全的含義是否真的與傳統環境不同?這對你的安全策略和控制有什麼影響?雲原生環境的首要安全考慮因素有以下幾個:

1、 持續交付要求持續安全性

隨著微服務和容器在雲原生環境中取代單體和傳統的多層應用,軟體交付和部署正在變得持續。如亞馬遜之類的大型企業每天都會進行數百次部署。在這些型別的環境中,安全檢查必須要輕量、持續並且嵌入到開發工具鏈中,否則就有可能被繞過。

2、 保護 server 工作負載是當務之急

傳統企業的安全是保護 endpoint 的安全,分割網路和保護網路邊界(network perimeter)的安全。在雲原生環境中,您不能依賴固定的路由、閘道器、網路邊界,甚至無法依賴 agent ——基於此,您的資料中心正面臨威脅。此外,您的 server 工作負載比以往更容易暴露給攻擊面。因此,將重點轉移到確保資料中心和 server 工作負載的安全是當務之急。

3、 快速且大規模進行執行時檢測

在微服務模型中,端到端的可見性、監控和檢測都將變得更復雜和難以執行,特別是當部署和升級都在持續不斷進行時。因此攻擊檢測需要動態工作(如,減少對靜態簽名的依賴),實時擴充套件,並且在不損害生產環境的效能和穩定性的情況下進行。

4、 整合混合堆疊的安全保護

一些微服務應用程式執行在虛擬機器上的容器中,而其他的則執行在裸機 Linux 上。但現如今保護主機、虛擬機器層、容器和應用程式的安全功能往往是互相獨立的,缺乏整合。這種方法為執行實時安全響應和行動帶來了複雜性和不必要的障礙。打個比方,您會把關鍵任務的容器部署到一個需要打補丁的虛擬機器上嗎?但是,如果您沒有虛擬機器級別的可見性,您又怎麼會知道這個虛擬機器需要打補丁呢?因此現在亟需在混合堆疊中整合可見性、監控和安全保護,包括 Linux 主機、虛擬機器、容器以及最後的應用程式及服務。

雲原生安全的4C基礎設施

為了幫助您瞭解雲原生安全策略,我們將安全基礎設施分為4類——Cloud 層、容器層、叢集層和程式碼層。

Cloud

Cloud 層由運行雲資源的基礎設施組成。當你在雲服務提供商(CSP)設定 server 時,該提供商負責大多數基礎設施安全。但是,您仍然需要負責配置服務、保護您的資料安全,並對其進行監督。

影響 Cloud 層的典型安全問題包括錯誤配置和自動攻擊。攻擊者會積極利用因錯誤或疏忽造成的錯誤配置,如未改變的預設設定或對管理控制檯的弱訪問保護。攻擊者還可以利用自動化來掃描漏洞並迅速發起攻擊。

容器(Container)

容器層由容器映象組成,這些映象可能包含了您能掃描的漏洞。企業常常會忽略一些問題,如映象安全、使用未知來源和弱許可權配置。因此,保持容器定期更新十分重要,這樣可以儘量減少已知漏洞造成的不良後果。此外,您還應該掃描和驗證容器中執行的任何程式。

確保所使用的任何映象是由已知的來源構建的或者來自一個受信任的映象倉庫。一個映象簽名工具,如 Docker Content Trust (DCT),可以幫助您確保容器內容來自可信任的來源。

確保所有容器都使用特權使用者執行,而不是使用主機的 root 許可權。

叢集(Cluster)

叢集層由構成 Worker 節點和控制平臺的 Kubernetes 元件構成。正是在這一層,您要保護 Kubernetes 工作負載。Kubernetes 元件使用加密通訊,請求 TLS 證書來驗證彼此的身份。

需要保護的最關鍵元件是 kube-api-server ,因為它是 Kubernetes 的主要介面。預設情況下,該 server 只能通過 HTTPS 訪問,您也可以使用第三方身份認證程式來進一步保護它。通常情況下,企業使用自定義的基於角色的訪問控制(RBAC)規則進行 API server 授權,所以您可以管理叢集及其工作負載,而無需 Secure Shell 訪問。

Code

程式碼層,也被稱為應用層,提供最高級別的安全控制。你可以限制暴露的 endpoint、埠和服務來管理安全風險。你應該使用 TLS 加密來保護內部和外部服務之間的通訊。

程式碼層的典型安全問題包括不安全的程式碼、不充分的風險評估以及第三方軟體依賴項的漏洞。您應該使用靜態程式碼分析攻擊來識別不安全的程式碼並確保安全的 code 實踐。您需要定期掃描並測試您的應用程式以抵禦跨站點請求偽造(CSRF)和跨站點指令碼(XSS)等攻擊。

大多數雲原生應用都包含第三方程式碼庫或依賴項,這些庫或者依賴項通常未經靜態分析檢查。您可以使用軟體成分分析工具來識別有漏洞的依賴項。

5大雲原生安全策略

企業通常會實施雲原生安全策略以保證整個技術棧的安全,以下列舉出了5個常見的雲原生安全策略:

共同承擔安全責任

DevOps 團隊應該與安全團隊緊密合作。開發人員通常不是安全專家,但他們可以學習安全coding 實踐。同樣,安全專家可以瞭解用於開發、測試和部署應用程式的工具和流程,從而幫助他們提高安全性。

雲原生安全需要各種管理開發和安全團隊的方法,並需要密切溝通協同工作。共同承擔責任和協作是工作文化轉變的一部分,這使組織能夠將安全性整合到開發過程中。

安全左移

安全左移是另一個重要的文化轉變,這通常需要新的安全工具來處理雲原生應用開發環境的規模和速度。這一方式主要是為了在軟體開發流程的早期就開始採納安全方法,如漏洞掃描。開發人員必須在將應用程式程式碼部署到生產之前確保其安全性。

另一個保護基礎設施的方式是避免 serverless 的特性。攻擊者可以利用在 serverless 功能程式碼和容器中的漏洞。他們還可以利用雲基礎設施的錯誤配置來訪問敏感資料,提升許可權,並橫向移動。

您應該在 CI/CD 流水線中避免使用不受信任的容器映象。安全團隊應該在開發人員將映象部署到應用程式之前檢查它們是否包含漏洞。

保護依賴項

應用程式程式碼通常包含開源的依賴項,例如在 Python 軟體包索引(PyPI)裡發現的依賴項。您可以使用引入了綜合漏洞資料庫的自動化工具來保護應用程式的依賴項。雲原生編排工具通過觸發應用程式的安全動作可以幫助您在開發期間維護安全性。您可以持續執行此類工具以避免將漏洞依賴包引入容器和 serverless 功能中,因為它們會執行在生產環境中。

深度防禦

這一方法,也稱為多層安全,主要使用網路監控來檢測和修復單個威脅。安全團隊應該監控網路的每一層,您可以使用多個工具和技術來防止和響應攻擊併為正在進行的攻擊制定應急計劃。

相容多雲的安全方法

企業常常對其多雲模型採用能相容多個雲的安全方法。一個雲原生安全平臺(CNSP)可以幫助您管理來自不同供應商的多個雲的安全。您只需一個安全策略,其中包含了多方必須遵循的最佳實踐——這有助於簡化您的雲原生監控、災備恢復和合規工作。

理想的雲原生安全平臺應該如何?

企業在啟用安全策略推動雲原生轉型之前,他們需要考慮以下這些需求:

  • 高度的安全自動化: 傳統基於告警的安全操作已經無法跟上當前近乎無限規模、動態性質更強的雲原生系統。因此,手動工作流程根本不是一個選項。規模化的自動檢測和響應是雲原生安全的必備條件。

  • 設計時要考慮到“混沌” 在微服務架構中,任何功能可能都會牽涉到許多軟體元件,它們在執行時中被拼接在一起。從安全的角度來說,這意味著檢測邏輯和控制不能依賴於對執行狀態和安全健康狀態的先驗理解。因此雲原生安全必須擁抱混沌工程原則——主動實驗、經常測試並快速補救。

  • 快速檢測、就地遏制、迅速恢復: 雲原生應用最終是分散式計算應用。在這樣的環境下,通常不可能及時執行全域性安全決策。因此,您最好優先考慮哪些允許快速檢測、快速恢復,並在全系統的惡意行為表現出來之前在本地控制影響的行動。即使安全決策不是100%精確,在本地採取行動和快速恢復也會為您提供一個更具彈性的系統。

總結

雲端計算在不斷急速發展,隨著創新的步伐不斷加快,需要開發出新的技術和工具來幫助企業緊跟技術的發展。很多時候,企業會將他們現有的企業本地的軟體基礎設施移植到雲中,進而導致企業內部被強制使用過時的抽象和安全模型,從而無法體會到雲原生所帶來的優勢。

為本地託管時代建立的安全模型和工具是一個特別重要的責任。因為現存的工具中大多數是在雲端計算作為一級託管平臺普及之前設計的,無法提供足夠的安全性。在快節奏和競爭激烈的空間中,能夠擴充套件、保護您的應用程式是十分重要的。想要在現代雲時代保持競爭力,企業應該專注於構建雲原生應用程式,並使用雲原生安全平臺來幫助保護它們。