Hello folks! 今天我們介紹一款開源容器平臺安全掃描工具 -Kubescape。作為第一個用于測試 Kubernetes 集群是否遵循 NSA-CISA 和 MITREATT&CK 等多個框架安全部署規(guī)范的開源工具,Kubescape 在整容器編排生態(tài)中具有舉足輕重的意義。在這篇文章中,我們將解析什么是 Kubernetes 加固以及如何基于 Kubescape 工具進行 Kubernetes 生態(tài)體系加固。
(相關資料圖)
Kubernetes加固概述
隨著云原生理念的不斷普及、生態(tài)體系的不斷完善,越來越多的企業(yè)開始邁入云化之路,無論是基于何種緣由。然而,在實施過程中,我們中的大多數(shù)人只考慮到如何將現(xiàn)有的業(yè)務系統(tǒng)平滑遷移至 Kubernetes 平臺,其中有多少人考慮過 Kubernetes 集群的安全性?
根據(jù) RedHat報道,“人為錯誤” 是 Kubernetes 安全事故的主要原因。事實上,94% 的受訪者承認他們在過去一年中經(jīng)歷過 Kubernetes 和容器環(huán)境安全事件。更糟糕的是,超過一半(55%)的受訪者在過去一年中由于安全問題最終推遲了 Kubernetes 應用程序生產(chǎn)開發(fā)。因此,如果我們盡可能想建設一個最好的系統(tǒng),至少在人為錯誤層面要有所改變。
同樣,針對基礎設施安全,我們可能會在托管環(huán)境中實施很多限制,但這還還遠遠不夠,因為如果存在任何人為錯誤或任何惡意軟件/軟件包或我們跳過的其他可能原因,大多數(shù)這些可能會受到損害初始設置時間。因為,就像我們正在遷移到 Kubernetes 一樣,黑客也可以開始針對 Kubernetes 環(huán)境進行數(shù)據(jù)竊取、拒絕服務或加密貨幣挖掘等。
因此,如果我們計劃將 Kubernetes 作為我們將來的業(yè)務支撐平臺的未來,那么我們有責任保護 Kubernetes 集群,為此我們應該實施加強 Kubernetes 安全性的技術。
那么,什么是Kubernetes 加固呢?通常我們可以這樣理解:Kubernetes 加固主要為保護 Kubernetes 系統(tǒng)而采取的一系列安全執(zhí)行措施,從而不被外界影響。一些通用性的安全建議如下:
1、盡可能掃描 Container 和 Pod 以查找漏洞或配置錯誤
2、以盡可能少的權(quán)限運行Container和 Pod
3、使用網(wǎng)絡分離來控制危害可能造成的損害程度
4、使用防火墻技術來限制不必要的網(wǎng)絡連接,并采用加密機制
5、使用強身份驗證和授權(quán)來限制用戶和管理員訪問以及限制攻擊面
6、捕獲和監(jiān)控審計日志,以便管理員可以收到潛在惡意活動的警報
7、定期審查所有 Kubernetes 設置并基于漏洞掃描來確保平臺處于安全狀態(tài)以及進行必要的安全補丁措施。
基于如上所述的通用性建議在某些場景中可能對我們的業(yè)務運行有所幫助。例如,我們都知道我們不應該以 root 用戶身份運行應用程序,但我們可以看到,許多 Kubernetes 容器服務仍以 root 用戶身份運行,并且應用程序亦是如此,即便它們不需要特權(quán)執(zhí)行。即使有警告,開發(fā)人員也會構(gòu)建以 root 身份執(zhí)行的容器應用程序。為什么?因為這很容易。同時它也很危險。
當然,即使是 Kubernetes 也有其自身的安全問題。因此,我們所能做的便是基于當前的業(yè)務現(xiàn)狀,遵守網(wǎng)絡安全技術報告中的建議,以確保應用程序的安全,并通過補丁、升級和更新等相關措施使得系統(tǒng)保持最新狀態(tài),以降低風險。
Kubescape 概述
作為一個 K8s 開源工具,Kubescape 能夠提供 Kubernetes 單一管理平臺,包括風險分析、安全合規(guī)、RBAC 可視化工具和圖像漏洞掃描。Kubescape 工具能夠掃描 K8s 集群、YAML 文件和 HELM 圖表,根據(jù)多個框架(如NSA-CISA、MITRE ATT & CK?)檢測錯誤配置、軟件漏洞和早期 RBAC(基于角色的訪問控制)違規(guī) CI/CD 管道,即時計算風險評分并顯示隨時間變化的風險趨勢。
基于其易用的 CLI 界面、靈活的輸出格式和自動掃描功能,Kubescape已成為開發(fā)人員中增長最快的 Kubernetes 工具之一,為 Kubernetes 用戶和管理員節(jié)省了寶貴的時間、精力和資源。Kubescape 與其他 DevOps 工具本地集成,包括 Jenkins、CircleCI、Github 工作流、Prometheus 和 Slack,并支持多云 K8s 部署,如 EKS、GKE 和 AKS。
總而言之,Kubescape 能夠基于非根容器、特權(quán)容器、主機網(wǎng)絡訪問、匿名請求等多方面屬性進Kubernetes 集群環(huán)境的健康掃描,檢測錯誤配置和軟件漏洞,即時計算風險評分并顯示風險隨時間變化的趨勢。掃描結(jié)果以命令行表格或 JSON 格式顯示,顯示可能被利用的不同錯誤配置區(qū)域,從而幫助工程師評估 Kubernetes 環(huán)境的安全狀況。
基于上述所述,Kubescape 功能特性主要體現(xiàn)在4 個層面:Kubernetes 配置掃描、Kubernetes 容器漏洞掃描、Kubernetes RBAC 簡化以及在 CI/CD 工作流中運行等。具體內(nèi)容可參考如下思維導圖:
Kubescape基本原理
Kubescape 基于 OPA 引擎 和 ARMO 的框架機制。它從 API Server 檢索 Kubernetes 對象,并通過運行一組由 ARMO 開發(fā)的 RegoSnippets片段規(guī)則來對所流經(jīng)的對象信息進行掃描。默認情況下,掃描輸出結(jié)果以“控制臺模型”的方式進行打印展示,但也可以以 JSON 或 Junit 格式檢索它們以進行進一步處理。
Kubescape工作原理如下所示:
基于上述架構(gòu)圖所述,OPA 作為一個通用策略引擎,可在我們所構(gòu)建的 Kubernetes 集群中實施策略編排?;?OPA ,我們可以計算出:用戶 X 是否能夠可以對資源 Z 做 Y 操作?應該允許查看哪些記錄?等。
而作為一種規(guī)則,Rego 是 OPA 開發(fā)的一種聲明性策略語言。基于此,Kubescape 從 API Server 中檢索有關 K8s 對象的信息,然后使用 OPA 對其進行掃描。
Kubescape 基于控件模型,在生態(tài)系統(tǒng)中,NSA/MITRE/ArmoBest/DevOpsBest指南被分解成小的策略集(可稱之為控制)。每個控件都有自己的一組規(guī)則,用于掃描集群或管道。
關于ARMO 的ArmoBest 框架,當發(fā)現(xiàn)最新漏洞時,ARMO 會不斷升級此框架。每當行業(yè)中發(fā)生任何最新的安全漏洞,Armo 都會嘗試盡快對其庫進行更新。
Kubescape安裝部署
關于Kubescape 工具的安裝較為簡單,Kubescape 支持在 Windows、macOS 以及Linux 等平臺上部署使用。
在部署Kubescape 工具之前,我們需要部署一個Kubernetes Cluster 并使其處于運行狀態(tài)。如下所示:
[leonli@Leon kubescape ] % kubectl get po -A -o wideNAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESkube-system coredns-64897985d-v9jcf 1/1 Running 0 2d17h 172.17.0.2 k8s-cluster ……kubernetes-dashboard dashboard-metrics-scraper-58549894f-ns2ld 1/1 Running 0 2d17h 172.17.0.11 k8s-cluster ……monitoring prometheus-k8s-0 2/2 Running 0 2d17h 172.17.0.9 k8s-cluster monitoring prometheus-operator-6dc9f66cb7-h7mrp 2/2 Running 0 2d17h 172.17.0.7 k8s-cluster traefik-v2 traefik-767667c75c-kwjn4 1/1 Running 0 2d13h 172.17.0.12 k8s-cluster
我這里以 Linux、macOS 操作系統(tǒng)為例,簡要介紹一下Kubescape安裝部署過程,具體如下。
Linux安裝 Kubescape
這里主要基于GitHub下載的 Kubescape CLI 二進制文件進行安裝,部署,當然,也可通過命令行一次性安裝,具體操作如下:
[leonli@Leon kubescape ] % wget https://github.com/kubescape/kubescape/releases/download/v2.0.176/kubescape-macos-latest
拉取到本地后,然后進行執(zhí)行即可,具體暫不在本文中贅述。
macOS安裝 Kubescape
基于macOS安裝 Kubescape 也有多種不同的方式,其簡要的安裝步驟主要分為如下 2 步:
1、添加 Kubescape GitHub 存儲庫:
[leonli@Leon kubescape ] % brew tap kubescape/tap
2、執(zhí)行Kubescape 安裝
[leonli@Leonkubescape] %brewinstallkubescape-cli[leonli@Leonkubescape]%kubescapeversionYour current version is: v2.0.176
此時,可借助 -h 命令標志來獲取有關某個命令的額外信息,如下所示:
[leonli@Leonkubescape]%kubescape-hKubescape is a tool for testing Kubernetes security posture. Docs: https://hub.armosec.io/docsUsage: kubescape [command]Examples: # Scan command kubescape scan --submit # List supported frameworks kubescape list frameworks # Download artifacts (air-gapped environment support) kubescape download artifacts # View cached configurations kubescape config viewAvailable Commands: completion Generate autocompletion script config Handle cached configurations delete Delete configurations in Kubescape SaaS version download Download control,framework,artifacts,controls-inputs,exceptions help Help about any command list List frameworks/controls will list the supported frameworks and controls scan Scan the current running cluster or yaml files submit Submit an object to the Kubescape SaaS version update Update your version version Get current versionFlags: --cache-dir string Cache directory [$KS_CACHE_DIR] (default "/Users/leonli/.kubescape") --disable-color Disable Color output for logging --enable-color Force enable Color output for logging -h, --help help for kubescape -l, --logger string Logger level. Supported: debug/info/success/warning/error/fatal [$KS_LOGGER] (default "info")Use "kubescape [command] --help" for more information about a command.
Kubescape實踐
Kubescape scan命令掃描集群中可用每個 Kubernetes 對象和集群上安裝的 Helm Charts。它具有以下標志:
1、--submit:此標志將掃描結(jié)果發(fā)送到 Armo 管理門戶
2、--enable-host-scan:此標志部署了ARMOK K8s主機傳感器 DaemonSet,該DaemonSet 從主機收集有關集群的有價值且無限的信息
3、--verbose:此標志顯示掃描的所有資源
例如,現(xiàn)在我們掃描下所部署的 K8s Cluster,操作命令如下所示:
[leonli@Leonkubescape]%kubescapescan--submit--enable-host-scan--format-versionv2--verbose[info] Kubescape scanner starting[info] Installing host scanner……[success]Donescanning.Cluster:k8s-cluster^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^################################################################################ApiVersion: Kind: ServiceAccountName: prometheus-k8sNamespace: monitoringControls: 14 (Failed: 1, Excluded: 0)+----------+--------------------------------+------------------------------------+-----------------------+| SEVERITY | CONTROL NAME | DOCS | ASSISTANT REMEDIATION |+----------+--------------------------------+------------------------------------+-----------------------+| Medium | Access container service | https://hub.armosec.io/docs/c-0053 | || | account | | |+----------+--------------------------------+------------------------------------+-----------------------+……ApiVersion: v1Kind: ServiceAccountName: defaultNamespace: traefik-v2Controls: 4 (Failed: 3, Excluded: 0)+----------+--------------------------------+---------------------------------------+------------------------------------+| SEVERITY | CONTROL NAME | DOCS | ASSISTANT REMEDIATION |+----------+--------------------------------+---------------------------------------+------------------------------------+| Medium | Automatic mapping of service | https://hub.armosec.io/docs/c-0034 | automountServiceAccountToken=false || | account | | |+ +--------------------------------+---------------------------------------+ +| | Ensure that Service Account | https://hub.armosec.io/docs/cis-5-1-6 | || | Tokens are only mounted where | | || | necessary | | |+ +--------------------------------+---------------------------------------+ +| | Ensure that default service | https://hub.armosec.io/docs/cis-5-1-5 | || | accounts are not actively used | | |+----------+--------------------------------+---------------------------------------+------------------------------------+
如上掃描命令將輸出集群中每個對象的所有安全分析。由于提供了 “--submit” 提交參數(shù)選項,結(jié)果將會推送到 Armosec 門戶。因此,可以通過登錄 Dashboard 查看詳細信息,如下所示:
基于上述所展示,在 Dashboard 頁面,我們可以看到當前 Kubernetes 集群所承載的所有資源的健康狀態(tài)。除此之外,我們還可以基于RBAC 可視化檢查誰有權(quán)訪問哪些資源以及做了什么操作等。例如,如果我們想檢查誰可以執(zhí)行到一個 Pod 中,那么我們可以基于它運行一個查詢,Kubescape 會以一種很好的可視化方式向顯示結(jié)果。我們還可以觀測哪些用戶可以訪問 Kubernetes 儀表板等。
掃描結(jié)果分析
我們以Namespace: monitoring 的prometheus-adapter 為例,針對其對象的風險分析,具體如下所示:
################################################################################ApiVersion: apps/v1Kind: DeploymentName: prometheus-adapterNamespace: monitoringControls: 35 (Failed: 12, Excluded: 0)+----------+----------------------------------------+---------------------------------------+-------------------------------------------------------------------------------------+| SEVERITY | CONTROL NAME | DOCS | ASSISTANT REMEDIATION |+----------+----------------------------------------+---------------------------------------+-------------------------------------------------------------------------------------+| High | Apply Security Context to Your | https://hub.armosec.io/docs/cis-5-7-3 | spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem=true || | Pods and Containers | | spec.template.spec.containers[0].securityContext.runAsNonRoot=true || | | | spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation=false || | | | spec.template.spec.containers[0].securityContext.capabilities.drop=NET_RAW || | | | spec.template.spec.containers[0].securityContext.seLinuxOptions=YOUR_VALUE || | | | spec.template.spec.containers[0].securityContext.seccompProfile=YOUR_VALUE |+----------+----------------------------------------+---------------------------------------+-------------------------------------------------------------------------------------+| Medium | Allow privilege escalation | https://hub.armosec.io/docs/c-0016 | spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation=false |+ +----------------------------------------+---------------------------------------+-------------------------------------------------------------------------------------+| | …… | | spec.template.spec.containers[0].securityContext.seLinuxOptions=YOUR_VALUE || | | | spec.template.spec.containers[0].securityContext.capabilities.drop[0]=YOUR_VALUE |+ +----------------------------------------+---------------------------------------+-------------------------------------------------------------------------------------+| | Non-root containers | https://hub.armosec.io/docs/c-0013 | spec.template.spec.containers[0].securityContext.runAsNonRoot=true || | | | spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation=false |+----------+----------------------------------------+---------------------------------------+-------------------------------------------------------------------------------------+| Low | Immutable container filesystem | https://hub.armosec.io/docs/c-0017 | spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem=true |+ +----------------------------------------+---------------------------------------+-------------------------------------------------------------------------------------+| | Label usage for resources | https://hub.armosec.io/docs/c-0076 | metadata.labels=YOUR_VALUE || | | | spec.template.metadata.labels=YOUR_VALUE |+----------+----------------------------------------+---------------------------------------+-------------------------------------------------------------------------------------+
我們可以看到,prometheus-adapter 掃描共涉及 35 個控件,其結(jié)果威脅高、中及低都有涉及,依據(jù)Kubescape 給出的建議進行優(yōu)先級修復。
基于Kubescape 風險分析具有以下字段:
# 威脅嚴重性:該字段衡量威脅的嚴重程度。威脅分為三個級別,即:高、中和低。
# 控件名稱:此字段說明正在分析的組件或方面的名稱。
# 文檔:此字段包含將您重定向到包含有關掃描期間檢測到的風險和威脅信息的頁面的鏈接。
# Assistant remediation:此字段包含可以對 YAML 文件或集群進行的更改以消除威脅。
被標記為“嚴重”/“高”的漏洞,通?;趯嶋H的業(yè)務場景建議需要立即修復。在修復過程中可參考文檔和協(xié)助修復列中的信息來幫助我們修復檢測到的漏洞。
常用掃描技巧
1、指定 Yaml文件掃描
基于不同的場景需求,面對較多的文件時,我們可能需要會針對性的進行文件掃描,從而減少不必要的數(shù)據(jù)輸出。使用 Kubescape 不僅僅針對容器集群的全局性掃描,而且也可以掃描單個文件,具體命令如下所示:
[leonli@Leonkubescape]%kubescapescanprometheusAdapter-deployment.yaml
2、文件導出
通常,如果使用 “--verbose” 參數(shù)標志,它可能會顯示更多的行,終端可能會清除最上面的行,或者CI 構(gòu)建日志可能看起來很難全部閱讀。為了排序,我們可以將結(jié)果輸出為 PDF 格式,這樣你就可以清楚地閱讀它或 CI/CD 過程的一部分,你可以存儲在一些公共區(qū)域,如 Artifactory Repo 以供安全審查。
可以通過添加 ”--format pdf--output filename.pdf“ 掃描命令來實現(xiàn)掃描結(jié)果存檔于 PDF 格式文件中,如下所示,它支持所有掃描命令。
[leonli@Leonkubescape]%kubescapescan--formatpdf--outputkubescape_results.pdf
基于上述命令行操作,掃描結(jié)果以 .pdf 格式文件將保存在當前集群目錄或掃描集群時當前使用的目錄中。
3、Git repository 掃描
除上述所述之外,Kubescape 甚至支持從 Git 存儲庫掃描清單,可以使用以下命令掃描存儲庫,這將克隆存儲庫并掃描清單并提交結(jié)果。
[leonli@Leonkubescape] %kubescapescanhttps://github.com/foxutech/kubernetes
針對“威脅”的可觀測性是安全分析中的一個關鍵組成部分,因為它會讓我們時刻保持警惕并告知Kubernetes集群中可能被黑客利用的所有風險資源。因此,進行實時的容器集群和 YAML 文件掃描是啟動安全審計會話的最佳方式。
因此處內(nèi)容涉及面較廣,由于時間關系,本文解析到此為止,希望對大家有用。關于Kubescape更多需要了解的信息,歡迎大家交流、關注!
Adiós!
關鍵詞: 漏洞掃描 網(wǎng)絡安全 Kubernetes
網(wǎng)站首頁 |網(wǎng)站簡介 | 關于我們 | 廣告業(yè)務 | 投稿信箱
Copyright © 2000-2020 www.ffpps.com All Rights Reserved.
中國網(wǎng)絡消費網(wǎng) 版權(quán)所有 未經(jīng)書面授權(quán) 不得復制或建立鏡像
聯(lián)系郵箱:920 891 263@qq.com
苍井そら无码av| 办公室浪荡女秘在线观看| 一个人www在线观看免费资源| 久久婷五月丁香色啪网| 国产日产欧产综合| 首长含着她的胸挺进柔软里| 色婷婷综合久久久久中文| 息与子猛烈交尾在线播放| 精品人妻无码一区二区三区不卡| 欧美黑人乱大交bd| 国产欧美va欧美va在线观看| 和朋友换娶妻a2020| 被灌满精子的五个女校花| 四虎影视免费观看高清视频| 亚洲欧美日韩一区二区| japanese熟睡侵犯| 少妇洁白无删减版178章| 麻豆国产一区二区三区四区| 国产边打电话边做对白在线 | 久久久久琪琪去精品色| 公的粗大挺进了我的密道| 99re热这里只有精品| 亚洲小鲜肉与欧美猛男的区别 | 韩国三级激情理论电影| 天天狠天天透天干天天怕∴| 国产精品av在线| 竹菊成av人无码亚洲成av无码| 伊人色综合视频一区二区三区| 在直播在线直播| 法国意大利性经典xxxxx| 亚洲国产精品久久久久久无码 | 八戒八戒视频在线www观看| 五月丁香六月狠狠爱综合| 黑人荫道bbwbbb大荫道| 99国产欧美久久久精品| 国产视频一区二区| 久久国产avjust麻豆| 亚洲国产精品久久久天堂不卡海量| 亚洲欧美强伦一区二区| 嫩模被强到高潮呻吟不断| 无人在线观看高清免费完整版 |