实践「容器镜像扫描」,Get 云原生应用的正确打开方式

news2024/11/20 4:20:16

🌟 容器技术的兴起,让应用程序更加轻量化和可移植,大大提高了应用交付效率。但容器中的应用也面临各种安全威胁,容器及其镜像安全不可小觑

近日,在「DevSecOps 软件安全开发实践」课程上,极狐(GitLab) 高级专业服务交付工程师唐恩、极狐(GitLab) 研发经理张頫,分享了容器镜像扫描的原理及代码实现,并演示了极狐GitLab 容器镜像扫描功能,帮助大家进一步把握容器安全。

以下内容整理自本次直播,你也可以点击👉观看视频回放或下载 PPT。Enjoy~

什么是容器镜像扫描?


首先,回顾 2 个基本概念:

  • 容器:一种打包方式,用于封装应用程序的代码和依赖项,使应用程序与底层基础架构分离,使其可以在不同环境中运行。容器技术大大提高了应用交付与迁移效率,尤其在云原生场景下,其价值更加凸显。Docker 是目前最为流行的容器方案。

  • 容器镜像:用于创建容器的文件模板,存储了运行环境和应用所需的文件系统及软件。通过使用不同的容器镜像,可以创建出运行不同应用或操作系统环境的容器实例。

容器镜像扫描则是指对容器镜像进行安全检测的过程,属于 DevSecOps 中 Sec 的一环。通过检测和评估已知威胁与漏洞,最大限度降低风险,确保镜像安全性与健康性。

为什么要进行容器镜像扫描?


容器技术给软件交付带来前所未有的灵活性与效率,但也不可避免地增加了安全面临的不确定性。

近年来,各种报告和统计数据显示,容器安全正受到越来越多的关注,这也推动容器镜像扫描等安全防护措施的广泛应用。

例如,Datadog 发布的报告显示,目前已有 25% 的公司采用了 Docker 技术,相较前一年提升 6%,表明 Docker 使用率快速增长,渗透到了越来越多企业中

同时,Sysdig 发布的容器漏洞报告显示,目前有 75% 的容器存在严重或危急级别的漏洞。这表明容器安全成为严峻问题,需要企业高度重视

容器技术带来的便利,与容器安全,两者如何兼得?容器镜像扫描等安全工具和机制成为解题关键

极狐GitLab 容器镜像扫描 4 大优势


➤ 一站式平台,无需额外工具

极狐GitLab 本身是一站式 DevSecOps 平台,内置集容器镜像扫描,无需安装和维护额外工具

➤ 简单易用,一行配置高度自动化

容器镜像扫描属于极狐GitLab 流水线模板之一。用户在流水线配置文件中,通过 include 字段即可引用,容器镜像扫描整个流程就会自动完成,包括拉取镜像、启动扫描器、生成报告等步骤。

➤ 灵活控制,高效和安全齐备

容器镜像扫描可以应用于开发、构建、测试、生产等各环境,实现容器镜像全生命周期的安全管理。

得益于极狐GitLab 强大的流水线功能,用户可以通过配置将把容器镜像扫描控制到某一阶段中。例如在开发环节,不进行容器镜像扫描;在发布环节自动触发容器镜像扫描,灵活控制,达到既高效又安全的目的。

➤ 报告可视化,清晰详尽便于处理

容器镜像扫描完成后,通过 CI/CD 流水线中的 artifacts  关键词指定将报告输出为 JSON 文本,并自动解析为可视化报告(如下图),报告中包含镜像概述、检测到的漏洞清单、风险等级等信息,清晰详尽,方便用户分析与处理。

除了在极狐GitLab 流水线界面可以查看漏洞报告,在「安全与合规 → 漏洞报告」也可查看最新漏洞情况(如下图)。

由 Merge Request 所触发的容器镜像安全扫描,可直接在 Merge Request 页面中查看报告(如下图),方便用户更好地审查代码。

如何启用极狐GitLab 容器镜像扫描 ?


总体流程

