使用 Jenkins + Artifactory + Kubernetes实现应用自动化持续发布 12月11日 20:00
点击报名

你的K8s 运行时环境安全吗?–KubeXray帮你保护K8s环境及应用

引言

大多数安全措施都是为了防止漏洞逃跑而设计的, 在此之前,我们也分享了一些第三方安全扫描的文章(请移步到历史文章中查看),尽早识别应用程序的风险意味着您可以防止或限制它部署到您的系统中(安全左移策略)。有了这些知识或工具,容器中任何可能造成损坏的漏洞都可以安全地留在由您的安全策略围栏后面。但是,当这些漏洞已经逃跑时,我们能做什么呢? 如何确保已经在 Kubernetes pods 中运行的容器和应用程序符合您当前的风险和策略?

背景(运行时安全管控)

由于大多数应用程序严重依赖于包管理器和开源存储库,因此它们很容易受到来自这些源的恶意或不安全代码的攻击。想象我们交付的软件 Application 是一张饼,我们自己开发的代码仅占其中很小一部分。
最近,当 Javascript 社区得知 npm module 中流行的事件流包被一个针对比特币钱包平台的恶意包更新时,他们非常愤怒。在被发现和报道之前的三个月里,这个包被下载了近800万次。虽然来自社区包管理器的此类事件并不常见,但并不少见。一年前,npm 发现并删除了39个恶意包。所以很多包在我们安全策略发现之前可能已经进入到了生产环境。

解决方案

在介绍如何对运行时进行安全控制之前,先回顾一下常见漏洞扫描工具的原理:这里以 JFrog Xray  为例:通用二进制分析工具和策略引擎 JFrog Xray,会实时扫描 Artifactory 制品库中的容器镜像,war 包,以及 Npm module 等二进制制品,执行深度递归扫描,逐层检查应用程序的所有组件,并与多个漏洞数据源(已知漏洞数据库)进行一一对比,从而判断是否存在已知漏洞 或 License 许可证策略问题,同时为被扫描文件(Docker 镜像,Npm Module)添加相关元数据。
Xray 漏洞扫描平台分析
DevOps 管理员可以根据 Xray 扫描平台所发现的风险级别,配置策略来限制或阻止 Kubernetes 部署这些 Docker 镜像。但是可以发现仅仅使用 Xray,只能将漏洞限制在运行时之前。为了解决这个问题,JFrog 提供了 KubeXray 组件,这是一个开源软件项目,它将通用二进制安全分析工具 Xray 的安全性扩展到 Kubernetes pods 运行时。使用 Xray 扫描容器映像生成的元数据,KubeXray 可以对已经部署的内容(容器镜像等)进行安全策略管控。KubeXray 监控所有活动 Kubernetes Pod 资源,以帮助您:

  • 捕捉当前在所有 Kubernetes 吊舱中运行的应用程序中最新报告的风险或漏洞。
  • 对正在运行的应用程序强制执行当前策略,即使您已经更改了这些策略。
  • 对未被 Xray 扫描且风险未知的正在运行的应用程序执行策略。

通过这种方式,KubeXray 可以帮助您将逃逸的漏洞进行安全的控制。

 

KubeXray 是什么?

在 Kubernetes 将容器镜像部署到 pods 之前,Xray 检测风险并将策略应用于容器镜像,KubeXray 检测风险并将策略应用于已经运行或即将运行的 Kubernetes pod。KubeXray 监视来自 Kubernetes 服务器和 Xray 的安全事件,并为 Kubernetes 运行的所有 pods 执行当前的安全策略。KubeXray 监听这些事件流:

  • 部署新服务(Pod)
  • 升级现有服务
  • 新的许可证策略,例如某个 License 许可证类型不允许在运行时使用
  • 一个新的安全问题
当检测到问题时,KubeXray 会根据您设置的当前策略进行响应。您可以选择以下可能的操作之一:

  • Scaledown 为直到0。所需的服务状态更新为0,使其在仍然可以查询时处于非活动状态
  • 删除漏洞容器镜像的相应 Kubernetes 资源
  • 忽略它,让 pod 继续运行

