使用漏洞扫描保护 K8s 应用程序
关注上方 云原生CTO 更多云原生干货等你来探索
-
专注于 云原生技术分享
-
提供优质 云原生开发 视频技术培训 -
面试技巧,及技术疑难问题 解答
云原生技术分享不仅仅局限于containerd
、CoreDNS
、Envoy
、etcd
、Fluentd
、Harbor
、Helm
、Jaeger
、Kubernetes
、Open Policy Agent
、Prometheus
、Rook
、TiKV
、TUF
、Vitess
、Argo
、Buildpacks
、CloudEvents
、CNI
、Contour
、Cortex
、CRI-O
、Falco
、Flux
、gRPC
、KubeEdge
、Linkerd
、NATS
、Notary
、OpenTracing
、Operator Framework
、SPIFFE
、SPIRE
和 Thanos
等
1 介绍
根据 CNCF 最近的调查报告,大约78% 的受访者正在以某种方式利用 Kubernetes
,认为它是功能最丰富的容器编排平台之一。它有效地自动化了容器的配置、供应和管理。
但是管理容器化应用程序需要高级安全性,以确保整个过程中的无缝操作。企业必须实施领先的安全措施来保护在 Kubernetes 集群上运行的应用程序。尽管 Kubernetes
为集群提供了初级安全性,但组织仍然需要采用高级安全监控和合规性管理。
这就是 Kubernetes
漏洞扫描的用武之地。
在这里,我们将看看使用漏洞扫描器来帮助您保护 K8s 容器化应用程序的重要性:
2 为什么漏洞扫描如此重要?
随着容器和微服务的快速发展,使用 Kubernetes
对它们进行编排以优化成本和提高效率变得至关重要。Kubernetes 是一个更快、可移植和开源的平台,可管理容器化应用程序和服务,同时提供自动化和声明式配置。
然而,Kubernetes
容易受到网络攻击和安全漏洞的影响,这主要是由于高度宽松的状态和错误配置。根据 StackRox
的2020 年调查报告
https://www.stackrox.com/kubernetes-adoption-security-and-market-share-for-containers/
近 90% 的受访者在其 Kubernetes
和容器环境中遇到了一些安全事件。人为错误通常是数据泄露的罪魁祸首。近 67% 的受访者有错误配置事件,22% 有重大漏洞,17% 有运行时事件,而大约 16% 有审计失败。
Capital One
在 2019 年 7 月发生了一起大规模的 Kubernetes
安全事件,引起了广泛关注。这次安全漏洞见证了 30GB 的信用申请数据被泄露,影响了超过 1.06
亿人。该事件的罪魁祸首是配置错误的防火墙,它允许攻击者远程执行任意命令。在这里,为服务器配置的 IAM 角色本质上是广泛的,允许攻击者从 S3 读取和同步。
这说明早期识别已知漏洞有助于防止后期恶意活动和意外集群故障。漏洞扫描器和工具会仔细扫描 K8s pod 和集群以查找 CVE(常见漏洞和暴露)并确定您的 Kubernetes
配置是否包含风险。
2.1 以下是对 K8s 应用程序使用漏洞扫描的一些优势:
-
识别 K8s 集群、Pod 和容器中的漏洞和错误配置 -
实时提供对集群健康状况的更深入可见性 -
通过识别初始阶段本身的问题,帮助组织降低与集群故障相关的风险 -
增强 DevOps 团队在 K8s 集群上构建和部署关键业务应用程序的信心
漏洞就像一个巨大的缺口,暴露了您企业的整个云基础架构。由于检测能力较差,识别安全风险变得更具挑战性,尤其是对于复杂的云环境。
漏洞扫描是保护您的 K8s 环境免受潜在威胁的最佳防御措施。
3 什么是容器镜像扫描?
容器镜像扫描是一个彻底分析容器镜像的构建过程和元素的过程。扫描帮助我们在初始阶段检测漏洞、不良做法或安全问题。
这些漏洞扫描工具收集相关的CVE信息从各种渠道寻找镜像中的漏洞。一些高级工具甚至提供关键扫描规则来查明不良做法和安全问题。
镜像扫描可以直接集成到您的 CI/CD 管道中以防止漏洞远离注册表,或集成到您的注册表中以防止第三方映像中或运行时出现漏洞以阻止新的 CVE。如果操作正确,镜像扫描可确保在部署 K8s 应用程序期间没有瓶颈或停机时间。
4 在镜像扫描仪中寻找什么?
容器镜像扫描器需要有足够的能力扫描镜像中的整个软件,以识别其中存在的漏洞。最常见的是,这些镜像基于 Linux 发行版,例如 Alpine、Ubuntu 等。在企业中,可能存在基于各种分布的多个镜像。因此,镜像扫描器需要支持您的组织镜像使用的所有发行版。
出于同样的原因,镜像扫描程序需要从特定于该发行版的安全公告中识别漏洞信息,而不仅仅是来自 NVD(国家漏洞数据库)。这是因为每个 Linux 发行版都有一种独特的方式来管理安全补丁。
最后,在构建过程中,软件在包管理器的帮助下被配置到镜像中。因此,镜像扫描器必须支持包管理器读取版本信息。此外,您需要寻找语言支持,因为特定语言的库中也可能存在漏洞
5 如何选择合适的漏洞扫描器
市场上有无数的 Kubernetes 漏洞扫描器。问题是如何选择合适的漏洞扫描器?
并非所有漏洞扫描程序的创建都是相同的。因此,“一刀切”的方法在这里并不适合。每个企业组织都有独特的要求,并且会遇到与其他企业不同类型的漏洞。
让我们来看看市场上最常用的漏洞扫描器类型:
5.1 基于软件的漏洞扫描程序
基于软件的漏洞扫描器通常提供配置审计、有针对性的报告、渗透测试和深入的漏洞分析。这些类型的工具与您的移动设备管理器或操作系统系统中心集成,以提供高级补丁管理。此类扫描仪能够扫描服务器、物理网络设备、工作站以及虚拟机、数据库和 BYOD 移动设备。
由于其先进的 UI 和有针对性的分析报告,基于软件的扫描程序需要较少的管理干预,这些报告说明了明确的补救措施。您可以根据各种标准过滤报告以识别变化趋势。
5.2 基于云的漏洞扫描器
基于云的漏洞扫描器提供持续监控并充当按需 SaaS(软件即服务)。这些现代工具对所有网段的设备和计算机执行连续、免提监控。此外,这些扫描仪不需要安装、手动维护或集成。您所需要的只是订阅该服务并配置/自动化扫描。
6 选择漏洞扫描程序
在选择漏洞扫描器时,您需要考虑以下几个因素:
6.1 扫描仪可以检查的安全问题
许多漏洞扫描程序都提供了一个可以检查的安全问题列表,帮助您确定哪一个适合您。查看镜像扫描器的文档,并检查它是否可以检查您企业基础架构中的应用程序和依赖项的安全问题。
6.2 其中一些关键类别的漏洞如下:
-
包含检查第三方硬件和软件中已知漏洞的易受攻击的软件 -
Web 应用程序漏洞,例如 SQL 注入、跨站点脚本等。 -
加密问题,例如 SSL 证书配置错误、弱加密协议、弱加密密码等。 -
常见的错误配置和错误,例如打开电子邮件中继、暴露的 git - 存储库或暴露敏感数据的糟糕的 Web 服务器配置。 -
检测可以减少攻击面的区域 -
识别暴露数据库或管理接口的端口和服务 -
确定系统向最终用户泄露敏感信息的区域
6.3 核心功能
市场上的每个漏洞扫描器都提供不同的独特功能。在选择镜像扫描仪之前,您需要仔细检查您的组织必不可少的功能以及您不需要的功能。
6.4 以下是一些需要考虑的主要扫描仪功能:
-
频率:它运行扫描的频率 -
调度:它是否允许您根据您的选择安排扫描以避免高峰时间 -
API:它是否允许您在开发周期后自动进行扫描 -
合规性:扫描仪是否符合您的合规性要求 -
主动扫描:扫描仪是否可以自动分析系统以检测最新威胁 -
报告:是否具有报告功能,可提供清晰的路线图以采取补救措施 -
云集成:扫描仪是否与云服务提供商集成
7 自动化漏洞扫描
虽然我们可以手动运行扫描,但始终希望有一个镜像扫描器,它可以定期自动扫描所有镜像的漏洞。这将确保在您的 K8s 应用程序中部署新功能的过程中不会出现减速。
您需要在 K8s 应用程序镜像的不同生命周期阶段自动进行漏洞扫描,例如:
-
在构建过程中 -
在注册表中 -
部署前 -
在运行 Kubernetes 工作负载时
7.1 在构建中扫描
在构建阶段运行漏洞扫描将在进入开发阶段之前检查错误或漏洞。如果扫描器检测到严重漏洞,构建阶段将失败,容器镜像将不会存储在注册表中。这就是扫描器如何在初始阶段本身防止部署易受攻击的镜像。
7.2 扫描正在运行的工作负载
容器镜像通常会通过各种安全检查,并成功部署在 K8s 集群中。但是,如果您想在正在运行的 Kubernetes 工作负载中运行漏洞扫描以检查已知漏洞,该怎么办?Magalix 允许您在运行时直接运行漏洞扫描以识别新的已知漏洞。
8 结论
Kubernetes 是一个强大的企业编排平台,可以保护容器、工作负载和集群。但是您需要利用尖端的扫描仪和工具才能获得 K8s 提供的最大好处。
5.3 文档
文档请参考 [1]
参考资料
更多文档: https://www.magalix.com/blog/how-vulnerability-scanning-helps-to-secure-k8s-application