雲原生安全的挑戰與實踐

基於容器和無服務器平臺的雲原生應用在正在快速地被全球的組織所部署。雖然說雲原生應用會帶來易延展性、無與倫比的韌性、以及快捷的開發速度,雲原生應用同樣會帶來挑戰。有多種保護雲原生應用的方式,包括:安全左移、在函數和容器級別應用邊界安全、貫徹最小角色和最低權限、保護應用依賴,以及安全共責。

雲原生應用會有大量的可移動成分,並且基於那些短暫的架構組件。這就會給運營和維護產生難度;除此以外,自然還有安全隱患。雲原生安全需要新的解決思路、策略和工具。這裏,有五個可以幫助改善企業雲原生安全的小建議。

雲原生安全的挑戰與實踐雲原生安全的挑戰與實踐

什麼是雲原生?

雲原生應用爲雲而創建,而且整個軟件開發生命週期——開發、部署、測試和升級,都會在雲環境完成。“雲”的概念不侷限於公有云,也可以意味着遠程和本地資源都有的混合雲或者超過一個雲供應商的多雲環境。

雲原生計算基金會(CNCF)認爲三種工具應該用於雲原生計算中:容器化、微服務結構和動態編排。容器化意味着軟件和其關聯依賴綁定,從而實現軟件可移動、可擴展;動態編排包括了使用Kubernetes等工具管理雲端容器;而微服務結構能夠優化資源。容器能夠被另一項雲原生計算能力——無服務器功能所替代。

雲原生的安全挑戰

雲原生應用給基礎設施和應用安全帶來了額外挑戰。以下是一些關鍵挑戰:

  1. 多個需要保護的實體:DevOps團隊和基礎設施團隊會使用微服務來運行雲原生應用。在過去,多個進程或者軟件功能會在一個虛擬機上運行。現在,每個進程或者能力都會被包裝成分離的容器或者無服務器功能。每個實體都易於被攻破,因此需要全開發週期的防護。
  1. 多樣的結構:雲原生系統會涉及很多公有云和私有云、雲服務、以及應用結構。每個結構都有不同的隱患和安全需求。安全團隊必須理解這一複雜的攻擊面,並且爲每個不同的結構找到解決方案。
  1. 不斷變化的環境:公有云和私有云環境在持續變化。快速的軟件發佈週期意味着微服務應用的每個組件都必須每日進行升級。另外,使用不可變性和基礎設施即代碼意味着應用會被持續分解並重構。安全團隊會發現很難在不減緩發佈週期的情況下,保護這些技術應用。
如何保護雲原生應用

有多種保護雲原生應用的方式,包括:安全左移、在函數和容器級別應用邊界安全、貫徹最小角色和最低權限、保護應用依賴,以及安全共責。

1. 安全左移

許多企業依然在使用已有的工具,卻無法處理雲原生應用環境的速度、規模和動態網絡。如果再加上無服務器功能,會讓整個基礎設施變得更抽象,讓問題更嚴重。

網絡攻擊者會尋找容器和無服務器代碼中的隱患,以及雲基礎設施中的錯誤配置,以接入包含敏感信息的實體,再用它們提升權限,攻擊其他實體。

另一個問題是企業在用CI/CD工具持續開發、測試和發佈應用。當使用容器部署雲原生應用的時候,開發者會從本地或者公共庫當中獲取鏡像,但一般不會檢查這些鏡像是否包含安全隱患。

一種解決方案是給安全團隊提供一些工具,阻止不受信任的鏡像進入CI/CD管道,以及啓用一些機制讓不受信任的鏡像在進入生產前就避免產生安全問題。通過在開發流程早期掃描鏡像的漏洞、惡意軟件成分等,開發者可以貫徹安全標準。

2. 在函數和容器級別應用邊界安全

在無服務器應用中,系統會被分解成幾個能從不同資源接受項目觸發的可調用組件。這就給了攻擊者更大的攻擊選擇,以及更多實施惡意行爲的途徑。

一個很重要的方式是使用爲雲原生環境而製作的API和應用安全工具。除此以外,一個很普遍的操作是在功能級別使用邊界安全——識別功能是否被一個和平時不同的來源所觸發,然後監控事件觸發中存在的異常情況。

在容器化環境裏,一個重要點是在不同級別都要實現安全——編排控制面板、物理主機、pod和容器。編排的一些最佳安全實踐包括節點隔離、限制和監測容器之間的流量、以及對API服務器使用第三方認證機制。

3. 最小角色與最低權限

雲原生資源之間會有大量頻繁的交互。如果能夠對每個無服務器功能或者容易都能配置一些獨特的許可,就能有極大概率提升安全性。可以通過基於每個函數使用IAM,或者對容器進行顆粒度的許可,加強接入控制。花一點時間創建最小角色,或者爲每個函數或容器創建一系列的許可。這就確保了即使雲原生結構中有一個點失陷,其造成的危害也是最小的,並且會防止其他元件產生提權問題。

4. 保護應用依賴

無服務器函數和應用的代碼經常從npm或者PyPI的庫中獲取有依賴關係的包。

爲了保護應用的依賴,就需要包括完整開源組件以及其漏洞數據庫的自動化工具。同樣,還需要能夠在開發流程中觸發安全行爲的雲原生編排工具。通過持續運作這些工具,就可以防範產線上運行的有隱患的代碼包或者容器。

5. 安全共責

在開發者、DevOps和安全團隊之間建立親密的關係。開發者並不是安全專家,但他們可以被教導安全操作知識,從而確保他們可以安全地編寫代碼。安全團隊應該知道應用是如何開發、測試和部署的,還有哪些工具在流程中被使用,從而安全團隊能夠在這些流程中有效地加入安全元素。

雲原生要求各種企業管理安全和開發的方式,因此儘快讓不同團隊減少隔閡至關重要。雲原生的啓用對企業來說是一個形成合作和共享文化的罕見契機。

雲安全結論

這篇文章提及了雲原生面臨的挑戰,包括大量需要保護的實體,以及持續變化的環境和結構。同樣,也給出了五個能夠改善雲原生環境的最佳實踐:

  1. 安全左移,在問題進入產線前進行規避。
  1. 在函數和容器級別應用邊界安全。
  1. 對雲原生應用中的實體實行最小角色和最低權限。
  1. 保護好應用依賴。
  1. 鼓勵開發、運營和安全團隊之間的安全共責。
雲安全點評

業務節奏加快使得無服務器應用等雲原生應用會越來越多被企業所啓用,雲原生的安全也會更多被注意。不難發現,本文提到的五個安全建議中,軟件安全相關的建議佔了大部分:無論是安全左移、應用依賴的防護、還是實現DevSecOps整個安全協同,最終都離不開開發安全相關。這一點來看,DevSecOps和API安全的重要性都會隨着雲原生的使用進一步地提升。

本文地址:https://www.linuxprobe.com/cloud-native-security-practices.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章