KubeXray 还了解不同 Kubernetes 资源(状态集和部署)之间的差异,并允许对每种资源应用不同的策略操作。

虽然 KubeXray 主要是将 Xray 的深度扫描安全性扩展到运行 Kubernetes pods,但它也为未被 Xray 扫描的 pods 提供了一些策略控制,例如从存储库(而不是Artifactory)部署的容器映像。对于没有经过 x 射线扫描的 pod,因此其风险是未知的,您可以指定要采取的单独策略操作。

 

KubeXray 工作原理

KubeXray 监听 Kubernetes 集群中运行的每个 pod,并使用 Xray 元数据(何时可用以及是否可用)来确定安全策略控制。

  • 对于 Kubernetes 上的每个 pod(运行或计划运行),KubeXray 检查 Xray 元数据中的漏洞或 License 许可证策略问题。如果发现任何风险,KubeXray 将采取相应的控制操作。
  • 如果 Kubernetes pod 中的任何容器镜像(正在运行或计划运行)没有被 Xray 识别——因为它没有被扫描,或者因为它没有从 Artifactory 下载——那么 KubeXray将以未知风险来应用当前的策略集。

每当在 Xray 上添加或更新新策略,或报告新漏洞时,KubeXray 都会检测到此更改,并检查现有 pod 是否存在问题。如果发现任何风险,KubeXray 将立即根据当前安全策略进行安全控制。

如下图所式: 显示对漏洞 pod 的每个策略操作过程(忽略/删除/缩容)。

上面提到:KubeXray 根据发现的风险和 DevOps 管理员配置的策略应用策略操作。策略操作是在一个 values.yaml 文件中设置。您可以为以下条件配置策略操作(缩容、删除或忽略):

  •  未扫描——未被 Xray 扫描 deployments,您还可以指定命名空间的白名单;使用这些命名空间的 deployments 将不应用安全策略操作。
  • 安全性——由于漏洞而存在安全问题的 deployments。
  • License 许可证——许可证不符合策略的 deployments。

上述每种条件都为 Deployments 和 StatefulSets 提供了单独的策略操作设置。

 

KubeXray安装使用

KubeXray 工具是一个开源软件项目,可以在 Github 存储库中找到并安装它(https://github.com/jfrog/kubexray)。要使用 KubeXray,您必须具备:

  • 一个已获授权及正在运行 Artifactory 服务
  • 一个已获授权及正在运行 Xray 服务
  • 一个正在运行的 Kubernetes 集群
  • 客户端 Kubectl
  • Helm 客户端以及 Helm 服务端配置(Tiler)

快速安装 KubeXray:

JFrog Helm 仓库中提供的一个 Helm Chart,可以快速安装或升级 JFrog KubeXray 到正在运行的 Kubernetes 集群。要自定义 KubeXray 的配置,请参阅 Github Readme 文档。

安装 KubeXray 后,可以在 values.yaml 中设置前文提到的策略操作。让 JFrog KubeXray 监视您的 Kubernetes pod,控制 Kubernetes 集群运行时存在的安全漏洞或 License 许可证问题。

 

总结

常见的第三方漏洞安全监管工具一般只在控制运行时之前进行安全控制,在运行时未能做到相应的监管控制,KubeXray 可以帮助我们快速对运行时资源进行安全管控,并且其作为一个开源软件项目,我们期待着继续增强 KubeXray 以获得更健壮的操作和特性,并欢迎开发人员在社区提出改进意见和提交代码。 

扩展阅读

  • JFrog Xray 第三方安全管家(历史文章)
  • JFrog Artifactory 试用地址:http://www.jfrogchina.com/artifactory/free-trial/
  • JFrog Xray 试用地址:http://www.jfrogchina.com/artifactory/free-trial/

 

文章作者:刘永强

发表评论

Please type the code shown*


Can't read the image? click here to refresh

Popular Posts