极狐GitLab 容器镜像扫描的总体流程如图所示:

  1. 用户使用 container-scanning.yml 定义作业;

  2. 极狐GitLab 计算变量值,生成如下 Key-value;

  3. 极狐GitLab 选择 Runner 来执行此作业,拉取镜像并启动容器;

  4. 根据不同的 Linux 发行版和 CPU 架构生成对应的容器镜像。

前提条件

启用极狐GitLab 容器镜像扫描,需要满足以下前提条件:

  • 流水线中需包含 Test Stage(模板中定义的 Stage 名为 Test);

  • 具有 Docker 或 Kubernetes 执行器的 Runner,用于拉取和扫描镜像;

  • Docker Engine 版本高于 18.09.03;

  • 有一个镜像仓库,用于存放打包好的镜像,让扫描器能够到指定目标拉取镜像进行扫描。

在流水线中引用容器镜像扫描

include:
  - template: Jobs/Build.gitlab-ci.yml
  - template: Security/Container-Scanning.gitlab-ci.yml

此处建议使用极狐GitLab 的 Container Registry 做镜像仓库,非常便于使用容器镜像扫描,几乎不需要额外配置,就可以自动推送到镜像仓库,拉取扫描。

注意:如果是使用外部镜像仓库,需要自定义CS_REGISTRY_USER 和 CS_REGISTRY_PASSWORD。

Include YAML 

Container-scanning 基于 Ruby,第 1 个作用就是编译 container-scanning 所需的所有镜像。

极狐GitLab 将预编译打包好的镜像,汇总浓缩为 container-scanning :5 ,其中包含了非常丰富的内容。其背后的技术是 Docker manifest——manifest 作为元数据的具体表达形式,包含了描述一个镜像所需的全部信息,这使得 Docker 能够处理各种镜像,包括单架构、多架构以及带有多个 Tag 的复杂镜像。

变量解析

在所有极狐GitLab CI 模板中,最重要的就是变量。

那么极狐GitLab 中变量的工作方式是什么?答案如下:

  • 当用户在 .gitlab-ci.yml 文件中定义变量时,极狐GitLab 会将所有变量解析为键值对

  • 将这些键值对作为环境变量,传递给 Runner;

  • Runner可在执行 Job 时,查找和使用这些环境变量。

这种变量机制使得 .gitlab-ci.yml 文件具有很大灵活性。用户可以在文件中定义任意变量,这些变量值会在运行 Job时被 Runner 识别和使用,简化了 Job 之间以及 Job 与运行环境之间的交互,用户无需硬编码值,即可使用变量达到解耦效果。

同时,这也使得 .gitlab-ci.yml 文件可作为模板,其中变量值可以根据执行 Job 环境进行动态替换。一个模板文件即可在不同环境中重复使用,提高文件复用性

最终报告

Container-scanning 通过调用 trivy 和 grype 等扫描工具,检测容器镜像中的漏洞与风险。而这些工具各自具有自己的报告格式,container-scanning 的第 2 个作用就是将 trivy 和 grype 的检测结果转换为统一的极狐GitLab 自定义安全报告模式。

这实现了检测的灵活性与结果的标准化,为用户都带来更佳体验;也体现了极狐GitLab 在安全检测与管理方面的重要价值,使得极狐GitLab 能够成为 DevOps 过程中安全保障的关键环节。 

总结


容器镜像扫描使得研发团队可以在早期发现容器镜像中的潜在漏洞与风险,及时进行修复与更新,确保最后交付到生产环境的镜像达到符合标准的安全等级,提高软件交付的整体安全性与可靠性。

事实上,容器镜像的漏洞与风险并非 Docker 或 Kubernetes 等技术本身的问题,而是我们在使用这些技术构建镜像与微服务时带入的缺陷与错误。唯有对整个交付流程的每个环节进行安全检查与审核,持续检测存在的漏洞与错误,及时予以修复,软件交付的安全性才能得以系统性的提高。这也呼应了 DevSecOps 理念——把安全特性和控制措施深度嵌入到 DevOps 的每一个过程与实践中,使得研发团队可以在保持高效的同时,兼顾软件产品的安全与质量,真正实现精英研发效能。 

