做者:StackRox產品經理Connor Gilbertlinux
上個月,Kubernetes(世界上最受歡迎的容器編排器)生態系統因發現Kubernetes的第一個主要安全漏洞而動搖。該漏洞(CVE-2018-1002105)使攻擊者可以經過Kubernetes API服務器破壞集羣,容許他們運行代碼來安裝惡意軟件等惡意活動。安全
今年早些時候,Tesla遭遇了複雜的加密貨幣挖掘惡意軟件感染,由Kubernetes控制檯錯誤配置引發。攻擊者利用了特定Kubernetes控制檯沒有密碼保護的事實,容許他們訪問其中一個包含Tesla大型AWS環境訪問憑據的pod。服務器
隨着組織加速採用容器和容器編排器,他們須要採起必要措施來保護計算基礎架構中的這一關鍵部分。爲了幫助完成這項工做,請查看這九項根據客戶意見的Kubernetes安全最佳實踐,你應遵循以幫助保護你的基礎架構。網絡
每一個季度更新都會添加新的安全功能,而不只僅是錯誤修復,爲了充分利用它們,咱們建議你運行最新的穩定版本。最好的辦法是使用最新版本運行最新補丁,特別是考慮到CVE-2018-1002105的發現。越是落後升級和支持可能會越難,因此計劃每季度至少升級一次。使用託管的Kubernetes供應商能夠很是輕鬆地進行升級。架構
基於角色的訪問控制(RBAC)控制誰能夠訪問Kubernetes API以及他們的權限。默認狀況下,RBAC一般在Kubernetes 1.6及更高版本中啓用(某些託管供應商稍遲),但若是你從那時起進行了升級而且未更改配置,則須要仔細檢查你的設置。因爲Kubernetes受權控制器的組合方式,你必須同時啓用RBAC,並禁用傳統的基於屬性的訪問控制(ABAC)。微服務
一旦實施了RBAC,你仍然須要有效地使用它。一般應避免使用集羣範圍的權限,而使用特定於命名空間的權限。避免給予任何集羣管理員權限,即便是爲了調試,僅在須要的狀況下,根據具體狀況授予訪問權限會更安全。工具
你可使用kubectl get clusterrolebinding
或kubectl get rolebinding -all-namespaces
來探索集羣角色和角色。 快速檢查誰被授予特殊的「cluster-admin」角色,在這個例子中,它只是「masters」羣:post
若是你的應用程序須要訪問Kubernetes API,請單首創建服務賬戶,併爲每一個使用站點提供所需的最小權限集。這比爲命名空間的默認賬戶授予過寬的權限要好。加密
大多數應用程序根本不須要訪問API,對於這些能夠將automountServiceAccountToken
設置爲「false」。spa
建立單獨的命名空間是組件之間重要的第一級隔離。當不一樣類型的工做負載部署在不一樣的命名空間中時,咱們發現應用安全控制(如網絡策略)要容易得多。
你的團隊是否有效地使用命名空間?經過檢查任何非默認命名空間來當即查找:
爲了限制受損的潛在影響,最好在一組專用計算機上運行敏感的工做負載。此方法下降了經過共享容器運行時(runtime)或主機,安全性較低的應用程序訪問敏感應用程序的風險。例如,受損節點的kubelet憑證,一般只有在機密內容安裝到該節點上安排的pod中時,才能訪問機密內容。若是重要機密被安排到整個集羣中的許多節點上,則攻擊者將有更多機會竊取它們。
你可使用節點池(在雲或本地)和Kubernetes命名空間、污點(taint)、容差和其餘控件來實現隔離。
敏感元數據(例如kubelet管理員憑據)有時會被盜或被濫用以升級集羣中的權限。例如,最近的Shopify錯誤賞金(bug bounty)披露,詳細說明了用戶如何經過混淆微服務,泄漏雲供應商的元數據服務信息來升級權限。GKE的元數據隱藏功能會更改集羣部署機制以免此暴露,咱們建議使用它直到有永久解決方案。在其餘環境中可能須要相似的對策。
網絡策略容許你控制進出容器化應用程序的網絡訪問。要使用它們,你須要確保擁有支持此資源的網絡提供程序,對於一些託管的Kubernetes供應商,例如Google Kubernetes Engine(GKE),你須要選擇啓用。(若是你的集羣已經存在,在GKE中啓用網絡策略將須要進行簡短的滾動升級。)一旦到位,請從一些基本默認網絡策略開始,例如默認阻止來自其餘命名空間的流量。
若是你在Google容器引擎中運行,能夠檢查集羣是否在啓用了策略支持的狀況下運行:
Pod安全策略設置在集羣中容許運行工做負載的默認值。考慮定義策略,並啓用Pod安全策略許可控制器,指令因雲供應商或部署模型而異。首先,你能夠要求部署刪除NET_RAW功能,以抵禦某些類型的網絡欺騙攻擊。
你能夠按照如下三個步驟來改進節點上的安全狀態:
確保你已啓用審覈日誌,並監視它們是否存在異常或不須要的API調用,尤爲是任何受權失敗,這些日誌條目將顯示狀態消息「禁止(Forbidden)」。受權失敗可能意味着攻擊者試圖濫用被盜的憑據。託管Kubernetes供應商(包括GKE),在其雲控制檯中提供此數據,並容許你設置受權失敗警報。
遵循這些建議以得到更安全的Kubernetes集羣。請記住,即便你按照這些提示安全地配置Kubernetes集羣,你仍然須要在容器配置的其餘方面及其運行時操做中構建安全性。在提升技術堆棧的安全性時,尋找可以爲容器部署提供中心治理點的工具,併爲容器和雲原生應用程序提供持續監控和保護。
2019年KubeCon + CloudNativeCon中國論壇提案徵集(CFP)現已開放
KubeCon + CloudNativeCon 論壇讓用戶、開發人員、從業人員匯聚一堂,面對面進行交流合做。與會人員有 Kubernetes、Prometheus 及其餘雲原生計算基金會 (CNCF) 主辦項目的領導,和咱們一同探討雲原生生態系統發展方向。
在中國開源峯會上,與會者將共同合做及共享信息,瞭解最新和最有趣的開源技術,包括 Linux、容器、雲技術、網絡、微服務等;並得到如何在開源社區中導向和引領的信息。
大會日期: