摘要:在v1.13.0版本中,KubeEdge项目已达到 SLSAL3等级(包括二进制和容器镜像构件),成为CNCF社区首个达到SLSA L3等级的项目。
本文分享自华为云社区《CNCF社区首个!KubeEdge达到软件供应链SLSA L3等级》,作者:KubeEdge SIG-Security (首发于KubeEdge博客[1])
KubeEdge社区已于2022年7月份完成整个KubeEdge项目的第三方安全审计[2],已发布云原生边缘计算安全威胁分析和防护白皮书,并根据安全威胁模型和安全审计的建议,对KubeEdge软件供应链进行持续安全加固。经过社区的不断努力,我们很兴奋地宣布,在2023年1月18日发布的v1.13.0版本中,KubeEdge项目已达到 SLSA[3] L3等级(包括二进制和容器镜像构件),成为CNCF社区首个达到SLSA L3等级的项目。
软件供应链完整性攻击(对软件包的未经授权的修改)在过去三年中呈上升趋势,KubeEdge实现SLSA L3等级标准后,可以端到端的从源码构建到发布流程进行安全加固,保障用户获取到的二进制或容器镜像产物不被恶意篡改。基于SLSA安全框架,可以潜在地加强软件构件的完整性。SLSA提供端到端的指导原则,可以作为软件的一组防御措施,并防止对组成软件产品的软件包的篡改或任何类型的未经授权的修改。采用SLSA框架可以保护项目软件免受常见的供应链攻击。
什么是SLSA(Supply chain Levels for Software Artifacts软件构件的供应链级别):
Google提出的用于保证整个软件供应链完整性的框架SLSA,是一套基于行业共识的安全准则,也是一个安全框架、一份标准和控制清单,用于防止篡改、提高完整性以及保护项目、业务或企业中的软件包和基础设施。它不是一个单一的工具,而是一个逐步采用的大纲,以防止工件被篡改和被篡改的工件被使用,并在更高层次上强化构成供应链的平台。生产商遵循SLSA准则使他们的软件更加安全,用户则根据软件包的安全状况来做出决策。
截止目前,SLSA标准处于alpha阶段,相关的定义可能会发生变化。
下图描述了软件供应链中已知的攻击点。更多详细描述,可参考https://slsa.dev/ 。
.png)
SLSA框架引入了许多新的工具和概念,例如:
• Artifact(软件制品):由构建流水线生成的任何制品文件,如容器镜像、语言包、编译的二进制文件等;
• Provenance (来源证据链): 构建的元数据包括构建过程、构建源和依赖关系;
• Digest (数字摘要):加密哈希函数的结果,该函数生成唯一标识工件的固定大小值,例如容器镜像的SHA-256哈希;
• Attestation (证书):一个加密签名的文件,记录当时生成软件产物的来源;
• Immutable references(不可变引用-一种标识符):,保证始终指向相同的、不可变的软件制品,如特定的容器图像或语言包;
• Build integrity(构建完整性):验证构建流水线的输出完整性。
KubeEdge项目如何达到SLSA L3
截止目前,SLSA评估等级共分为4个等级L1~L4,安全性由低到高,每个等级有不同的达标要求,详细的达标要求可参考SLSA详细标准(https://slsa.dev/spec/v0.1/requirements )。
在去年7月发布的第三方安全审计报告中,KubeEdge项目在软件供应链SLSA Provenance维度暂未达到L3等级,经过SIG-Security的持续安全加固,在今年1月发布的v1.13.0版本中,KubeEdge项目在所有的SLSA维度中均达到L3等级。以下表格展示了KubeEdge在Source、Build、Provenance、Common中的达标情况(Y表示KubeEdge已达标,空格表示SLSA在该等级下未要求)。
SLSA评估表格及达标情况

本章节将着重介绍KubeEdge如何达成SLSA L3等级在Build、Provenance维度的要求。Build/Provenance Requirements及KubeEdge相应的解决方案如下。
a) 通过脚本构建:所有的构建步骤都是通过脚本自动化执行。
b) 通过构建服务进行构建:所有的构建步骤由构建服务完成,不在开发者本地环境。构建服务如GitHub Actions、第三方云平台提供的构建服务等。
c) 作为源码构建:构建服务执行的构建定义文件和配置文件来源于版本控制系统中的文本文件,并且是可验证的。
d) 构建环境临时性:构建服务确保构建步骤在临时环境中运行,例如容器或VM,仅为此构建提供,而不是复用先前的构建。
e) 构建的隔离性:构建服务确保构建步骤在隔离的环境中运行,不受其他构建实例(无论是先前的还是并发的)的影响。
f) 无用户自定义参数:除了构建入口点和初始源配置之外,构建输出不会受到用户参数的影响。换句话说,构建完全是通过构建脚本定义的,而不是其他。
g) 封闭性:所有可传递的构建步骤、源和依赖项都使用不可变引用预先完全声明,并且构建步骤在没有网络访问的情况下运行。
解决方案:
KubeEdge项目所有的构建流程均在GitHub上由脚本自动化执行,GitHub Actions作为构建服务(相关的定义文件和配置文件保存在.github/workflows目录下),可保障构建过程的可回溯、可验证以及构建环境的临时性、隔离性、构建参数和依赖项不可篡改。
a) 可用性:Provenance通过用户可接受的格式提供。应该满足SLSA Provenance格式,但如果生产商和用户都同意,并且满足所有其他要求,可以使用另一种格式。
b) 可验证:Provenance的真实性和完整性可以由用户验证。这应该通过来自私钥的数字签名来实现,只有生成Provenance的服务才能访问私钥。
c) 通过构建服务生成:Provenance中的数据必须从构建服务中获得。
d) 不可伪造:构建服务的用户不能伪造Provenance。
e) 第三方依赖的完整性:Provenance记录运行构建步骤时可用的所有构建依赖项。包括构建的机器、VM或容器的初始状态。
解决方案:
在KubeEdge版本发布的产物中,包括二进制文件和容器镜像2种格式,通过集成SLSA官方的GitHub构建项目slsa-github-generator来实现SLSA L3等级。
在KubeEdge版本发布的流程(.github/workflows/release.yml)中,集成了slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml和slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml,可保障构建和发布产物(包括二进制文件和容器镜像)的流程满足SLSA L3等级的要求。
更多关于slsa-github-generator的详细说明请见https://github.com/slsa-framework/slsa-github-generator 。
Provenance是构建的元数据包括构建过程、构建源和依赖关系,是软件构建和发布执行流程的一种证明,并且是可以被验证的,包括构建的源码仓库、代码分支、配置文件等信息。在SLSA L3级别,Provenance内容是真实的、防篡改的,并且不会被项目维护者更改。二进制发布产物的Provenance文件随发布软件包一起发布,名称为multiple.intoto.jsonl,容器镜像的Provenance文件随镜像文件一起上传到KubeEdge dockerhub公开仓库中。具体的Provenance格式说明,请参考https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/generic/README.md#provenance-format。
如何校验KubeEdge发布产物是否满足SLSA L3等级
详细步骤描述请见https://github.com/kubeedge/kubeedge/pull/4285 。
校验示例如下:
$ COSIGN_EXPERIMENTAL=1 cosign verify-attestation --type slsaprovenance --policy policy.cue kubeedge/cloudcore:v1.13.0
{
"_type": "https://in-toto.io/Statement/v0.1",
"predicateType": "https://slsa.dev/provenance/v0.2",
"subject": [{
"name": "index.docker.io/kubeedge/cloudcore",
"digest": {
"sha256": "825642e63ab5b924e2fa0661cd14d544d0be151c4bdba6f3f42796c977fbe211"
}
}
],
"predicate": {
"builder": {
"id": "https://github.com/slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@refs/tags/v1.4.0"
},
"buildType": "https://github.com/slsa-framework/slsa-github-generator/container@v1",
"invocation": {
"configSource": {
"uri": "git+https://github.com/kubeedge/kubeedge@refs/tags/v1.13.0",
使用 OpenID Connect (OIDC) 向外部服务 (Sigstore) 证明工作流的身份。OpenID Connect (OIDC) 是身份提供商在网络上使用的标准,用于为第三方证明用户的身份。 GitHub 现在在其工作流程中支持 OIDC。每次运行工作流程时,运行者都可以从 GitHub 的 OIDC 提供商处创建一个唯一的 JWT 令牌。令牌包含工作流身份的可验证信息,包括调用者存储库、提交哈希、触发器以及当前(可重用)工作流路径和引用。
使用 OIDC,工作流向 Sigstore 的 Fulcio 根证书颁发机构证明其身份,后者充当外部验证服务。 Fulcio 签署了一份短期证书,证明运行器中生成的临时签名密钥并将其与工作负载身份相关联。签署出处的记录保存在 Sigstore 的透明日志 Rekor 中。用户可以使用签名证书作为信任方来验证来源是否经过身份验证且不可伪造;它必须是在受信任的构建器中创建的。流程图如下所示。
.png)
值得一提的是,SLSA GitHub generator获得sigstore社区2022年度徽章Best User Adopter。
.png)
SLSA在KubeEdge项目软件供应链安全中发挥着重要作用。基于sigstore社区提供的能力,从源码到发布产物,对软件供应链端到端的整个流程进行签名和校验,确保KubeEdge软件供应链安全。
[1] KubeEdge官网博客:https://kubeedge.io/zh/blog/reach-slsa-l3/
[2] KubeEdge项目第三方安全审计:https://github.com/kubeedge/community/blob/master/sig-security/sig-security-audit/KubeEdge-security-audit-2022.pdf
[3] SLSA官网:https://slsa.dev/
[4] Sigstore官网:https://www.sigstore.dev/
[5] SLSA Generator官网:https://github.com/slsa-framework/slsa-github-generator
[6] SLSA3通用集成指导:https://slsa.dev/blog/2022/08/slsa-github-workflows-generic-ga
[7] 通过防篡改构建提高软件供应链安全性:https://security.googleblog.com/2022/04/improving-software-supply-chain.html
[8] Sigstore 11月综述:https://blog.sigstore.dev/sigstore-november-roundup-8a852cec10fc/

Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功
随着ruby被引入为新的编程救世主,我想知道是否有人基于易用性、运行所需的资源、可用性和易定制性而有偏好。两者有更好的吗? 最佳答案 好吧,任何基于Rails的社交网络应用程序的比较都应该包括insoshi(http://portal.insoshi.com/)。话虽这么说,这三个都非常相似,区别在于实现细节。Lovd和Insoshi都是完整的Rails应用程序;它旨在供您将它们用作入门工具包,并使用您自己的自定义功能对其进行扩展。另一方面,CommunityEngine是一个Rails插件。这意味着您可以更轻松地向现有Rail
网站的日志分析,是seo优化不可忽视的一门功课,但网站越大,每天产生的日志就越大,大站一天都可以产生几个G的网站日志,如果光靠肉眼去分析,那可能看到猴年马月都看不完,因此借助网站日志分析工具去分析网站日志,那将会使网站日志分析工作变得更简单。下面推荐两款网站日志分析软件。第一款:逆火网站日志分析器逆火网站日志分析器是一款功能全面的网站服务器日志分析软件。通过分析网站的日志文件,不仅能够精准的知道网站的访问量、网站的访问来源,网站的广告点击,访客的地区统计,搜索引擎关键字查询等,还能够一次性分析多个网站的日志文件,让你轻松管理网站。逆火网站日志分析器下载地址:https://pan.baidu.
谈到现状,国内的软件测试行情目前呈现了两极分化的极端情况。一个是早期的手工测试人员吐槽工作不好做,即使有工作也是外包,而且薪资太低;一方面是很多互联网企业感叹自动化测试人才难找,有技术的自动化测试工程师,高薪难聘。这两者其实并不矛盾。手工测试工作难找也确实是目前真实的行情早期从事功能测试的手工测试人员,在测试方面大多采用手动、人工执行的方式查找软件缺陷和BUG,用行业术语来描述就是“点点点”。这种测试方式耗费大量人力和资源,工作效率却十分低下。在早期软件复杂和迭代程度不高的情况下,有资本的企业会“供养”一批这样的手工测试人员。但对测试员本身来讲,毫无技术难度的工作,和几乎没有保障的薪资水平,直
我在供应商css文件引用的供应商文件夹下有很多供应商图像。我正在使用Heroku和S3进行生产,像background-image:url("../images/sprite.png");之类的东西正在开发中,但不在生产中,因为图像url指向S3url。它也没有被预编译,所以不确定我是否应该将它作为Assets预编译的一部分,但我想远离它,因为我需要手动将所有图像文件复制到assets/images文件夹并更改css文件中的引用,方法是将其更改为scss和asset_url(这似乎工作正常)有没有办法只从供应商css文件中引用S3url我还使用asset_syncgem上传到S3
其实现在基础的资料和视频到处都是,就是看你有没有认真的去找学习资源了,去哪里学习都是要看你个人靠谱不靠谱,再好的教程和老师,你自己学习不进去也是白搭在正式选择之前,大可以在各种学习网站里面找找学习资源先自己学习一下为什么选择学软件测试?同学们理由众多!大概分这几类:①不受开发语言、行业产品变化限制;②入门更简单,对零基础、女生都友好;③软件项目都需要测试人员,职业生涯稳;④学习周期短,但薪资并不低。要想“肩扛”一条线?需掌握三大技能:技能1:掌握测试流程,熟悉系统框架能提前与开发人员一起制定测试计划,通过测试左移,推动代码评审,代码审计,单元测试,自动化冒烟测试,来保证研发阶段的质量。技能2:
2022年伊始,默安科技联合数世咨询举办以“软件供应链安全的时与势”为主题的访谈活动,由数世咨询创始人李少鹏主持,邀请贝壳安全研发负责人李文鹏、北京邮电大学副教授张文博、默安科技副总裁沈锡镛三位行业大咖做客网安小酒馆,从产业、企业、学术的不同维度,共同探讨软件供应链安全建设的新思路,为业界呈现了一场开年网安盛宴。随着全球软件供应链安全事件频发,软件供应链安全逐渐成为业界关注焦点,也成为影响国家重要信息系统安全与关键信息基础设施安全的重要因素,以及网络安全保障体系和能力建设的重要环节。嘉宾们围绕软件供应链安全发展的主要驱动力、关基行业中的实施现状和落地难点、产学研成果转化、软件供应链安全的重要性
今天,我将尽可能地设置我的测试环境和工作流程。我正在向对Ruby测试充满热情和精通的你们寻求有关如何设置测试环境的实用建议。到一天结束时(太平洋标准时间早上6点?)我希望能够:键入一个1-command来为我在Github上找到的任何项目运行测试套件。为任何Github项目运行autotest,这样我就可以fork并做出可测试的贡献。使用Autotest和Shoulda从头开始构建gem。Foronereasonoranother,IhardlyeverruntestsforprojectsIclonefromGithub.Themajorreasonisbecauseunless
我创建了一个带有供应商目录的gem,其中包含来自bootstrap-sass的样式表和javascripts并自行引导。目录结构为bootstrap-sass-gem/vendor/assets/javascripts和bootstrap-sass-gem/供应商/Assets/样式表我在测试项目中需要gem,但每当我尝试从该gem中请求某些东西时,我都会收到Sprockets::FileNotFound错误。例如,我在application.css中添加了*=requirebootstrap。bootstrap位于bootstrap-sass-gem/vendor/assets/st
项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信校园跑腿小程序系统,前台用户使用小程序发布跑腿任何和接跑腿任务,后台管理使用基于PHP+MySql的B/S架构;通过后台管理跑腿的用户、查看跑腿信息和对应订单。意义:手机网络时代,大学生通过手机网购日常用品、外卖外卖、代取快递等已不再是稀奇的事情。此外,不少高校还流行着校园有偿工作,校园跑腿就成了大学生创业服务项目。 因为你在校园里,所以不会有进入的限制。并不是所有的外卖平台都可以随意进入校园,比如小黄和小蓝的双打外卖平台。许多大学禁止送餐进入学校,更不用说送餐进入宿舍了。这一措施使得校园服务市场的竞争相对不