新聞中心
如何使用 Kubescape 保護 Kubernetes
作者:科技狠活與軟件技術 2022-12-06 17:32:18
云計算
云原生 將對云原生環(huán)境中的漸進式交付選項進行分析,以探索如何在 Kubernetes 環(huán)境中添加此增強功能。

Kubernetes 功能強大,但也很復雜。很容易讓集群容易受到攻擊。第一道防線是自動安全檢查。
Kubernetes 不斷增長。根據最近的一項調查,它在開發(fā)人員中的采用率在 2021 年增長了驚人的 67%。企業(yè)正在遷移到 Kubernetes 以享受云原生應用程序的靈活性和可擴展性。
Kubernetes 對企業(yè)的價值毋庸置疑,但它是有代價的:由于其復雜性,很容易使集群容易受到攻擊。企業(yè)知道這一點;在其Kubernetes 安全狀況報告中,紅帽表示,59% 的受訪者認為容器安全是一種威脅。
在持續(xù)集成和交付 (CI/CD) 中安裝自動化安全檢查,這是所有代碼在進入生產之前必須通過的唯一地方,是開始防御威脅的最佳方式,而 Kubescape 可以幫助您做到這一點。
在本文中,我們將學習如何在我們的 CI/CD 管道中運行Kubescape以在威脅部署之前檢測它們。
進入 Kubescape
Kubescape 是 Kubernetes 的開源安全檢查工具。該工具由ARMO開發(fā),可以掃描 Kubernetes 集群、檢查容器并檢測不安全的部署。
即使擁有多年運行 Kubernetes 的經驗,企業(yè)仍在學習保護集群的來龍去脈。2019 年,一個加密貨幣礦工以某種方式進入了 JW Player 的集群,并開始使用他們的資源進行挖礦。開發(fā)人員發(fā)現原因是權限提升的容器。在這種情況下,如果 JW Player 的團隊在他們的部署過程中使用了 Kubescape,那么在部署之前就會檢測到提升的容器權限。
Kubescape 基于 NSA、CISA 和 Microsoft 的安全指南實施了 70 多種控制。這些控件分為四類,稱為框架:
- NSA:遵循NSA Kubernetes 強化指南。這是一個專注于應用程序安全性的自上而下的框架。
- MITRE:遵循 Microsoft 的MITRE Framework。MITRE 主要關注保護 Kubernetes 基礎設施。
- ArmoBest:ARMO 框架由 Kubescape 背后的同一批人維護。該框架試圖覆蓋 MITRE 和 NSA 框架之間的盲點。
- DevOpsBest:一個最小的框架,涵蓋了基礎設施和應用程序安全性的最基本點。
默認情況下,Kubescape 將運行所有檢查并打印出每個框架的風險級別。
確保 Kubernetes 安全的完整性控制
我們可以從兩個角度處理 Kubernetes 安全性。在最基本的層面上,有一個集群必須適當地加固以抵御攻擊——這對于自我管理和本地安裝尤為重要。在應用程序級別,我們必須檢查部署是否遵循最佳實踐,并且不要留下可利用的漏洞。
使用 Kubescape 保護 Kubernetes
我們將看到的第一組控制涉及保護部署清單,Kubernetes 使用它來描述一組資源的所需狀態(tài)。通過分析這個清單,Kubescape 可以檢測到以下問題:
- 在容器內運行的不安全 SSH 服務。
- 容器啟動命令中的sudo-commands。
- 以 root 身份運行容器或使用過多的功能
- 在沒有父 ReplicaSet 的情況下運行 Pod。
- Pod 占用所有可用的 CPU 和內存。
您可以在ArmoSec 文檔中查看所有控件和可用框架。每個控制都與從低到嚴重的風險級別相關聯。在掃描過程結束時,Kubescape 會計算從 0%(非常安全)到 100%(不安全)的風險評分。
掃描 Kubernetes 清單
讓我們看看 Kubescape 的實際應用。對于本教程的這一部分,任何有效的 Kubernetes 清單都可以。作為示例,我將使用此存儲庫中的部署清單:
- 信號量-demo-nodejs-k8s
掃描 Kubernetes 清單文件的基本命令如下所示:
$ kubescape scan deployment.yml
Controls: 31 (Failed: 14, Excluded: 0, Skipped: 0)
+----------+----------------------------------------+------------------+--------------------+---------------+--------------+
| SEVERITY | CONTROL NAME | FAILED RESOURCES | EXCLUDED RESOURCES | ALL RESOURCES | % RISK-SCORE |
+----------+----------------------------------------+------------------+--------------------+---------------+--------------+
| High | Resources CPU limit and request | 1 | 0 | 1 | 100% |
| High | Resources memory limit and request | 1 | 0 | 1 | 100% |
| Medium | Allow privilege escalation | 1 | 0 | 1 | 100% |
| Medium | CVE-2022-0492-cgroups-container-escape | 1 | 0 | 1 | 100% |
| Medium | Configured liveness probe | 1 | 0 | 1 | 100% |
| Medium | Images from allowed registry | 1 | 0 | 1 | 100% |
| Medium | Ingress and Egress blocked | 1 | 0 | 1 | 100% |
| Medium | Linux hardening | 1 | 0 | 1 | 100% |
| Medium | Non-root containers | 1 | 0 | 1 | 100% |
| Low | Configured readiness probe | 1 | 0 | 1 | 100% |
| Low | Immutable container filesystem | 1 | 0 | 1 | 100% |
| Low | K8s common labels usage | 1 | 0 | 1 | 100% |
| Low | Label usage for resources | 1 | 0 | 1 | 100% |
| Low | Resource policies | 1 | 0 | 1 | 100% |
+----------+----------------------------------------+------------------+--------------------+---------------+--------------+
| | RESOURCE SUMMARY | 1 | 0 | 1 | 40.27% |
+----------+----------------------------------------+------------------+--------------------+---------------+--------------+
FRAMEWORKS: MITRE (risk: 0.00), AllControls (risk: 40.27), ArmoBest (risk: 36.73), DevOpsBest (risk: 63.16), NSA (risk: 36.99)在不選擇特定框架的情況下,Kubescape 評估所有控件。您可以通過添加framework. 例如:
$ kubescape scan framework DevOpsBest deployment.yml?
您還可以通過列出其ID 代碼來運行單個控件。
$ kubescape scan control C-0076,C-0004 deployment.yml?
如您所見,Kubescape 輸出一個包含控件、它們的狀態(tài)和最終風險評分的表格。
健全性檢查 Kubernetes 集群
由于 Kubernetes 的默認配置導致了大約 47% 的安全問題,因此大多數自我管理的集群都存在風險。Kubescape 可以檢查正在運行的集群配置,檢測潛在問題并提供修復建議。以下是該工具可以執(zhí)行的一些集群級別檢查:
- 識別不安全的工作節(jié)點。
- 檢查暴露的和不安全的接口,例如管理儀表板。
- 檢測集群是否受到任何已知 CVE 的影響。
- 檢測缺失的網絡策略。
- 查找在沒有 TLS 身份驗證的情況下運行的 Kubelet 客戶端。
要掃描集群,請使用以下命令:
$ kubescape scan
Controls: 57 (Failed: 35, Excluded: 0, Skipped: 5)
+----------+---------------------------------------------------------------------+------------------+--------------------+---------------+--------------+
| SEVERITY | CONTROL NAME | FAILED RESOURCES | EXCLUDED RESOURCES | ALL RESOURCES | % RISK-SCORE |
+----------+---------------------------------------------------------------------+------------------+--------------------+---------------+--------------+
| Critical | Data Destruction | 17 | 0 | 67 | 25% |
| Critical | Disable anonymous access to Kubelet service | 0 | 0 | 0 | skipped* |
| Critical | Enforce Kubelet client TLS authentication | 0 | 0 | 0 | skipped* |
| High | Cluster-admin binding | 1 | 0 | 67 | 1% |
| High | List Kubernetes secrets | 10 | 0 | 67 | 15% |
| High | Privileged container | 1 | 0 | 6 | 14% |
| High | Resources CPU limit and request | 6 | 0 | 6 | 100% |
| High | Resources memory limit and request | 5 | 0 | 6 | 69% |
| High | Workloads with Critical vulnerabilities exposed to external traffic | 0 | 0 | 0| skipped** |
| High | Workloads with RCE vulnerabilities exposed to external traffic | 0 | 0 | 0 | skipped** |
| High | Workloads with excessive amount of vulnerabilities | 0 | 0 | 0 | skipped** |
| High | Writable hostPath mount | 3 | 0 | 6 | 42% |
| Medium | Access container service account | 2 | 0 | 2 | 100% |
| Medium | Allow privilege escalation | 5 | 0 | 6 | 69% |
| Medium | Allowed hostPath | 3 | 0 | 6 | 42% |
| Medium | Automatic mapping of service account | 4 | 0 | 8 | 57% |
| Medium | CVE-2022-0492-cgroups-container-escape | 1 | 0 | 6 | 31% |
| Medium | Cluster internal networking | 5 | 0 | 5 | 100% |
| Medium | Configured liveness probe | 1 | 0 | 6 | 14% |
| Medium | CoreDNS poisoning | 3 | 0 | 67 | 4% |
| Medium | Delete Kubernetes events | 3 | 0 | 67 | 4% |
| Medium | Exec into container | 1 | 0 | 67 | 1% |
| Medium | HostNetwork access | 5 | 0 | 6 | 69% |
| Medium | HostPath mount | 4 | 0 | 6 | 56% |
| Medium | Ingress and Egress blocked | 6 | 0 | 6 | 100% |
| Medium | Linux hardening | 1 | 0 | 6 | 14% |
| Medium | Mount service principal | 4 | 0 | 6 | 56% |
| Medium | Namespace without service accounts | 4 | 0 | 7 | 57% |
| Medium | Network mapping | 5 | 0 | 5 | 100% |
| Medium | No impersonation | 1 | 0 | 67 | 1% |
| Medium | Non-root containers | 6 | 0 | 6 | 100% |
| Medium | Portforwarding privileges | 1 | 0 | 67 | 1% |
| Low | Audit logs enabled | 1 | 0 | 1 | 100% |
| Low | Configured readiness probe | 4 | 0 | 6 | 56% |
| Low | Immutable container filesystem | 5 | 0 | 6 | 69% |
| Low | K8s common labels usage | 6 | 0 | 6 | 100% |
| Low | Label usage for resources | 2 | 0 | 6 | 44% |
| Low | PSP enabled | 1 | 0 | 1 | 100% |
| Low | Resource policies | 6 | 0 | 6 | 100% |
| Low | Secret/ETCD encryption enabled | 1 | 0 | 1 | 100% |
+----------+---------------------------------------------------------------------+------------------+--------------------+---------------+--------------+
| | RESOURCE SUMMARY | 37 | 0 | 90 | 16.62% |
+----------+---------------------------------------------------------------------+------------------+--------------------+---------------+--------------+
FRAMEWORKS: MITRE (risk: 12.58), AllControls (risk: 16.62), ArmoBest (risk: 13.44), DevOpsBest (risk: 40.27), NSA (risk: 17.92)
添加--enable-host-scan以在每個節(jié)點上安裝診斷容器。這給出了更詳細的結果,如下所示:
$ kubescape scan framework DevOpsBest --enable-host-scan
Controls: 11 (Failed: 6, Excluded: 0, Skipped: 0)
+----------+------------------------------------+------------------+--------------------+---------------+--<
新聞名稱:如何使用Kubescape保護Kubernetes
URL網址:http://m.fisionsoft.com.cn/article/cogccej.html


咨詢
建站咨詢
