使用 Kubescape 漏洞掃描工具

介紹

Kubescape是一個由Armosec開發的Kubernetes開源工具,用於風險分析、安全合規、RBAC可視化以及映像漏洞掃描。此外,Kubescape能夠掃描Kubernetes清單,檢測潛在的配置問題,從而使您的部署面臨攻擊風險。它還可以掃描Helm圖表,檢測RBAC(基於角色的訪問控制)違規,執行風險評分計算並顯示隨時間變化的風險趨勢。

Kubescape主要功能:

  • 檢測Kubernetes配置錯誤並通過Armosec Cloud Portal提供補救協助。
  • 通過Armosec Cloud Portal進行風險分析和趨勢分析。
  • 包括多個安全合規框架,如ArmoBest、NSA、MITRE和Devops最佳實踐。
  • 支持異常管理,允許Kubernetes管理員標記可接受的風險水平。
  • 與Jenkins、Github工作流程、Prometheus等各種工具集成。
  • 映像掃描 – 掃描映像以查找漏洞,輕鬆查看、排序和過濾(首先要打補丁的漏洞)。
  • 通過提供易於理解的視覺圖表,簡化RBAC的複雜性,顯示集群中的RBAC配置。

Kubescape 可以以不同方式運行:

  • 通過命令行界面(CLI)。這是在腳本和各種自動化中運行的首選方式,包括 CI/CD 流水線。結果可以上傳到 Armosec 雲門戶 進行分析。
  • 作為 Kubernetes 集群內的 cron 作業。在此模式下,Kubescape 不斷監視您的 Kubernetes 集群進行更改並上傳掃描結果到 Armosec 雲門戶。此功能僅在您在 DOKS 集群中部署 Armo 集群組件 時可用。
  • 通過 Armosec 雲門戶 Web 介面。您可以觸發 配置掃描映像掃描,查看和檢查 RBAC 規則,自定義框架等。此功能僅在您在 DOKS 集群中部署 Armo 集群組件 時可用。
  • 在您的 Visual Studio Code IDE 內。這樣您可以在開發的早期階段快速發現問題。

Kubescape 使用不同的框架來檢測錯誤配置,例如:

Kubescape是免費的嗎?

是的,工具和社區版是永久免費的,除了雲端門戶後端實現和可能的其他高級功能。您還可以掃描每個叢集的最大工作節點數量存在限制(最多10個)。您的掃描報告數據在Armo雲端門戶中的保留期限為一個月。

有關更多信息,請參閱定價計劃

Kubescape是開源的嗎?

是的,工具肯定是開源的。您可以訪問Armo GitHub首頁以查找有關每個組件實現的更多詳細信息。雲端門戶後端實現不是開源的。

在本指南中,您將使用Kubescape對Kubernetes應用程序供應鏈(容器映像、Kubernetes YAML清單)執行風險分析。然後,您將學習如何採取適當的行動來補救情況。最後,您將學習如何將Kubescape集成到CI/CD管道中,以在開發的早期階段掃描漏洞。

目錄

先決條件

要完成本指南中的所有步驟,您需要:

  1. A working DOKS cluster running Kubernetes version >=1.21 that you have access to. For additional instructions on configuring a DigitalOcean Kubernetes cluster, see: How to Set Up a DigitalOcean Managed Kubernetes Cluster (DOKS).
  2. A DigitalOcean Docker Registry. A free plan is enough to complete this tutorial. Also, make sure it is integrated with your DOKS cluster as explained here.
  3. Kubectl CLI 用於與 Kubernetes 互動。請按照這些 說明 來使用 kubectldoctl 連接到您的叢集。
  4. Helm,以在 Kubernetes 叢集中安裝 Kubescape。
  5. Kubescape CLI 用於與 Kubescape 漏洞掃描器進行互動。
  6. A free Armosec Cloud Portal account used to periodically publish scan results for your Kubernetes cluster to a nice dashboard. Also, the Armosec portal web interface helps you with investigations and risk analysis.
  7. A Slack workspace you own, and a dedicated Slack app to get notified of vulnerability scan issues reported by Kubescape.

第1步 – 瞭解 Kubescape CLI

