使用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可以以不同的方式运行:

Kubescape使用不同的框架来检测配置错误,例如:

Kubescape是免费的吗?

是的,工具和社区版永久免费,除了云门户后端实现和可能的其他高级功能。每个集群的最大工作节点扫描限制为十个。您在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用于Kubernetes交互的CLI。按照这些说明连接到您的集群,使用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 集群并在控制台(标准输出)生成摘要报告:

    kubescape scan
    
  • 仅使用特定命名空间进行扫描:

    kubescape scan --include-namespaces microservices
    
  • 排除特定命名空间的扫描:

    kubescape scan --exclude-namespaces kube-system,kube-public
    
  • 扫描特定命名空间并将结果提交至 Armosec 云门户:

    kubescape scan --include-namespaces default --submit
    
  • 使用特定框架(例如 NSA)执行集群扫描:

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

Kubescape 能够扫描您的 Kubernetes 集群主机(或工作节点)的操作系统漏洞。要启用此功能,您需要将 --enable-host-scan 标志传递给 kubescape CLI。启用此标志后,kubescape 会在您的集群中部署 传感器。传感器是使用 Kubernetes DaemonSet 创建的,它在您集群的每个节点上部署 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界面触发集群扫描

Armo云门户提供了通过Web界面触发集群扫描的可能性,前提是Armo云组件Helm图已部署在您的DOKS集群中(在下一步中讨论)。可以通过在门户中单击一个按钮来触发配置和镜像扫描。为了使此功能正常工作,您需要等待Armo云组件在后台完成对您的集群的扫描,并上传结果。

触发配置扫描是通过导航到配置扫描页面并单击扫描按钮来完成的。以下图片显示了如何完成此任务:

如果需要,您还可以通过单击弹出窗口中的计划按钮来设置或修改自动扫描的当前计划。使用同一窗口,您可以选择用于扫描的控制框架。以下图片显示了如何完成这些任务:

步骤3 – 配置Kubescape自动扫描DOKS

Kubescape 可以配置为在特定时间间隔内自动扫描整个 Kubernetes 集群,或者每次部署新应用程序镜像时进行扫描。您需要使用 Helm 在 Kubernetes 集群中部署 Armo 集群组件 以实现此功能。还需要一个 Armosec 云门户 帐户来上传和检查结果。

Armo Helm 图表 安装 cron 作业,触发对整个 Kubernetes 集群和容器镜像的漏洞扫描。每个 cron 作业的间隔可以在 Helm values 文件 中配置。

为 DOKS 提供 Armo 集群组件

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

  1. 添加 Helm 仓库并列出可用的 charts
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,如此处所述here

  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 团队的批准,它将被提升到上游环境,例如 staging,最终进入生产环境。在这个过程中,当应用程序从一个环境提升到另一个环境时,会运行一个专用的流水线,该流水线不断扫描应用程序构件并计算安全风险分数。如果分数未达到特定阈值,流水线将立即失败,并且应用程序构件在早期阶段停止提升到生产环境。

因此,安全扫描工具(例如 kubescape)充当门卫,阻止早期开发阶段的不需要的构件进入您的生产环境。同样地,上游环境的流水线使用 kubescape 来允许或禁止应用程序构件进入最终的生产阶段。

GitHub Actions CI/CD 工作流程实施

在这一步中,您将学习如何通过GitHub工作流创建和测试一个带有集成漏洞扫描的样本CI/CD管道。要了解如何使用GitHub Actions与DigitalOcean Kubernetes,请参考这个教程

以下部分提供的管道构建并部署了来自DigitalOcean kubernetes-sample-apps仓库的game-2048-example应用程序。

  1. 在高层次概述中,Kubernetes-sample-apps仓库中提供的示例CI/CD工作流由以下阶段组成:
  2. 应用程序构建和测试阶段 – 构建主应用程序构件并运行自动化测试。
  3. Kubescape扫描阶段 – 在与应用程序相关的Kubernetes YAML清单中扫描已知漏洞。它充当了一个门槛,最终管道状态(通过/失败)取决于此步骤。在失败的情况下,还会发送Slack通知。
  4. 应用程序镜像构建和推送阶段 – 使用最新的git提交SHA构建并标记应用程序镜像。然后,将镜像推送到DOCR。

应用程序部署阶段 – 将应用程序部署到Kubernetes(DOKS)。

下面的图表说明了管道中的每个作业以及与操作相关的步骤(仅显示相关配置):

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

您还可以告诉 Kubescape 扫描您保存 customize 配置的整个文件夹(当前指南依赖于此方法)。这样,更容易确定存储库中需要修复的资源。通过 kustomize 使用的远程资源需要在上游进行修复。此外,通过 kustomize 生成的 Kubernetes secrets 和 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 incoming webhook URL,用于 kubescape 扫描通知。
  4. 转到您分叉的存储库的Actions选项卡,然后选择Game 2048 Kubescape CI/CD Example工作流程:

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

点击Run Workflow按钮,并保留默认值:

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 云门户(与 -submit 标志结合使用的 –account 标志)

。因此,降低风险评分并通过工作流程的关键是调查和修复 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 – 使用由USER指令在game-2048项目的Dockerfile中定义的非根用户运行

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. 用于IDE的Kubescape
  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集成,可在每次集群扫描后发送实时警报。此功能需要将Armo云组件Helm图表安装在您的DOKS集群中,如第3步 – 配置DOKS的Kubescape自动扫描中所述。
  2. 通过启用 Slack 警报,您将收到有关在您的 DOKS 集群中检测到的重要漏洞的通知,例如:
  3. Worker 节点漏洞(操作系统级别)。

容器镜像漏洞。

  • 各种资源的 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 令牌(可在 Slack 应用页面的 OAuth & Permissions 页中找到)粘贴到 插入令牌 输入字段中。最后,选择如何接收通知以及应发送警报的 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