不同开发语言的源码编译构建打包的二进制文件,例如Java JAR,WAR,EAR格式;Android AAR格式;其他软件包格式,例如NuGet软件包,Ruby gems,NPM软件包;Docker镜像和Helm charts;普通ZIP或.tar.gz、dmg等压缩文件;可执行文件格式,例如.exe 或.sh 文件,以及Android APK、Apple IPA等各种安装程序格式。
使用场景上,分为三类:
存放流水线构建的通用文件类型的仓库,以及部署时拉取文件的仓库,如:
① Generic——例如普通ZIP或.tar.gz、dmg等压缩文件;
② 可执行文件格式,例如.exe 或.sh 文件,
③ Android APK、Apple IPA等各种安装程序格式
通过k8s 服务部署应用时,需要从镜像仓库拉取镜像,如:
① Docker,Docker镜像
② Helm,Helm charts
各种开发语言的依赖包管理仓库,通常会搭建nexus私服来通过代理拉取各个中央仓库的开源依赖包,也叫三方包;由企业公共组件开发团队或合作公司提供的依赖包或SDK,也叫二方包,如:
Maven——Java JAR,WAR,EAR格式;Android AAR格式(包含Gradle、Ivy方式)
NPM——NodeJS包
PyPI——Python包
Go——golang包
Composer——PHP包
NuGet——.NET包
RPM——rpm和yum包
Conan——C/C++语言的包
CocoaPods——iOS包
其中maven和npm是当前使用比较多的类型,还有其他类型语言的依赖包管理仓库,这里就不一一列举了。
再来看看DevOps以及DevSecOps的理念和研发过程,就可以看到到制品库在其中起到的重任。DevOps将开发、测试、运维拉到同一战线,使产品持续开发、持续集成、持续测试、持续部署、持续监控,非常频繁地发布新版本。
DevSecOps是一种遵循DevOps的思想,并将安全无缝集成到其中的研发模式。在国内,央国企、泛金融、运营商、通信、互联网等头部行业,已经开始在实践DevSecOps。
安全隐患明显:第三方依赖包下载管理混乱,缺乏安全漏洞扫描和安全准入设置,极易引入漏洞,造成生产事故。
制品管理混乱:对不同类型制品缺乏统一管理平台,冗余制品无法及时清理造成资源管理混乱。
无法溯源管理:缺乏对开发、构建、测试和部署等制品全生命周期的过程管控,无法历史溯源。
服务中断风险:缺少高可用时,存在因故障引起服务中断的风险,影响研发和运维工作。
gt31">运维成本高昂:缺乏集群部署,存在重复建设的问题,维护成本高,且无法进行多地区节点的制品同步分发。
一个合格的制品库,除了要支持常用的制品类型的存储功能以外,还必须提供仓库代理、版本管理、访问控制、安全扫描、依赖分析、制品同步等重要功能,是一种企业处理软件开发过程中产生的所有包类型的标准化方式。实现对制品全生命周期的流程、风险、权限和质量等多维度管控,支撑企业在开发、构建、测试和部署等阶段对制品的管理和使用,可以大幅提升软件工程的管控与效能。
1)Nexus
大多数中小研发团队会选择sonatype的nexus,免费版无高可用,可以满足大部分基础业务场景
2)Harbor
VMware公司开源的镜像仓库,支持Docker和Helm仓库
3)Jfrog Artifactory
一家在美上市的以色列公司,提供制品库商用解决方案,按年订阅付费
4)核心推荐:嘉为蓝鲸CPack
嘉为蓝鲸CPack制品管理平台是一款企业级制品管理解决方案,基于国产自研技术体系,致力于为企业打造现代化制品管理能力。
① 多类型制品支持:支持Generic、Maven、NPM、PYPI、Docker、Helm等多种常见类型,支撑多种不同语言的研发团队使用
② 制品统一管理:提供代理功能,通过设置多个代理源实现本地仓库、私有仓库和中央仓库的制品统一管理,打造企业唯一可信源。
③ 制品溯源追踪:基于制品元数据和准入准出规则,进行制品晋级,以制品维度记录从需求到发布的过程数据,实现需求、编码、构建、测试、质量和部署全生命周期过程的强管控,实现可信追溯与安全审计。
④ 制品安全扫描:提供自定义扫描计划和质量规则,满足企业对开源组件的漏洞安全和许可证合规性方面的检测管控要求。
⑤ 保障服务稳定:支持集群部署和健康监控,为企业提供稳定的性能服务。
⑥ 降低运维成本:多地数据中心集群方式部署,支持横向多节点扩展,以灵活的同步策略应对高并发下载场景。
补充:
1)嘉为蓝鲸CPack使用场景
1. 单环境:私服依赖仓库+项目隔离的制品仓库+制品晋级+部署发布
2. 多地中心:CI流水线+多节点制品库+同步分发+应用发布自动化+部署
3. 私服依赖库:DMZ隔离区+多级代理
2)其他制品推荐:对制品管理以及软件供应链管理有兴趣的同学,还可以去了解:
2021年5月,美国政府发布行政令,要求供应商提供SBOM
2022年4月,Docker Desktop v4.7.0更新中,增加一个新插件用-sbom命令生成docker镜像的SBOM
2022年6月,中国信通院主办“软件供应链安全论坛”,发布了国内首本《软件物料清单(SBOM)安全应用白皮书》
2022年7月,微软开源了内部的SBOM 生成工具Salus
2)Google SLSA 框架(Supply-chain Levels for Software Artifacts 软件构件的供应链级别)
3)软件成分安全分析SCA(Software Compostition Analysis)
4)依赖包漏洞扫描工具Dependency-Check
5)容器镜像漏洞扫描工具Trivy
6)许可证扫描工具scancode toolkit