您可以通过 kubescape 命令行界面手动扫描漏洞。Kubescape CLI 设计用于在各种脚本和自动化中使用。一个实际示例是在使用各种工具实现的 CI/CD 流水线中,如 Tekton、Jenkins、GitHub Workflows 等。

Kubescape 被设计为从头开始扫描整个 Kubernetes 集群(工作负载、容器等)。如果需要,您也可以将扫描限制在特定的命名空间中。其他功能包括主机扫描(工作节点)、本地或远程存储库扫描(例如 GitHub)、检测 Kubernetes YAML 清单或 Helm 图表中的配置错误。可以通过 framework 命令选择各种框架,例如 ArmoBest、NSA、MITRE 等。

当调用 kubescape CLI 时,它将在您的本地计算机上下载(或更新)已知的漏洞数据库。然后,它将启动扫描过程并以特定格式报告问题。默认情况下,它将使用标准输出或控制台打印摘要表。Kubescape 也可以生成其他格式的报告,如 JSON、HTML、SARIF 等。

您可以选择使用 --submit 标志将结果推送到 Armosec Cloud Portal,以便稍后存储和可视化扫描结果。

注意:将扫描结果提交到 Armosec 云门户并非强制性。使用门户的重大优势在于可见性,因为它为您提供了一个漂亮的仪表板,您可以在其中检查所有扫描报告和整体风险评分。它还可以通过长期的调查和修复提示帮助您。

一些使用 Kubescape CLI 的示例:

  • 掃描整個 Kubernetes 集群並在控制台(標準輸出)生成摘要報告:

  • 僅使用特定命名空間進行掃描:

  • 從掃描中排除特定命名空間:

  • 掃描特定命名空間並將結果提交至 Armosec 雲端門戶:

  • 使用特定框架(例如 NSA)执行集群扫描:

    kubescape scan framework nsa --exclude-namespaces kube-system,kube-public
    

Kubescape 能够扫描您的 Kubernetes 集群主机(或工作节点)的操作系统漏洞。要启用此功能,您需要向 kubescape CLI 传递 --enable-host-scan 标志。启用此标志后,kubescape 在您的集群中部署 sensors。传感器使用 Kubernetes DaemonSets 创建,在您集群的每个节点上部署 Pod,以扫描已知漏洞。扫描过程完成后,传感器将从您的集群中移除(包括关联的 Kubernetes 资源)。

Kubescape CLI 为所有可用选项提供帮助页面。以下命令可用于打印主帮助页面:

kubescape --help

输出类似于:

Output
Kubescape is a tool for testing Kubernetes security posture. Docs: https://hub.armo.cloud/docs Usage: kubescape [command] Available Commands: completion Generate autocompletion script config Handle cached configurations delete Delete configurations in Kubescape SaaS version download Download controls-inputs,exceptions,control,framework,artifacts 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 version Get current version ...

每个 kubescape CLI 命令(或子命令)都有一个关联的帮助页面,可以通过 kubescape [command] --help 访问。

请访问官方 kubescape CLI 文档页面 获取更多示例。

步驟2 – 熟悉 Armosec 雲端入口

Armosec 提供了一個不錯的雲端入口,您可以在其中上傳您的 Kubescape 掃描結果並進行風險分析。這非常有用,因為您希望能夠視覺化並檢查每個掃描報告,採取適當的措施來糾正情況,然後再次運行掃描以檢查結果。通過為每個報告提供良好的視覺表示和相關的風險評分,可以幫助您在長期內進行所需的調查和迭代,以修復報告的安全問題。

您可以免費創建一個帳戶,限制為 10 個工作節點1 個月的數據保留,在大多數情況下應該是足夠的(例如,用於測試或開發需求)。您可以閱讀有關如何創建 kubescape 雲端帳戶的更多信息,請參閱 官方文檔頁面

一旦創建了帳戶,將生成一個唯一的用戶 ID,您可以使用該 ID 將掃描結果上傳到該特定帳戶。例如,您可能擁有一個特定的自動化流程,如 CI/CD 流水線,需要上傳掃描結果,因此需要相關的用戶 ID 來區分多個租戶。