想了解更多极狐GitLab DevSecOps 7 大实用功能?点击参与活动👉DevSecOps 7大直播课程正在进行中 ,立即上车,启程软件安全开发实践之旅!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/541244.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux设置系统时间(上海时区、硬件时间、重启有效)

#查看时间 date#删除当前时区 rm -rf /etc/localtime #修改默认时区为上海 ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #设置硬件时间 月/日/年 时:分:秒 hwclock --set --date"05/18/2023 17:11:15"#设置系统时间和硬件时间同步 hwclock --hctosys#保…

大数据发展前沿复习

对抗学习 生成对抗网络(GAN)是非监督式学习的一种方法,透过两个神经网络相互博弈的方式进行学习。生成对抗网络由一个生成网络与一个判别网络组成。生成网络以随机取样作为输入,其输出结果需要尽量模仿训练集中的真实样本。判别网…

vmware17pro安装激活ubuntu22版本最新教程无废话

第一步:下载 下载很方便 官方一键下载链接 第二步 安装 点下一步,一键安装即可,有可能会重启电脑,没关系的,是安全的 第三步:ji活 懂得都懂这是什么 JU090-6039P-08409-8J0QH-2YR7F 4A4RR-813DK-M81A9…

C语言算法--快速排序法

C语言算法–快速排序法 1-什么是快速排序法 快速排序(Quicksort)是一种常用的排序算法,它基于分治的思想。它的核心思想是选择一个基准元素,将数组划分为两个子数组,使得左边的子数组中的所有元素都小于等于基准元素…

【Flutter开发】Navigator2.0介绍及使用

目录 Navigator1.0Navigator2.0APPRouteInformationParserRouterDelegate 问题The Navigator.pages must not be empty to use the Navigator.pages API浏览器的回退按钮 总结 Navigator1.0 我们学习flutter一开始接触的路由管理就是Navigator1.0,它非常方便&#…

JAVA-Activiti 7与达梦、人大金仓兼容-nacos、服务pom文件配置(2)

目录 第一步,修改nacos服务配置 >需注意< 第二步,pom.xml依赖包配置 Activiti的源码包解决之后,接下来就好做很多了 第一步,修改nacos服务配置 spring:datasource:url: jdbc:kingbase8://127.0.0.1:54321/progress?currentSchemaprogress,productNamePostgreSQL,SYS…

保密+完整+可用+安全,规避代码安全「马奇诺防线」,构建软件供应链整体安全

近日&#xff0c;在「江狐会」广州站上&#xff0c;极狐(GitLab) 高级解决方案架构师武让分享了如何通过三大阶段 四大要点&#xff0c;规避代码安全「马奇诺防线」&#xff0c;真正确保软件供应链安全。以下内容整理自本次演讲。Enjoy&#xff5e; 先跟大家分享一个故事 一战…

计算机体系结构|MIT6.175和MIT6.375学习笔记

在2023年初&#xff0c;达坦科技发起成立硬件设计学习社区&#xff0c;邀请所有有志于从事数字芯片设计的同学加入我们的学习互助自学小组&#xff0c;以理解数字芯片设计的精髓&#xff0c;强化理论知识的同时提升实操技能&#xff0c;继而整体提升设计能力。现在&#xff0c;…

Vmware虚拟机安装MacOS13-Ventura详细教程

小编亲测 前提准备 功能强大的 Windows 电脑&#xff08;不能太差&#xff0c;不然会卡&#xff09;至少8GB内存默认是80GB的存储空间VMWare Workstation&#xff08;版本应该没什么需求&#xff0c;我装的是VMware Workstation 17 Pro&#xff09;Unlocker解锁软件MacOS Ventu…

最快的 Houdini 和 V-Ray 云渲染服务

Houdini是SideFX开发的一款3D动画软件应用。Houdini 最常用于 FX 部门&#xff0c;用于在电影和游戏中创建视觉效果。它被主要的 VFX 公司使用&#xff0c;例如 Walt Disney Animation Studios、Pixar、DreamWorks Animation、Double Negative、ILM、MPC、Framestore 等。Houdi…

推荐几款音频转文字软件给你

