邁向DevOps 開發容器與K8s應用的四大風險與解方
為享受使用容器和Kubernetes的靈活效益,企業必須要注意防範安全問題。
根據Security Boulevard一項調查,去年受訪企業有90%都發生Kubernetes環境的安全問題,此外近半受訪者也發生安全問題使其App無法及時部署。這些數據再次說明了DevOps安全的重要性,以及漏洞對企業靈活性的不利影響。
本文將列舉4種容器和Kubernetes最常見的安全問題以及避免方法。企業必須積極正視這些潛在問題,以避免新應用上線時程的重大延宕。
本文目錄
組態不當造成資料曝光
這是Kubernetes環境裏最嚴重而常見的安全問題。組態管理對安全相關的App開發商是一大挑戰,特別是他們是在Kubernetes中部署了容器化應用程式。
現在有很多針對容器映像檔漏洞的測試工具,像是用爬蟲技術(crawling)來抓漏洞的動態應用安全測試。但是容器組態管理又有點不同,你必須注意如何套用映像檔在你應用中,儘量避免不必要的第三方軟體,尤其是來路不明的映像檔。
你還要必須使用密碼管理工具,避免將密碼寫在程式中,除非真有必要。命名空間(namespace)也有助於一旦發生安全事件時,可將攻擊與災害限制在局部地區。此外,最好遵守最低權限原則,尤其是runtime的權限,也就是運算環境中的任何模組只能存取執行任務時必要的資訊、資源或功能。
部署網路政策也有助於對潛在駭客佈下障礙。最好能清楚掌握持續性儲存的使用和組態,因為這是容器和Kubernetes環境的重要攻擊目標。
人工智慧(AI)式自動組態管理工具有助於避免上述攻擊,減少人為錯誤。將近80%的資料專家同意,AI 工具對未來安全有重大影響,企業也有必要準備這些措施未來可能成為標準程序。最後,如果貴公司有自建Kubernetes叢集的話,還必須設定控制層(control plane)元件,這些東西可控制叢集運作,如果發生入侵,將危及整個叢集。
Runtime威脅
除了組態不當,runtime也面臨源自外部的威脅。還好你可以透過以下安全措施可以確保容器安全。
首先,必須監控runtime活動來確保流程活動和容器服務的網路通訊安全。在使用新版本(build)時,請確保runtime應只有必要的活動,方便你標示異常之處。你可以設定必要活動來限定多餘的網路通訊,僅提供支援應用程式流量所需的連線。
你不妨建立檢查清單來監控runtime,並記錄正常應用會執行的所有流程,以它為參考基礎,藉此檢查出可疑的活動。
遵循稽核不足
上述措施如果你都有做到,就不用擔心遵循稽核不足。CIS Benchmark for Kubernetes、CIS Benchmark for Docker以及NIST SP 800-190為容器和Kubernetes專用的遵循標準。此外也有特定產業專用的標準,例如醫療業的HIPAA compliant hosting或金融業的PCI-DSS 2加密標準等。法規遵循重要性就無需多言了,貴公司應該在App早期開發階段就考量法規遵循的要求。千萬不要等到App上線才來考慮,但是根據HP的一項調查,20%的開發商直到DevOps階段才進行安全測試,許多人也承認在App上線前完全沒有任何安全策略。
漏洞管理不足
常見容器應用已知漏洞包括權限升級、加密劫持等其他惡意程式、存取主機等,請確保貴公司都採取了防範措施來保護用戶資料。
理論上漏洞管理應涵括整個容器生命周期。應用開發商應要能辨識出映像檔的可能漏洞,並儘可能不要使用。存在這些漏洞的新版本(Build)也不應該使用。可以使用第三方或自行開發的Kubernetes叢集存取控管工具來防止有問題的容器映像檔。
使用VPN也有助於確保容器安全。VPN可在伺服器和電腦間建立安全連線,以雙重資料加密協定防止兩點間的通訊內容曝光,確保容器的匿名性,減少被駭風險。
結語
降低Kubernetes和容器安全風險有助於提升應用程式開發的靈活性。因此,你應該了解映像檔怎麼來的、有沒有漏洞、公司基礎架構和應用任務的組態情況,從開發之初就確實掌握並落實法規遵循,這些將能讓貴公司開發出一個安全的應用程式。