對於上傳到您的Armosec雲帳戶的每個掃描報告,都會添加一條新的歷史記錄,其中包含找到的問題列表及相關的風險分數。這樣,您可以獲得隨時間變化的趨勢以及相關的風險分數演變圖。此外,在主儀表板上還生成了一個最優先的安全問題列表。

下圖說明了這些功能:

理解Kubescape風險分數值

在每次掃描中,kubescape使用內部控制來驗證您的資源是否存在潛在的安全風險。 Kubescape控制kubescape工具使用的概念,用於表示用於檢查您的叢集(或正在掃描的資源)的特定方面的測試。更進一步,框架是用於內部掃描您的特定資源的控制或測試的集合。因此,根據您使用的框架,將執行不同套件的檢查(但是,一些測試仍然有一些共同之處)。最後,根據每個測試的風險因素計算最終分數。

最終分數為介於0100%之間的正數。較低的值表示最佳分數,而較高的值則表示較差的情況。因此,如果你想保險起見,應該盡可能地尋求最低的值。在實踐中,風險分數等於或低於30%應該是一個良好的起點。

報告的安全問題的協助修復

Armosec雲端門戶提供的另一個有用功能是安全問題修復協助。這意味著,您將收到關於如何修復kubescape掃描器發現的每個安全問題的建議。這非常重要,因為它簡化了流程並對每次需要執行的迭代進行了封閉。

下圖更好地說明了這個過程:

對於每個報告的安全問題,都會顯示一個扳手工具圖標,您可以點擊該圖標並獲得修復協助:

接下來,將打開一個新窗口,提供每個受影響的Kubernetes對象的詳細信息,以綠色突出顯示:

您可以點擊每個控制,如C-0018C-0030C-0086等,並調查突出顯示的問題。您將獲得有關如何修復每個安全問題的建議。剩下的就是跟隨提示並修復每個安全問題。

從 Web UI 觸發集群掃描

Armo 云門戶提供了從 Web 介面觸發集群掃描的可能性,如果 Armo 云組件 Helm 圖表部署在您的 DOKS 集群中(在下一步中討論)。通過在門戶中單擊一個按鈕,可以觸發配置和映像掃描。為了使此功能正常工作,您需要等待 Armo 云組件在後台掃描您的集群並上傳結果。

觸發配置掃描是通過導航到配置掃描頁面並點擊“掃描”按鈕完成的。下面的圖片顯示了如何完成此任務:

如果需要,您也可以通過單擊“計劃”按鈕來設置或修改自動掃描的當前計劃,在單擊“掃描”按鈕後出現的彈出窗口中進行。使用同一窗口,您可以選擇要用於掃描的控制框架。下面的圖片顯示了如何完成這些任務:

步驟 3 – 配置 Kubescape 自動掃描 DOKS

Kubescape 可以配置為在特定時間間隔內自動掃描整個 Kubernetes 集群,或每次部署新應用程序映像時進行掃描。您需要使用 Helm 在 Kubernetes 集群中部署 Armo 集群組件 以實現此功能。同時還需要一個 Armosec 云門戶 帳戶來上傳和檢查結果。

Armo Helm 圖表 安裝了觸發整個 Kubernetes 集群和容器映像漏洞掃描的 cron 任務。每個 cron 任務的間隔可以在 Helm 值文件 中配置。

在 DOKS 上配置 Armo 集群組件

使用 Helm 在您的 Kubernetes 集群中部署 kubescape 的步驟:

  1. 添加 Helm 存儲庫並列出可用的 圖表
helm repo add armo https://armosec.github.io/armo-helm/
helm repo update armo
helm search repo armo

輸出類似於以下內容:

Output
NAME CHART VERSION APP VERSION DESCRIPTION armo/armo-cluster-components 1.7.15 v1.7.15 ARMO Vulnerability Scanning

注意:
感興趣的圖表是 armo/armo-cluster-components,它將在您的 Kubernetes 集群中安裝 Armo 組件。請訪問 armo-helm 存儲庫頁面,以獲取有關此圖表的更多詳細信息。

  1. 使用kubescape CLI提取您的Armo帳戶使用者ID(在下一步中需要):
kubescape config view

輸出類似於:

{
"accountID": "c952b81f-77d5-4afb-80cc-59b59ec2sdfr"
}

