引言
大多数安全措施都是为了防止 漏洞 逃跑而设计的 , 在此之前,我们也分享了一些第三方安全扫描的文章(请移步到历史文章中查看), 尽早识别应用程序的风险意味着您可以防止或限制它部署到您的系统中 (安全左移策略) 。有了这些知识 或工具 ,容器中任何可能造成损坏的 漏洞 都可以安全地留在由您的 安全 策略围栏后面。
但是,当这些 漏洞 已经逃跑时, 我们 能做什么呢? 如何确保已经在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资源, 以帮助您:
1. 捕捉当前在所有Kubernetes吊舱中运行的应用程序中最新报告的风险或漏洞
2. 对正在运行的应用程序强制执行当前策略,即使您已经更改了这些策略
3. 对未被Xray扫描且风险未知的正在运行的应用程序执行策略
通过这种方式,KubeXray可以帮助您将
逃逸
的
漏洞进行
安全的
控制
。
KubeXray 是什么?
在Kubernetes将容器 镜像 部署到pods之前,Xray检测风险并将策略应用于容器 镜像 ,KubeXray检测风险并将策略应用于已经运行或即将运行的Kubernetes pod。
KubeXray监视来自Kubernetes服务器和Xray的 安全 事件,并为Kubernetes运行的所有pods执行当前的安全策略。KubeXray监听这些事件流:
1. 部署新服务 (Pod)
2. 升级现有服务
3. 新的许可证策略,例如 某个License 许可证类型不允许在运行时使用
4. 一个新的安全问题
当检测到问题时,KubeXray会根据您设置的当前策略进行响应。您可以选择以下可能的操作之一:
Ø Scaledown为 直到 0。所需的服务状态更新为0,使其在仍然可以查询时处于非活动状态
Ø 删除 漏洞 容器 镜像 的相应Kubernetes资源
Ø 忽略它,让pod继续运行
KubeXray还了解不同Kubernetes资源(状态集和部署)之间的差异,并允许对每种资源应用不同的策略操作。
虽然KubeXray主要是将Xray的深度扫描安全性扩展到运行Kubernetes pods,但它也为未被Xray扫描的pods提供了一些策略控制,例如从存储库(而不是Artifactory)部署的容器映像。对于没有经过x射线扫描的pod,因此其风险是未知的,您可以指定要采取的单独策略操作。
KubeXray 工作原理
KubeXray 监听 Kubernetes集群中运行的每个pod,并使用Xray元数据(何时可用以及是否可用)来确定 安全策略控制。
1. 对于Kubernetes上的每个pod(运行或计划运行),KubeXray检查Xray元数据中的漏洞或 License许可证策略 问题。如果发现任何风险,KubeXray将采取相应的 控制操作 。
2. 如果Kubernetes pod中的任何容器 镜像 (正在运行或计划运行)没有被Xray识别——因为它没有被扫描,或者因为它没有从Artifactory 下载— —那么KubeXray将 以未知风险来 应用当前的策略集。
每当在Xray上添加或更新新策略,或报告新漏洞时,KubeXray都会检测到此更改,并检查现有pod是否存在问题。如果发现任何风险,KubeXray将 立即根据当前安全策略进行安全控制 。
如下图所式 : 显示对 漏洞 pod的每个策略操作 过程 (忽略/删除/ 缩容 )。



上面提到: KubeXray根据发现的风险和DevOps管理员配置的策略应用策略操作。
策略操作是在一个 values.yaml 文件中 设置。您可以为以下条件配置策略操作( 缩容、 删除或忽略):
Ø 未扫描——未被 Xray 扫描deployments , 您还可以指定 命名 空间的白名单;使用这些 命名 空间的deployments 将不应用 安全策 略操作。
Ø 安全性——由于漏洞而存在安全问题的deployments 。
Ø License 许可证——许可证不符合策略的deployments 。
上 述每 种 条件都为 D eployments 和StatefulSets提供了单独的策略操作设置。
KubeXray安装使用
K ubeXray工具是一个开源软件项目,可以在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 杰蛙 DevOps
也可以添加官方微信号: JFrogjiewachina
2 月 13 日在线课堂:《容器持续交付流水线最佳实践》
课程介绍
作为运维、工程效能、sre
你是否对开发人员代码质量参差不齐而感到愤恨?
你是否对开发人员使用的不同开发语言而眼花缭乱?
你是否对不同技术栈的质量度量标准无从下手?
你是否曾经因为开发一句“环境问题,和代码无关”而莫名背锅?
听完这节课,教你如何度量开发人员的代码质量
课程内容
SonarQube 是一代码质量管理的工具,它主要用于度量源代码的质量。可以支持多种开发语言,比如 java,C, C#, go,C++, Python, Groovy 等。帮助你发现代码的漏洞,Bug,坏味道以及技术债务等信息。
本节课会基于SonarQube,讲解运维、工程效能、Sre团队如何自动化度量开发人员代码质量,如何在DevOps体系中集成代码质量扫描,提供最佳实践及平台建设思路,课程中也会提供实操演示环节。
本期话题
1. SonarQube介绍
2. SonarQube使用详解
3. SonarQube最佳实践
4. 运维人员如何评估业务代码质量
课堂活动
本期课堂讲师会在结束前进行抽奖活动
第一名:小爱蓝牙耳机
第二名:JFrog新版T恤
第三名:JFrog新版T恤
报名链接: https://www.bagevent.com/event/6360865