对话|企业如何构建更完善的容器供应链安全防护体系
对话|企业如何构建更完善的容器供应链安全防护体系
云布道师
随着云计算和 DevOps 的兴起,容器技术和自动化成为软件开发中的必要手段,软件供应链也进入了自动化及 CI/CD 阶段。然而,容器技术和自动化虽然提升了软件的更新速度,但也带来了新的安全挑战。由于更新速度快,供应链一旦遭遇攻击,恶意代码可能会迅速传播到各个开发系统。在这一阶段,安全左移成为实现软件供应链安全的指导性思想,安全的价值体现在软件开发过程中的各个环节。
在此背景下,阿里云策划了一场关于云上安全的深度访谈栏目,汇聚阿里云内部众多产品技术专家,携手安全领域从业者,旨在通过全方位、多角度交流碰撞,分析容器安全与软件供应链安全之间的关系,揭示软件开发过程中存在的安全隐患与应对之道,帮助用户更好地建设和落地软件供应链安全及容器安全体系。
本期节目邀请到的是阿里云产品专家穆寰、阿里云容器服务高级技术专家匡大虎、阿里云容器服务技术专家黄竹刚,围绕软件供应链安全、容器安全的主要挑战以及阿里云如何帮助用户等维度展开了深入的讨论。
对话|企业如何构建更完善的容器供应链安全防护体系
企业应用云原生化进入深水区,践行 DevSecOps 离不开容器安全
2024 年 7 月,微软蓝屏席卷了全球,至少 20 多个国家的交通、金融、医疗、零售等行业或公共服务的业务系统受到影响。这一事件的发生再度引发了业界对软件供应链安全的担忧。
近年来,针对软件供应链的攻击事件愈演愈烈。去年 9 月,某黑客组织使用域名仿冒和星标劫持技术向开源包管理器 PyPi 植入一系列恶意包,攻击者可借此攻陷用户设备,窃取金融和个人信息,登录凭据等敏感数据。今年 3 月又爆出了一个威胁评分为满分 10 分的供应链漏洞,攻击者“卧薪尝胆” 3 年时间,通过一系列复杂的混淆和替换技术在一款开源软件 XZ 中植入了后门。幸运的是,由于发现及时,该漏洞并没有造成大范围的严重后果。
这些安全事件进一步反映出当下供应链安全的严峻形势。今年某海外安全厂商发布的《 2024 软件供应链攻击演化》报告中,自 2019 年以来,软件供应链攻击平均每年以 742% 的速度增加。同时今年某安全厂商的开源安全风险分析报告中对 17 个行业一千多个商业代码库进行了匿名分析,在分析结果中显示,其中 84% 的代码库中包含安全漏洞,更有 74% 的代码库包含高危安全漏洞。
现阶段,越来越多的企业将 DevSecOps 视为保障软件供应链安全的有力手段。 DevSecOps 是一种将安全深度融入软件开发生命周期的新型软件开发实践方法。与传统开发流程不同的是, DevSecOps 主张在软件开发的每个阶段都主动考虑和集成安全性,而不是将安全性视为事后的补充。
与此同时,容器安全在现代软件开发和部署中,与 DevSecOps 一起成为两个密切相关的概念。
在 DevSecOps 流程中,容器安全被视作整体安全策略的一个重要组成部分。这意味着企业在应用云原生化进程中需要在开发、CI/CD 、部署和运行阶段都以自动化和持续监控的方式集成容器安全。同时 DevSecOps 流程中强调的协作和循环反馈的文化理念也能够保证企业容器化应用持续的安全水位。
容器安全面临的三个挑战
容器安全指的是基于容器技术的应用云原生化改造后的安全防护,主要针对应用容器化改造带来的重点安全风险和挑战。相较传统的架构,企业应用在进行容器化转型过程中的安全挑战来自以下三个方面:
首先是云原生平台基础设施。云原生平台层组件相较于传统架构引入了更多的配置项和隔离层,这就给企业安全管理运维人员提出了更高的运维要求。如何保证平台基础设施层的默认安全性,如何在遵循最小化权限原则基础上进行授权操作,如何建立云原生应用系统的安全审计和监控能力,这些新的挑战都需要云服务商和企业安全管理运维人员协同构建并最终实施到企业云原生化转型后的系统应用架构中。
其次是 DevOps 软件供应链。云原生弹性、敏捷和动态可扩展的特征极大地改变了传统应用部署模式,应用自身的生命周期被大幅缩短,而企业应用的迭代效率则大幅提升,在企业供应链架构变革的同时需要构建和实施适配供应链各阶段的安全防护能力。
最后是应用范式上的改变。随着微服务架构在企业中的广泛应用,传统的基于南北向流量的安全边界模式已经变得不适用,企业需要更加细粒度的身份认证和访问控制;同时 Serverless 和函数计算等新技术开始流行,对于云服务商在基础设施层的安全隔离性和监控能力提出了更高要求,而应用的容器形态则需要新的运行时安全监控告警和资产管理模式与之对应。
实现容器安全的改进策略建议
针对上述挑战,阿里云表示,绝大多数的企业云原生安全的发展都落后于应用的云原生化进程,而想要改进则需要集中在以下三个方向:
首先是身份和访问管理。线上授予的权限与实际需要的权限之间存在巨大差异,无疑会给攻击者可乘之机。
其次是漏洞和配置管理。大多数的企业生产镜像都没有经过安全加固和最小化的裁剪收敛,另外很多线上应用因为开发调试的一时方便而在容器层配置了过高的特权。
在云原生 Kubernetes 集群的典型攻击路径中,由于云原生技术架构的复杂性,容器应用、运行时、Kubernetes 编排引擎、镜像仓库以及内核层都可能给整个应用系统引入新的风险,而近年来不断爆出云原生社区相关的 CVE 漏洞中,攻击者可以利用的攻击方式也是多种多样,像一般的提权、仿冒、篡改、抵赖、拒绝服务等典型攻击手段都出现在了近两年公开披露的漏洞利用方式中。
最后是监控和响应。由于大多数用户缺少针对容器资产的运行时监控和防护手段,在针对突发的攻击事件时无法有效完成定位和溯源。
因此,阿里云建议必须针对容器场景采取对应的安全防护手段。例如,默认安全和最小化授权,基于安全左移原则的漏洞和风险分级管理机制,建立容器部署的安全准入机制,针对容器的运行时监控告警以及云原生安全资产管理。
针对容器安全,阿里云的解决方案
在实践层面,围绕容器构建、部署及应用运行这三个阶段,阿里云推出了针对性的产品和服务。
针对容器构建阶段的安全需求,阿里云容器镜像服务 ACR 提供了隔离的镜像构建环境、智能化的镜像构建诊断、镜像漏洞扫描、镜像加签、SBOM 软件物料清单分析以及制品漏洞信息反查等多个安全特性,助力企业构建安全的容器制品。
针对容器部署阶段的安全需求,阿里云容器服务 ACK 提供了精细化的集群访问控制、完备的集群操作审计、与应用相结合的镜像验签、工作负载安全策略等安全特性。
针对应用运行阶段的安全需求,阿里云容器服务 ACK 提供了应用维度的最小化授权方案 RRSA 、节点池和 Pod 维度的网络安全组和安全策略以及容器内操作审计、安全沙箱容器和机密容器等多个安全方案。
阿里云表示,针对容器软件供应链日益严峻的安全形势,容器服务 ACK 、ACR 、ASM 通过一系列安全产品能力,实现了“连点成线”的供应链风险分析和防御机制,同时面向企业安全管理员提供了开箱即用的产品能力。
今年,面向供应链安全的典型客户需求,ACR 容器镜像服务支持 OCI 社区 1.1 版本的镜像和分发规范,标志着客户可以通过 ACR 管理和分发镜像签名以及 SBOM 这样的非镜像 OCI 制品,同时结合 ACK 的策略治理能力,帮助企业客户实现通用的制品自动化加签和验证方案,保证部署到生产集群中的镜像是完整可信的。
同时 ACK 容器服务还针对授权过大和容器逃逸后的节点内横向攻击等风险,有针对性地提供了对应的加固和防护能力。
阿里云网格服务 ASM 提供一个全托管式的服务网格平台,兼容社区 Istio 开源服务网格,用于简化服务的治理,包括服务调用之间的流量路由与拆分管理、服务间通信的认证安全以及网格可观测性能力,帮助企业实现应用无感的零信任安全。
基于此,用户可以通过结合 ACR 、ACK 、ASM 所提供的多种安全能力以及阿里云云安全中心所提供运行时安全能力,构建涵盖整个软件开发生命周期的端到端的企业安全运营和防护体系。
结语:阿里云携手客户共筑供应链安全
实现软件供应链安全,不仅需要企业采用针对性的策略,还需要建立对应的企业安全文化意识。除此之外,阿里云认为,做好软件供应链安全还需要从多个方面入手:
首先,加强基础设施的安全性。阿里云致力于提供高可靠性和高安全性的云计算基础设施,为企业软件供应链提供一个稳定可信的平台基础安全能力。
其次,技术创新是保障供应链安全的重要手段。阿里云利用人工智能、机密计算等前沿技术,帮助企业监测和预测潜在的安全威胁,提升供应链的整体预警和响应能力。
最后,阿里云倡导普惠和协同的安全理念。阿里云容器服务会同上下游合作伙伴的紧密合作,通过提供灵活可扩展的安全解决方案,建立有关云原生和容器安全最佳实践和安全威胁情报的信息共享和责任共担的机制,在 DevSecOps 理念的指导下构建更完善的供应链安全防护体系。
在未来,阿里云容器服务会在内部践行 DevSecOps 流程的同时,还会通过 ACK 、ACR 、ASM 、云安全中心等服务提供涵盖容器供应链安全流程关键阶段的核心安全产品能力,携手客户共筑供应链安全。
相关文章:

对话|企业如何构建更完善的容器供应链安全防护体系
对话|企业如何构建更完善的容器供应链安全防护体系 云布道师 随着云计算和 DevOps 的兴起,容器技术和自动化成为软件开发中的必要手段,软件供应链也进入了自动化及 CI/CD 阶段。然而,容器技术和自动化虽然提升了软件的更新速度&…...
HTML5 缩放动画(Zoom In/Out)详解
HTML5 缩放动画(Zoom In/Out)详解 缩放动画是一种常见的视觉效果,用于使网页元素逐渐放大或缩小,从而吸引用户的注意力。下面将介绍如何使用 CSS 和 JavaScript 实现这种动画效果。 1. 使用 CSS 实现缩放动画 可以通过 CSS 的 …...

C语言——文件IO 【文件IO和标准IO区别,操作文件IO】open,write,read,dup2,access,stat
1.思维导图 2.练习 1:使用C语言编写一个简易的界面,界面如下 1:标准输出流 2:标准错误流 3:文件流 要求:按1的时候,通过printf输出数据,按2的时候,通过p…...

【C++习题】22.随机链表的复制
文章目录 题目:138. 随机链表的复制 - 力扣(LeetCode)代码: 题目:138. 随机链表的复制 - 力扣(LeetCode) 链接🔗:138. 随机链表的复制 - 力扣(LeetCode&…...

备考蓝桥杯:数据结构概念浅谈
目录 1数据结构的概念 什么是数据结构: 为什么要有数据结构 2.数据结构的三个组成要素 1.逻辑结构 2.存储结构 3.数据运算 3。算法好坏的度量(时间复杂度和空间复杂度) 时间复杂度计算 最优和平均和最差时间复杂度 计算时间复杂度例子 空间复…...

【TI毫米波雷达】DCA1000不使用mmWave Studio的数据采集方法,以及自动化实时数据采集
【TI毫米波雷达】DCA1000不使用mmWave Studio的数据采集方法,以及自动化实时数据采集 mmWave Studio提供的功能完全够用了 不用去纠结用DCA1000低延迟、无GUI传数据 速度最快又保证算力无非就是就是Linux板自己写驱动做串口和UDP 做雷达产品应用也不会采用DCA1000的…...
创建型模式3.建造者模式
创建型模式 工厂方法模式(Factory Method Pattern)抽象工厂模式(Abstract Factory Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)单例模式(Singleto…...

【集成学习】Boosting算法详解
文章目录 1. 集成学习概述2. Boosting算法详解3. Gradient Boosting算法详解3.1 基本思想3.2 公式推导 4. Python实现 1. 集成学习概述 集成学习(Ensemble Learning)是一种通过结合多个模型的预测结果来提高整体预测性能的技术。相比于单个模型…...

【Orca】Orca - Graphlet 和 Orbit 计数算法
Orca(ORbit Counting Algorithm)是一种用于对网络中的小图进行计数的有效算法。它计算网络中每个节点的节点和边缘轨道(4 节点和 5 节点小图)。 orca是一个用于图形网络分析的工具,主要用于计算图中的 graphlets&#…...

58. Three.js案例-创建一个带有红蓝配置的半球光源的场景
58. Three.js案例-创建一个带有红蓝配置的半球光源的场景 实现效果 本案例展示了如何使用Three.js创建一个带有红蓝配置的半球光源的场景,并在其中添加一个旋转的球体。通过设置不同的光照参数,可以观察到球体表面材质的变化。 知识点 WebGLRenderer …...

【Git原理和使用】Git 分支管理(创建、切换、合并、删除、bug分支)
一、理解分支 我们可以把分支理解为一个分身,这个分身是与我们的主身是相互独立的,比如我们的主身在这个月学C,而分身在这个月学java,在一个月以后我们让分身与主身融合,这样主身在一个月内既学会了C,也学…...
义乌购的反爬虫机制怎么应对?
在面对义乌购的反爬虫机制时,可以采取以下几种策略来应对: 1. 使用代理IP 义乌购可能会对频繁访问的IP地址进行限制,因此使用代理IP可以有效地隐藏爬虫的真实IP地址,避免被封禁。可以构建一个代理IP池,每次请求时随机…...

消息中间件面试
RabbitMQ 如何保证消息不丢失 消息重复消费 死信交换机 消息堆积怎么解决 高可用机制 Kafka 如何保证消息不丢失 如何保证消息的顺序性 高可用机制 数据清理机制 实现高性能的设计...

基于CLIP和DINOv2实现图像相似性方面的比较
概述 在人工智能领域,CLIP和DINOv2是计算机视觉领域的两大巨头。CLIP彻底改变了图像理解,而DINOv2为自监督学习带来了新的方法。 在本文中,我们将踏上一段旅程,揭示定义CLIP和DINOv2的优势和微妙之处。我们的目标是发现这些模型…...
利用Python爬虫获取API接口:探索数据的力量
引言 在当今数字化时代,数据已成为企业、研究机构和个人获取信息、洞察趋势和做出决策的重要资源。Python爬虫作为一种高效的数据采集工具,能够帮助我们自动化地从互联网上获取大量的数据。而API接口作为数据获取的重要途径之一,为我们提供了…...

【LeetCode】力扣刷题热题100道(1-5题)附源码 链表 子串 中位数 回文子串(C++)
目录 1.两数之和 2.两数相加-链表 3.无重复字符的最长子串 4.寻找两个正序数组的中位数 5.最长回文子串 1.两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。…...
Docker启动失败 - 解决方案
Docker启动失败 - 解决方案 问题原因解决方案service问题 问题 重启docker失败: toolchainendurance:~$ sudo systemctl restart docker Job for docker.service failed because:the control process exited with error codesee:"systemctl status docker.se…...
【Duilib】 List控件支持多选和获取选择的多条数据
问题 使用Duilib库写的一个UI页面用到了List控件,功能变动想支持选择多行数据。 分析 1、List控件本身支持使用SetMultiSelect接口设置是否多选: void SetMultiSelect(bool bMultiSel);2、List控件本身支持使用GetNextSelItem接口获取选中的下一个索引…...

android系统的一键编译与非一键编译 拆包 刷机方法
1.从远程仓库下载源码 别人已经帮我下载好了在Ubuntu上。并给我权限:chmod -R ow /data/F200/F200-master/ 2.按照readme.txt步骤操作 安装编译环境: sudo apt-get update sudo apt-get install git-core gnupg flex bison gperf build-essential z…...
SQL语言的函数实现
SQL语言的函数实现 引言 随着大数据时代的到来,数据的存储和管理变得越来越复杂。SQL(结构化查询语言)作为关系数据库的标准语言,其重要性不言而喻。在SQL语言中,函数是一个重要的组成部分,可以有效地帮助…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...

Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...

初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...
Java多线程实现之Runnable接口深度解析
Java多线程实现之Runnable接口深度解析 一、Runnable接口概述1.1 接口定义1.2 与Thread类的关系1.3 使用Runnable接口的优势 二、Runnable接口的基本实现方式2.1 传统方式实现Runnable接口2.2 使用匿名内部类实现Runnable接口2.3 使用Lambda表达式实现Runnable接口 三、Runnabl…...
FTXUI::Dom 模块
DOM 模块定义了分层的 FTXUI::Element 树,可用于构建复杂的终端界面,支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...

MLP实战二:MLP 实现图像数字多分类
任务 实战(二):MLP 实现图像多分类 基于 mnist 数据集,建立 mlp 模型,实现 0-9 数字的十分类 task: 1、实现 mnist 数据载入,可视化图形数字; 2、完成数据预处理:图像数据维度转换与…...

华为OD机考- 简单的自动曝光/平均像素
import java.util.Arrays; import java.util.Scanner;public class DemoTest4 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint[] arr Array…...