注意:
如果您從未使用kubescape CLI將掃描結果提交到Armosec雲端入口網站,則上述命令將無法運行。在這種情況下,您需要登錄到入口網站並從那裡獲取帳戶ID,如此處所述這裡

  1. 使用Helm安裝Armo Kubescape集群組件 – 也會創建專用的armo-system命名空間(請確保相應地替換<>佔位符):
ARMO_KUBESCAPE_CHART_VERSION="1.7.15"
helm install armo armo/armo-cluster-components \
--version "$ARMO_KUBESCAPE_CHART_VERSION" \
--namespace armo-system \
--create-namespace \
--set clusterName="$(kubectl config current-context)" \
--set accountGuid=<YOUR_ARMO_ACCOUNT_ID>

–create-namespace \

注意:
使用特定版本的armo-cluster-components Helm圖表。在這種情況下,選擇了1.7.15版本,對應於Armo集群組件的1.7.15版本(參見Step 1.的輸出)。一般來說,鎖定特定版本是一種良好的做法。這有助於獲得可預測的結果,並通過Git進行版本控制。

kubectl get deployments -n armo-system

現在檢查所有Armo集群組件部署是否正常運行:

Output
NAME READY UP-TO-DATE AVAILABLE AGE armo-collector 1/1 1 1 5d6h armo-kubescape 1/1 1 1 5d6h armo-notification-service 1/1 1 1 5d6h armo-vuln-scan 1/1 1 1 5d6h armo-web-socket 1/1 1 1 5d6h

輸出類似於:

所有Armo集群組件應該都正常運行。

  • 最後,幾分鐘後,您應該能夠在雲端入口網站中看到您的集群掃描報告可用,例如:
  • 配置掃描結果:
  • 映像掃描結果:

RBAC 可視化器結果:

如需更多資訊,請參閱官方文件中的集群漏洞掃描頁面。

調整 Armo 集群元件圖表的 Helm 值

您可以通過編輯本指南中提供的Helm 值文件來更改 Armo 集群元件圖表的行為。

  • 可以更改以下設置:
  • 通過armoScanSchedulerarmoKubescapeScanScheduler值來更改掃描間隔。

通過triggerNewImageScan值來觸發新的映像掃描。

可根據您的需求自定義的完整值列表可在 官方 Helm 圖表值 文件中找到。

ARMO_KUBESCAPE_CHART_VERSION="1.7.15"
helm upgrade armo armo/armo-cluster-components \
  --version "$ARMO_KUBESCAPE_CHART_VERSION" \
  --namespace armo-system \
  --set clusterName="$(kubectl config current-context)" \
  --set accountGuid=<YOUR_ARMO_ACCOUNT_ID> \
  -f <YOUR_CUSTOM_HELM_VALUES_FILE_HERE>

要應用更改,您需要通過以下方式升級當前的 Helm 圖表版本(請確保相應地替換 <> 占位符):

步驟 4 – 使用 Kubescape 在 CI/CD 流水線中掃描 Kubernetes 配置漏洞

將安全合規性掃描工具嵌入 CI/CD 流水線中,可以使您受益並避免在生產環境中遇到不愉快的情況。

一切都始於基礎層,軟體開發的起點。一般來說,您會希望為每個階段使用專用環境。因此,在開發的早期階段,當應用程式代碼經常變更時,您應該使用專用的開發環境(通常稱為下游環境)。然後,應用程式在 QA 環境中變得越來越精緻,在那裡 QA 團隊進行手動和/或自動化測試。接下來,如果應用程式獲得了 QA 團隊的批准,它就會晉升到上游環境,如暫存環境,最後進入生產環境。在這個過程中,當應用程式從一個環境晉升到另一個環境時,將運行一個專用的流水線,不斷掃描應用程式藝術品並計算安全風險分數。如果分數不符合特定閾值,流水線立即失敗,並且應用程式藝術品晉升到生產環境的過程在早期階段就停止了。

因此,安全掃描工具(例如 kubescape)充當了閘門,從開發的早期階段就阻止了您生產環境中不需要的藝術品。同樣地,上游環境的流水線使用 kubescape 來允許或禁止應用程式藝術品進入最終的生產階段。

GitHub Actions CI/CD 工作流實現

