Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一文读懂制品管理:从理论规范,实践应用到供应链安全

一文读懂制品管理:从理论规范,实践应用到供应链安全

作者头像
DevOps在路上
发布于 2024-01-11 05:43:03
发布于 2024-01-11 05:43:03
1.2K0
举报
文章被收录于专栏:DevOps实践之路DevOps实践之路

什么是制品?

「制品」是指由源码编译打包生成的二进制文件,不同的开发语言对应着不同格式的二进制文件;这些二进制文件通常用于运行在服务器上或者作为编译依赖,“制品的管理”是配置管理的重要组成部分。

通常,这些组件是各种文件的存档,包括:类文件中的Java字节码、C对象文件、文本文件、二进制文件。组件的多种格式,例如:Java JAR,WAR,EAR格式;普通ZIP或.tar.gz文件;其他软件包格式,例如NuGet软件包,Ruby gems,NPM软件包;可执行文件格式,例如.exe 或.sh 文件,Android APK文件,各种安装程序格式。

「按照使用场景,制品大致分为三类」

  1. 外部引入的第三方组件
  2. 产品内部依赖包,公共SDK
  3. 产品交付安装包

「按照开发语言,制品类型包含以下类型:」

  • Generic File 指的是通用文件类型的制品。
  • Docker
  • Maven
  • npm
  • PyPI
  • Helm
  • Composer
  • NuGet
  • Conan

为什么要制品管理?

  1. 外部依赖下载慢
  • 影响研发构建速度
  1. 版本管理混乱 (svn,ftp)
  • 交付包使用FTP或者SVN进行管理,管理粒度相对较粗;在这种粗放式的制品管理方式下,不同类型包的存储与获取是一件头疼的事情,版本追踪极其混乱,团队协作也是障碍重重。
  • 由于受到监管约束,一键部署是不可能任务,跨网段的包交付智能依赖于手工拷贝
  1. 安全漏洞风险
  • 依赖组件越多,引入漏洞的风险也越高
  • 第三方依赖包下载管理混乱,没有准入管控
  • 漏洞藏的越深,修复漏洞所花费的时间就越长
  1. 制品存储风险
  • 团队内部搭建的制品库是单点的,缺乏集群部署
  1. 资源浪费
  • 因为没有统一的制品库,存在重复建设的问题;维护成本高,或者说目前根本就没有维护

制品和CI/CD流水线

对于CI/CD流水线而言,制品起到一个「承上启下」的关键作用,它是持续集成CI的终点,同时也是持续交付CD的起点。

如果缺乏有效的制品管理策略和工具,根本不可能建立高效的流水线;脱离制品管理,每次只能重新从代码开始构建,对于任何企业组织是不可接受的,同时也不符合“一次构建,多次使用”的原则。

在整个研发过程中,制品对于测试人员和运维人员至关重要,他们关注的是怎么拿到需要的版本进行测试和部署,如果缺乏有效的制品管理,整个DevOps价值流就会出现衔接上的问题。你可能会碰到这种情况,测试同学会通过各种方式去询问那个版本可以测试,包在哪里等情况。

包的元数据

何为包的元数据?别人给你一个包,你怎么知道包里包含了哪些需求缺陷变更,包含了哪些代码提交,还有包的md5,hash等信息。这些信息对于测试人员「追踪问题的引入,后续改进,版本回归」至关重要,通俗点说,弄清楚制品的前世今生。

那么这些信息哪里来?当然是持续构建CI流水线,需求,代码提交都可以通过CI流水线收集。如果你的组织购买过Jfrog的产品,会发现这个特点在它的平台上尤为突出。

制品的晋级

「」在开发实践中,大多数团队会准备DEV, TEST, UAT, RELEASE等不同的环境,相应的建设不同的流水线,将制品部署到不同的环境前都会对制品进行不同的测试,所里这里也衍生出来了制品的晋级,就是给制品设置不同的准入门禁。

综上所述,制品和CI/CD流水线有着紧密的联系,不可分割,在设计流水线时候要考虑好制品的使用场景。

制品管理工具