不知道小伙伴们有没有遇到过这种情况&#xff0c;在上学时期&#xff0c;我们经常需要记录老师上课的板书内容&#xff0c;但是边听边记可能速度会跟不上&#xff0c;还会遗漏掉一些内容&#xff0c;而且效率也不高。其实这时候&#xff0c;我们可以将老师讲话的内容先录制下来…

鸿蒙Hi3861学习十三-Huawei LiteOS-M(STA模式)

一、简介 AP&#xff08;Access Point&#xff09;无线接入点 AP是无线接入点&#xff0c;是一个无线网络的创建者&#xff0c;是网络的中心节点。一般家庭或办公室使用的无线路由器就是一个AP。 STA&#xff08;Station&#xff09;站点 STA也可以理解为终端的意思&#xff…

高性能零售IT系统的建设10-一个系统日志记录搞崩了整个公司的O2O交易系统

背景 绝大多数业务系统其实都是一座屎山&#xff0c;本人接手的这座屎山目前已经成了一座金山。这其中的幸酸只有那些从0参与过并活到现在的一些“老人”们心中自知其中的滋味。 在3年半前&#xff0c;本以为买来的一套将近600万行代码、达800张表、几乎用到了所有的互联网中间…

分布式系统:高并发

目录 1.什么是高并发 2.术语 3.如何应对处理高并发 3.1.提升系统的并发能力 3.3.1.垂直扩展 3.3.2.水平扩展 3.2.流量控制 4.削峰 4.1.怎样来实现流量削峰方案 4.2.限流 5.总结 1.什么是高并发 高并发是指系统在同一时间内处理大量请求的能力。在软件开发中&a…

CRM管理系统在线用

一、CRM管理系统是什么 CRM是客户关系管理的缩写&#xff0c;是指企业通过建立客户档案、跟进客户需求、提供优质服务来维系客户关系的一种管理模式。是企业以客户关系为重点&#xff0c;通过开展系统化的客户研究&#xff0c;优化企业组织体系和业务流程&#xff0c;提高客户…

Jina AI全新Inference服务,LangChain开发体验从未如此丝滑

由于 Token 的限制&#xff0c;在开发 LangChain 问答机器人应用时&#xff0c;我们经常需要将文档切割&#xff0c;接着使用 Embedding 引擎 分别将分割后的 Document 变成 Embeddings&#xff0c;即向量表示。 同时输入的问题&#xff0c;也需要用到 Embedding 引擎 变成向量…

linux调试知识:手把手教你SSH怎么链接

在机器装机后&#xff0c;如果没有显示&#xff0c;有没有串口&#xff0c;通常很难区操作调试&#xff0c;本文总结一篇通过搭建SSH链接去为调试做服务&#xff1a; 首先第一步&#xff1a;安装必要的软件&#xff0c;CRT或者XSHELL。 下面将举实际案例&#xff0c;手把手搭…

Axure rp9 引入Echarts图表 |手动引入图表 Apache Echarts

Axure rp9 引入Echarts图表 |手动引入图表 Apache Echarts 1.拖入一个矩形lable&#xff0c;调整合适大小,并命名为test 2.给test新建交互载入时&#xff0c;打开链接&#xff0c;并将下方code贴入 如果想在无网的情况下运行&#xff0c;需要在axure软件的安装目录DefaultSet…

深度学习笔记之递归网络(三)递归神经网络

深度学习笔记之递归网络——递归神经网络 引言回顾&#xff1a;潜变量自回归模型递归神经网络思想困惑度 引言 上一节介绍了基于统计算法的语言模型。本节将介绍基于神经网络的序列模型——递归神经网络。 回顾&#xff1a;潜变量自回归模型 关于潜变量自回归模型&#xff0…

记一次 Visual Studio 2022 卡死分析

一&#xff1a;背景 1. 讲故事 最近不知道咋了&#xff0c;各种程序有问题都寻上我了&#xff0c;你说 .NET 程序有问题找我能理解&#xff0c;Windows 崩溃找我&#xff0c;我也可以试试看&#xff0c;毕竟对 Windows 内核也知道一丢丢&#xff0c;那 Visual Studio 有问题找…