在這一步,您將學習如何通過GitHub工作流程創建和測試帶有集成漏洞掃描的示例CI/CD流水線。要了解如何使用DigitalOcean Kubernetes與Github Actions的基本知識,請參考這個教程

在下面的部分提供的流水線將從DigitalOcean kubernetes-sample-apps存儲庫中構建並部署game-2048-example應用程序。

  1. 在高層次概述中,示例CI/CD工作流程Kubernetes-sample-apps存儲庫中由以下階段組成:
  2. 應用程序構建和測試階段-構建主要應用程序組件並運行自動化測試。
  3. Kubescape掃描階段-掃描與應用程序相關的Kubernetes YAML清單中的已知漏洞。它充當閘門,最終流水線狀態(通過/失敗)取決於此步驟。在失敗的情況下,還會發送Slack通知。
  4. 應用程序映像構建和推送階段-使用最新的git提交SHA構建和標記應用程序映像。然後,將映像推送到DOCR。

應用程序部署階段-將應用程序部署到Kubernetes(DOKS)。

下面的圖示說明了流水線中的每個作業以及與操作相關的步驟(僅顯示相關配置):

  • 注意:
  • 在基于 kustomize 的项目中,最好通过 kubectl kustomize </path/to/kustomization_/file> 命令来呈现最终的清单,以便捕获和扫描所有内容(包括远程资源)。另一方面,很难确定需要修补哪个 Kubernetes 资源。这是因为生成的清单文件由要应用的所有资源组成。这就是 Kustomize 的工作原理 – 它从每个覆盖中收集所有配置片段,并将它们应用于基础构建最终的组合。

您还可以告诉 Kubescape 扫描您保存 kustomize 配置的整个文件夹(当前指南依赖于此方法)。这样,更容易确定存储库中需要修复的资源。由 kustomize 生成的远程资源需要在上游进行修复。此外,通过 kustomize 生成的 Kubernetes 密钥和 ConfigMaps 不会被捕获。

如果某个特定的安全合规级别未达到,如何使流水线失败?

Kubescape CLI 提供了一个名为 --fail-threshold 的标志来实现此目的。此标志与每次扫描后计算的总体风险评分相关联。您可以根据阈值值使流水线失败或通过,并在不满足条件时停止应用程序部署。

下图说明了本指南中使用的示例 CI/CD 流水线的流程:

  1. 請按照以下步驟來創建和測試kubescape CI/CD GitHub工作流程,該工作流程位於kubernetes-sample-apps GitHub存儲庫中:
  2. 複製kubernetes-sample-apps GitHub存儲庫。
  3. SLACK_WEBHOOK_URL – 包含您的 Slack 传入 Webhook URL,用于 kubescape 扫描通知。
  4. 转到您 fork 的存储库的 操作 选项卡,然后选择 Game 2048 Kubescape CI/CD 示例 工作流程:

A new entry should appear in below list after clicking the Run Workflow green button. Select the running workflow to observe pipeline progress:

单击 运行工作流程 按钮,保留默认值:

当运行 kubescape-nsa-security-check 作业时,管道将失败并停止。这是预期的,因为总体风险评分的默认阈值为 30,低于期望值。您还应该收到有关工作流程运行的 Slack 通知详细信息:

在下一步中,您將學習如何調查 kubescape 掃描報告以修復問題,降低風險得分並通過流水線。

第5步 – 調查 Kubescape 掃描結果並修復報告的問題

每當未達到風險得分值閾值時,game-2048 GitHub 工作流程將失敗,並發送 Slack 通知以提供更多詳細信息。

game-2048 工作流程執行一項安全檢查(不支援本地圖像掃描) – Kubernetes 配置文件錯誤配置檢查。該目的使用 kubescape-nsa-security-check 任務。正在使用的等效 kubescape 命令為 – kubescape scan framework nsa /path/to/project/kubernetes/manifests

- name: Scan Kubernetes YAML files
  run: |
    kubescape scan framework nsa kustomize/ \
      -t ${{ github.event.inputs.kubescape_fail_threshold || env.KUBESCAPE_FAIL_THRESHOLD }} \
      --submit --account=${{ secrets.ARMOSEC_PORTAL_ACCOUNT_ID }}
  working-directory: ${{ env.PROJECT_DIR }}