如上所述,由于制品管理的重要性,所以衍生出来对应的制品解决方案用来统一管理不同格式的软件制品。除了基本的存储功能,还提供了版本控制、访问控制、安全扫描、依赖分析等重要功能,最终建立“单一可信源”,是一种企业处理软件开发过程中产生的所有包类型的标准化方式。

目前主市场上主流的制品管理工具主要有以下几种:

Nexus

Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。Nexus 使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过m2eclipse与Eclipse集成使用。Nexus支持WebDAV与LDAP安全身份认证。

Nexus是少有的支持几乎所有主流制品格式,并且提供免费版的制品管理产品,这也是大多数中小公司的选择,可以满足大部分业务场景,但是,免费版不提供高可用方案。价格参考:https://www.sonatype.com/products/pricing?topnav=true

由于Nexus在国内没有代理商,所以大家对它的认知还有限,其实Nexus仅仅是sonatype产品解决方案的一种,提供对软件研发周期的制品管理方案。

Jfrog Artifactory

Jfrog是一家以色列公司,专注于制品管理环境,提供商用的解决方案,所以它的产品是要花钱的。

下图列出了Jfrog Artifactory和Nexus的产品特点对比,仅供参考。既然是掏钱买的,肯定比免费的Nexus提供的支持和服务更多,包括高可用,组件的漏洞风险分析,多地分发等等。不是说Nexus不行,而是我们大家用的大部分都是Nexus的免费版,其实它的收费版也提供类似的方案。

Harbor

Harbor是VMware公司「开源」的企业级Docker Registry项目,其目标是帮助用户迅速搭建一个企业级的Docker registry服务。

基于官方 Registry V2 实现,提供了管理UI,基于角色的访问控制(Role Based AccessControl),AD/LDAP集成、以及审计日志(Auditlogging) 等企业用户需求的功能,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution。

Harbor目前已经成为私有Docker/Helm管理的主要工具,相比于Nexus, Harbor在docker镜像的管理方面更有优势,提供镜像同步服务,支持团队项目隔离。在实践过程中,笔者发现Nexus在docker镜像的团队隔离方面上,存在一些问题。

WePack

WePack是腾讯Coding基于之前的DevOps拆分出来的单独的制品管理服务,支持私有化部署。也许也是看到单独的制品管理工具,比大而全的DevOps平台更好的切入用户场景吧。

如何管理制品?

为了统一管理不同语言格式的包,以上制品管理工具几乎都按照如下方式管理组织制品。

制品库的层级关系为:仓库 > 包 > 版本,每个层级描述如下:

  • 仓库:用于管理不同类型的仓库和仓库下的包资源,可以设置仓库对外的访问权限。
  • 包:构建产物对外提供访问的基础单元,用于介绍当前构建产物的用途和使用指引。
  • 版本:列出某个包下的所有构建产物,详细记录了每次构建产物的版本迭代更新变化。

规范制品库命名

如果团队比较单一,对制品管理的要求不高,按照以上方式基本可以满足需求。但是,如果建设公司级别的需要规范一些命名,如下所示

制品版本号规范化

制品的版本号用于标记特定制品,通过规范化命名有助于自动化脚本的编写和流水线的复用。

制品库权限规范化

不管是基于开源工具,还是自研工具,基于制品仓库的权限设计也是必要的,做到团队产品的隔离。

开源制品的安全风险

对于制品的管理,大多人数都停留在仅仅是存储,拉取使用的想法,笔者今年前也是这种思维。2021年末的Log4j2的安全事件,引起了整个IT圈的轩然大波,这个开源组件几乎涉及所有的java应用,每个公司不得不紧急排查自己产品是否引入该风险。

通过该事件,让我们开始关注开源组件可能存在的风险,这也是目前比较热门的研发过程中的“供应链安全”,也是DevSecOps其中重要的一个环节。

作为研发过程中的制品管理,引入阶段的审核机制,使用中的安全,越来越成为大家关注的热点。如果所示,组织需要引入组件审核制度,杜绝开发人员随意的拉取互联网的开源制品,并且建立实时的漏洞扫描机制,形成组织级的白名单仓库。

SBOM-软件物料清单

现代软件主要是使用第三方和开源组件组装而成的,它们以复杂而独特的方式融合在一起,并与原始代码集成以实现所需的功能。除了通过在开源组件引入阶段加入安全审核机制,IT企业往往也需要关注自己开发或使用的软件产品的组成,像我们在超市购买食品时在食品包装上看到的食品配料清单,标注了所用的所有材料。

为了准确摸清软件所含组件的情况,SBOM(即:Software Bill Of Materials)应运而生,其包括多种关键信息,如:组件名称、版本号、供应商等,这些关键信息在分析软件安全时发挥着关键作用。通过这些信息,可以追溯软件的原始供应链,极大提高开发者对其所用软件安全风险的理解,帮助企业在网络安全风险分析、漏洞管理和应急响应过程中提高效率。

对软件开发企业而言,SBOM可有效控制开源组件风险,帮助企业更早识别并消除开源组件安全缺陷和许可风险;对软件采购企业而言,SBOM可帮助采购决策者轻松了解开发方软件是否存在开源组件风险;对软件开发人员而言,SBOM可帮助开发人员全面准确掌握其所研发软件的开源组件情况。

总结

  • 制品管理是DevOps实践过程中的重要环节,起着承上启下,收集过程信息的重要角色;
  • 于此同时,制品的引入使用会存在安全风险,组织需要关注这一点,避免类似Log4j2安全事件带来的一系列风险;
  • 作为实践者,在制品的管理上需要结合组织和流水线需要,制定相应的规范,避免混乱;
  • 好的制品管理流程,可减少开发自测和测试人员进行接收测试衔接过程中的低效沟通;