下面的片段顯示了 kubescape-nsa-security-check 任務的主邏輯:

–submit –account=${{ secrets.ARMOSEC_PORTAL_ACCOUNT_ID }}

以上配置告诉 kubescape CLI 使用 NSA 框架开始一个新的扫描,扫描位于 kustomize/ 目录中的所有 Kubernetes 清单。它还通过 -t 标志指定了要使用的阈值级别,并将最终结果提交到 Armo 云门户(与 –acount 结合使用的 –submit 标志)。

因此,降低风险分数值并通过工作流程的传递包括调查并修复由 kubescape-nsa-security-check 作业报告的问题。接下来,您将学习如何解决此作业报告的安全问题。

A new browser window opens showing in detail each control and description. You will also be presented with required actions to remediate the issue (highlighted in green color):

要检查状态报告,您可以从接收到的 Slack 通知中点击 kubescape 扫描结果链接。然后,在 Armo 云门户的左侧菜单中点击 REPOSITORIES SCAN 扫描按钮。现在,从列表中点击 kubernetes-sample-apps 条目:

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: game-2048
spec:
  replicas: 1
  selector:
    matchLabels:
      app: game-2048
  strategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: game-2048
    spec:
      containers:
        - name: backend
          接下来,点击 deployment.yaml 条目,然后点击右上部的扳手工具:
          image: registry.digitalocean.com/sample-apps/2048-game:latest
          ports:
            - name: http
              containerPort: 8080
          resources:
            requests:
              cpu: 100m
              memory: 50Mi
            limits:
              cpu: 200m
              memory: 100Mi
          securityContext:
            readOnlyRootFilesystem: true
            runAsNonRoot: true
            allowPrivilegeEscalation: false
            capabilities:
              drop:
                - all

在收集了扫描报告的所有信息后,您可以继续编辑您存储库中的 deployment.yaml 文件(位于 game-2048-example/kustomize/resources 子文件夹中)。修复已经就位,您只需要取消文件中的最后几行的注释。最终的 deployment.yaml 文件应如下所示:

# 用您的 Docker 注册表信息替换 `<>` 占位符

  • 注意:
    在這個例子中,省略了C-0055的建議,以保持簡單。你可以在這裡閱讀更多有關 Kubernetes 安全計算模式的資訊
  • 有哪些改變?以下安全修補已被應用:
  • readOnlyRootFilesystem – 在唯讀模式下運行容器映像(無法通過kubectl exec在容器中更改文件)。
  • runAsNonRoot – 根據 game-2048 專案Dockerfile 中的 USER 指示運行非 root 用戶。

allowPrivilegeEscalation – 將allowPrivilegeEscalation設置為false,確保容器的任何子進程都無法獲得比其父進程更多的權限。

capabilities.drop – 為了使容器更加安全,您應該為容器提供運行所需的最少權限。在實踐中,默認情況下放棄所有權限,然後逐步添加所需的能力。您可以閱讀由 Armosec 撰寫的這篇文章,了解更多有關容器安全性的資訊。

A few final checks can be performed as well on the Kubernetes side to verify if the reported issues were fixed:

  1. 最後,提交更改到deployment.yaml文件並推送到主分支。手動觸發工作流程後,這次應該成功完成:
  2. 通過編寫應用程式index.html文件來檢查game-2048部署是否具有只讀(不可變)文件系統:

檢查容器是否以非root用戶運行(應該打印一個不為零的整數 – 例如,1000):

kubectl exec -it deployment/game-2048 -n game-2048 -- id -u

檢查容器是否以非root用戶運行(應該打印一個不為零的整數 – 例如,1000):

如果所有檢查都通過,則您成功應用了所需的安全建議。

處理異常情況

有些情況下,您不希望最終風險評分受到您的團隊認為可以安全忽略的某些報告問題的影響。 Kubescape提供了一個內置功能來管理異常情況,並克服這種情況。

A more efficient approach is where you integrate vulnerability scan tools directly in your favorite IDE (or Integrated Development Environment). This way, you can detect and fix security issues ahead of time in the software development cycle.

您可以在此處閱讀更多有關此功能的信息這裡

  1. Kubescape for IDEs
  2. Kubescape 通過以下擴展支持 IDE 整合:

Visual Studio Code 擴展

Kubernetes Lens 擴展

以上的插件將幫助您在開發的早期階段檢測並修復問題,從而消除生產系統中的挫折、成本和安全缺陷。同時,它也有助於減少迭代,長期來看減少人力成本。舉例來說,對於 CI/CD 自動化報告的每個安全問題,您需要返回並修復代碼中的問題,提交更改,等待 CI/CD 自動化再次運行,如果失敗則重複此流程。

您可以通過訪問 Kubescape 文檔 頁面,然後在 整合 部分中進行更多了解。

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

步驟 6 – 自動觸發 Kubescape CI/CD 工作流程

您可以通過取消註釋 game-2048-kubescape.yaml 文件頂部的以下行來設置工作流程在每次對主分支的提交或 PR 上自動觸發:

編輯完檔案後,將更改提交到您的主分支,然後您就可以準備好了。

第7步 – 啟用Slack通知以進行持續監控

到目前為止,您已經實施的漏洞掃描自動化是一個很好的起點,但並不完美。為什麼呢?

目前方法的一個問題是,您永遠不知道已在您的環境中部署的資產上報告了新問題的時間。換句話說,您評估了安全風險並採取了措施來解決在某一特定時間點上的問題 – 當您的CI/CD自動化執行時。

但是如果在此期間報告了新問題,而您的應用程序再次容易受到攻擊呢?

Kubescape的監控功能可以幫助您解決不斷披露的新漏洞。當與Slack集成結合時,您可以立即採取行動來解決新公佈的可能影響您應用程序的問題。

  1. Armo雲端入口支援Slack集成,可在每次集群掃描後發送實時警報。此功能需要在您的DOKS集群中安裝Armo雲端組件Helm圖表,如第3步 – 配置DOKS的Kubescape自動掃描中所述。
  2. 通過啟用 Slack 提醒,您將收到有關在您的 DOKS 叢集中檢測到的重要漏洞的通知,例如:
  3. 工作節點漏洞(操作系統級別)。

容器映像漏洞。

  • 各種資源的 Kubernetes 配置錯誤,例如部署、Pod 等。
  • 首先,您需要創建一個 Slack 應用程式。然後,您需要在 OAuth & Permissions 頁面中為您的 Slack 機器人授予以下權限:
  • channels:join – 加入工作區中的公共頻道。
  • channels:read – 查看工作區中公共頻道的基本信息。
  • groups:read – 查看您的 Slack 應用程式已添加到的私人頻道的基本信息。
  • chat:write – 以 @<您的 Slack 應用程式名稱> 的身份發送消息。

im:read – 查看您的 Slack 應用程式已添加到的直接消息的基本信息。

mpim:read – 查看您的 Slack 應用程式已添加到的群組直接消息的基本信息。

接下來,轉到您的 Armo 雲閘戶口的 設置 頁面(右上方的齒輪圖標)。從那裡,選擇 整合 頁面,然後選擇 Slack

現在,將你的 Slack Bot OAuth token(可以在你的 Slack 應用程式頁面的 OAuth & Permissions 頁面找到)粘貼到 插入 Token 輸入欄中。最後,選擇如何接收通知以及通知應該發送到的 Slack 頻道。點擊 設置通知 按鈕,然後就完成了。下面的圖片說明了詳情:

在配置了 Slack 整合之後,你應該會在指定的頻道收到每次集群掃描後的定期通知:

如果你收到類似上面的通知,那麼你成功地配置了 Armosec Kubescape Slack 整合。

結論

在本指南中,你學會了如何使用最受歡迎的 Kubernetes 漏洞掃描工具之一 – Kubescape。你還學會了如何使用 Kubescape CLI 執行集群和存儲庫掃描(YAML 清單)。然後,你學會了如何將漏洞掃描工具集成到使用 GitHub 工作流實現的傳統 CI/CD 流水線中。

最後,你通過一個實際示例 – 來自 game-2048 應用程式的 kubernetes-sample-apps 存儲庫,學會了如何調查漏洞掃描報告,應用修復措施以解決問題,並將風險得分降到最低。

Source:
https://www.digitalocean.com/community/developer-center/using-the-kubescape-vulnerability-scan-tool