这里仅仅是对制品管理做了全局的梳理,后续会对其中具体的知识点进行详细介绍。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps在路上 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一文解答DevOps平台的制品库是什么
不同开发语言的源码编译构建打包的二进制文件,例如Java JAR,WAR,EAR格式;Android AAR格式;其他软件包格式,例如NuGet软件包,Ruby gems,NPM软件包;Docker镜像和Helm charts;普通ZIP或.tar.gz、dmg等压缩文件;可执行文件格式,例如.exe 或.sh 文件,以及Android APK、Apple IPA等各种安装程序格式。
嘉为蓝鲸
2022/08/03
2.2K0
一文解答DevOps平台的制品库是什么
软件持续交付速度提升 40%!DevOps 制品管理有何魔力?
作者 | 张雅文 近年来,混合云、多云正逐步成为企业用云的主流模式。据 IBM 的调查报告显示,仅截至 2021 年,采用混合云、多云战略的企业就已经接近 80%。混合云、多云战略的确能够增加企业资源配置的灵活性,但也给持续交付带来了更大的挑战。在软件发布频率持续增长趋势下,如何将版本快速分发到多个环境中去,成为令不少开发者头疼的问题。 近日,亚马逊云科技联合 JFrog 举行 《DevOps 实践:混合云模式下软件单一可信源的建设方法》为主题的 Tech Talk,JFrog (中国)技术总监王青与大家
深度学习与Python
2023/03/29
1.2K0
软件持续交付速度提升 40%!DevOps 制品管理有何魔力?
DevOps平台中的制品库是什么?有什么用处?
在DevOps实践中,制品库可以说是至关重要的组件。一个可靠的制品库在DevOps流程中往往可以帮助企业解决许多安全和版本管控方面的问题。
嘉为蓝鲸
2022/08/03
1.8K0
DevOps平台中的制品库是什么?有什么用处?
为何软件研发过程中需要使用制品库?
首先开发同学在编程时,并非全部代码都需要自己来编写,这就导致了开发团队在开发构建阶段需要使用大量来自于外部的依赖组件。如果没有制品库去构建企业唯一的可信源,那么将无法保障众多开发团队所使用的组件来源是否都合法、安全和可信。一旦引入问题组件,对于企业业务的打击将是巨大的。
嘉为蓝鲸
2022/09/27
1.3K0
为何软件研发过程中需要使用制品库?
WePack —— 助力企业渐进式 DevOps 转型
大家好,我是 CODING 高级产品经理俞典。DevOps 对于大家而言应该已经不是一个陌生的概念,它为研发团队带来了更快的交付速度、响应变化和更好的团队协作方式,帮助企业实现几天到几周内交付和部署软件。在 DevOps 流程中,大家可能更容易关注到代码、流水线、测试、发布等工具带来的效能升级,那么我们在构建什么、测试应用的来源是什么、发布什么?——这三个问题的答案都是「制品包」。
腾讯云 CODING
2021/12/08
8500
WePack —— 助力企业渐进式 DevOps 转型
农行 DevOps 实践:制品库对 DevOps 三大流水线的支撑
DevOps 可以提升开发和运维团队间的协作,并且通过自动化和可重复的方式将代码更快地部署到生产。有助于加快组织交付应用和服务的速度。对产品交付、测试、功能开发和维护起到了意义深远的影响。
DevOps时代
2021/05/31
3.1K0
CapitalOne - 千亿资产银行如何进行唯一可信源的建设?(金融企业必看)
Capital one创立于1988年,最早是弗吉尼亚州Signet银行的信用卡部门;1994年,Signet将信用卡部门独立出来并在纽交所上市,于1995年更名为Capital One。自上市以来,Capital One的股价一路走高,成长为美国第五大零售银行和第八大银行。
JFrog杰蛙科技
2020/07/15
1.3K0
CapitalOne - 千亿资产银行如何进行唯一可信源的建设?(金融企业必看)
八月更新 | CI 构建计划触发机制升级、制品扫描 SBOM 分析功能上线!
这个八月,腾讯云 CODING DevOps 对持续集成、制品管理、项目协同、平台权限等多个产品模块进行了升级改进,为用户提供更灵活便捷的使用体验。以下是 CODING 新功能速递,快来看看是否有您期待已久的功能特性:
腾讯云 CODING
2023/08/24
2760
八月更新 | CI 构建计划触发机制升级、制品扫描 SBOM 分析功能上线!
Jenkins2 学习系列16 -- 制品管理
制品是软件开发过程中产生的多种有形副产品之一,个人理解,比如前端build后产生的dist静态资源文件,安卓打包生成的apk文件,这些产物都可以认为是制品。 制品的使用可以非常简单。 比如下面的流水线Job。 第一步拉代码,仓库中存在一个名为Dockerfile的文件。 第二步把文件存为制品。
mafeifan
2019/08/05
1.4K0
Jenkins2 学习系列16 -- 制品管理
​打通 DevOps 任督二脉 ,CODING 2.0 制品库全新上线
CODING 在近期的 KubeCon 2019 大会上发布了 CODING 2.0,同时发布了最新功能——制品库。CODING 不断完善 DevOps 工具链,旨在持续提升研发组织软件交付的速度与质量。
腾讯云 CODING
2019/07/04
2K0
​打通 DevOps 任督二脉 ,CODING 2.0 制品库全新上线
国内某大型银行的持续集成与交付实践
随着架构的不断演进以及微服务技术在我行的深入应用,应用部署发布的复杂性大大增加,简单的代码配置管理模式、人工的版本记录及手工部署等发布操作和管理的模式,效率低、操作风险较大,因此急需从整体上提升我行软件持续交付的能力,降低应用部署发布的操作风险。
JFrog杰蛙科技
2020/01/07
9760
国内某大型银行的持续集成与交付实践
混沌初开,DevOps落地从哪个实践开始会更合适?我选择制品管理
DevOps相关的管理实践和工程实践有很多,从精益看板,版本控制,流水线,TDD,代码检查,部署发布等等,对于混沌初开的组织,从哪里开始呢?
DevOps在路上
2024/03/21
1700
混沌初开,DevOps落地从哪个实践开始会更合适?我选择制品管理
DevOps方法论掌握这四点,实践出真知!
在研发产品之前,我们都需要先了解客户的需求。常见的需求理论模型有三种,可基于不同业务和产品复杂度的需求层次结构进行选择。
嘉为蓝鲸
2022/04/24
1.2K0
DevOps方法论掌握这四点,实践出真知!
企业供应链安全的思考与实践(二)
技术工具在企业采购中属于小众需求,或不被企业重视的采购需求,在国内多数企业依靠员工自行解决相关的工具需要,除了供应链的安全风险,技术工具还会引起知识产权纠纷,比如:企业收到某某产品公司发来的律师函,称企业内部有使用盗版产品。随着知识产权意识的提高以及相关法律风险的提高,越来越多企业开始统一采购技术工具或产品,比如IDA Pro、Burp Suite、XShell、Windows、Office等等。
FB客服
2022/11/14
6820
企业供应链安全的思考与实践(二)
避坑,不要看:CIS 软件供应链安全指南
Argon(现在是 Aqua Security 的一部分)曾经联系 CIS(Center for Internete Security),建议为软件供应链安全开发一种 CIS 基线。多年以来,CIS 开发并发布了很多安全配置指南,但是软件供应链安全方面还是一个空白。现代软件开发过程中会涉及大量的平台和技术,软件供应链安全的工作范围应该有多大?如何保证基线能够在多种平台中保持一致?
崔秀龙
2022/11/23
1.1K0
避坑,不要看:CIS 软件供应链安全指南
【DevOps系列】升级你的制品:探讨制品晋级的战略
我们知道,在DevOps模式下或CI/CD流水线中,制品管理起着承上启下的关键作用,它对这些制品进行统一的管理。所以说,制品对持续集成而言是终点,同时也会是持续发布或者持续运营的起点。对可部署的制品,运维团队可以基于制品包发起部署操作,并拉取相应环境下的服务;对于需要进入市场的发布包,运营团队可以基于制品包,分发至不同的市场渠道。制品在整个研发过程中,如图1中所示的流程来发挥其应有的作用。
嘉为蓝鲸
2024/12/12
1950
【DevOps系列】升级你的制品:探讨制品晋级的战略
你的DevOps中有完善的持续交付体系么?
DevOps已经成为软件开发领域一个炙手可热的名词。敏捷开发、持续交付、CI/CD,K8s…这些主流的开发理念、工具无一例外都与DevOps有着很强的联系。这种环境影响下,传统的运维团队均开始向DevOps进行转型。一时之间运维开发、SRE、工程效能工程师需求量大增,无论公司大小,都会开始着手DevOps的从0到1的建设。我们开始搭建工具链、部署流水线、集成自动化测试工具、开发自动化发布系统……一切的一切都是为了完善我们自动化体系,从而提高开发效率,优化产品质量。
JFrog杰蛙科技
2019/12/30
5050
Helm, 在Kubernetes中部署应用的利器
Kubernetes(k8s)是一个基于容器技术的分布式架构领先方案。它在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。
JFrog杰蛙科技
2020/01/03
9850
Helm, 在Kubernetes中部署应用的利器
软件供应链安全如此重要,但为什么难以解决?
软件供应链安全如今已经成了一个世界性难题。从2021年底Apache Log4j“核弹级”风险爆发,时至今日影响仍然存在,保障软件供应链安全已成为业界关注焦点。
科技云报道
2023/09/04
4600
软件供应链安全如此重要,但为什么难以解决?
5步实现规模化的Kubernetes CI/CD 流水线
在近几年,Kubernetes迅速成为了容器编排的事实上的开源标准。与虚拟机不同,Kubernetes在抽象化基础架构的同时可靠地大规模编排容器,这可以帮助开发人员将工作负载与基础架构的复杂性分开。Kubernetes是CI/CD自动化的理想选择,因为它提供了许多内置功能,这些功能使应用程序部署实现标准化和可重用,提高了开发人员的生产力,并加快了云原生应用程序的采用。
JFrog杰蛙科技
2019/12/23
2.1K0
5步实现规模化的Kubernetes CI/CD 流水线
推荐阅读
相关推荐
一文解答DevOps平台的制品库是什么
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档