前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用 Cosign 进行镜像签名和校验

使用 Cosign 进行镜像签名和校验

作者头像
崔秀龙
发布于 2021-04-08 12:13:01
发布于 2021-04-08 12:13:01
2.8K02
代码可运行
举报
文章被收录于专栏:伪架构师伪架构师
运行总次数:2
代码可运行

Kubernetes 的供应链安全需求中,有一个重要的镜像签署和校验的环节,这个环节可以使用 OPA 结合 Notary 的方式来完成。最近 Linux基金会宣布免费 sigstore 签名服务,以确认软件的来源和真实性,在项目网站闲逛时,发现一个叫做 cosign 的子项目,这是个轻量级的选择,让我非常有兴趣,于是就有了本文。

部署

目前这个工具还没有提供二进制发布,需要克隆源代码,并使用 go 1.5 进行构建,具体方法请参阅项目页面。简单说就是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# git clone https://github.com/sigstore/cosign.git
...
# cd cosign
# go build -o cosign ./cmd/cosign
...

这个工具的最基础功能有三个,分别是生成密钥对、镜像签名和校验签名。

生成密钥对

这个功能是很直白的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cosign generate-key-pair
Enter password for private key:
Enter again:
Private key written to cosign.key
Public key written to cosign.pub

执行命令之后,输入密码,就会生成密钥对文件,私钥和公钥分别是 consign.keycosign.pub

签名

可以使用前边生成的密钥对进行签名,例如我的工具镜像:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cosign sign -key cosign.key dustise/sleep:v0.9.6
Enter password for private key:
Pushing signature to: index.docker.io/dustise/sleep:sha256-92dad62e00d08157a3921b7d7b568a247a8b24e8a067ad5dc20b210d7b1c2ad1.cosign

读者需要注意的一点是,这个功能是对仓库中镜像的哈希码生效的,因此签署过程无需本地镜像的参与,cosign 会直接在镜像仓库中获取对应 tag 的 sha256 内容,签署之后生成一个 OCI 镜像推送到该镜像的原有仓库之中,例如前面为 dustise/sleep:v0.9.6 进行签名,就生成了一个 dustise/sleep:sha256-92da.....1c2ad1.cosign 的镜像。如果被签名镜像在本地不存在,在完成操作之后,使用 docker images 命令查看,会发现被签署镜像和签署生成的镜像都不存在于本地。

另外一个就是,因为这里有 Push 操作,因此这个签署过程通常是有登录镜像库的需求的。

校验

校验过程很简单,使用 verify 指令,指定公钥即可,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cosign verify  -key cosign.pub dustise/sleep:v0.9.6
The following checks were performed on each of these signatures:
- The cosign claims were validated
- The signatures were verified against the specified public key
- Any certificates were verified against the Fulcio roots.
...

注意

如果使用 cosign 来进行签署,过程基本上来说还算是愉快的,私钥放置在 CI 之中,而公钥则可以保存在集群里,入门方式可以使用客户端定期扫描;复杂的方式则可以实现一个简单的 admission controller 来根据 Selector 对负载进行校验,同样需要注意的是,cosign 只针对远程(镜像库)进行操作,对本地的同 Tag 替换是没什么防御力的,因此这里还要使用 Always Pull 的策略进行弥补(可以使用 Kyverno 或者 Gatekeeper 来强制实施)。

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

本文分享自 伪架构师 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Harbor v2.5.0引入Cosign
成品(Artifact)签名和签名验证是关键的安全功能,允许你验证成品的完整性。Harbor 通过与Notary[1]和Cosign[2]的集成支持内容信任。
CNCF
2022/04/19
1.6K0
Harbor v2.5.0引入Cosign
Harbor v2.5远程复制:制品的签名如影随形
(本文根据 Harbor 社区经理 Orlin Vasilev 的英文博客改编,感谢 CNCF公众号的初始翻译和 Harbor 维护者团队提供的测试环境。)
Henry Zhang
2022/05/04
1.1K0
Harbor v2.5远程复制:制品的签名如影随形
Harbor v2.5远程复制:制品的签名如影随形
题图摄于美国加州蒙特雷港 (本文根据 Harbor 社区经理 Orlin Vasilev 的英文博客改编,感谢 CNCF公众号的初始翻译和 Harbor 维护者团队提供的测试环境。) 相关信息: 招聘 Harbor 开发工程师 招聘云原生工程师(参见另一篇) 经过社区维护者们的通力合作,Harbor v2.5 于上周发布了,新版本为用户们带来了如下几个重要的新特性。 Cosign 签名的引入,使得制品(镜像等)复制时签名可以同步复制。 提高了并发拉取请求的性能。 改进了垃圾回收功能的容错性,当删除某个
Henry Zhang
2023/04/04
4790
Harbor v2.5远程复制:制品的签名如影随形
云原生时代下的容器镜像安全(上)
Kubernetes 作为云原生的基石,为我们带来了极大的便利性,越来越多的公司也都将 Kubernetes 应用到了生产环境中。然而,在享受其带来的便利性的同时,我们也需要关注其中的一些安全隐患。
Jintao Zhang
2021/12/01
7460
云原生时代下的容器镜像安全(上)
使用sigstore对容器映像进行签名和验证
在本文中,我将cosign项目中的部分以及如何使用它来签名和验证容器映像(以及其他受支持的对象)。的理念 cosign是使签名和验证过程成为 开发人员不可变的基础设施 。
KINGLIFE
2022/01/26
2.3K0
python3 rsa非对称加密与签名校验
本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/python-rsa/
羽翰尘
2019/11/20
2.5K0
K8S 生态周报| Sigstore 正式 GA
本周 KubeCon + CloudNativeCon North America 2022 已经结束,看 timeline 有了一种几乎所有人都去参加的错觉, 大概也是受近几年各类因素的影响,很多人也都没有线下聚会之类的。
Jintao Zhang
2022/12/07
3950
Flux项目谈安全:镜像来源
关于 Flux 项目谈安全的博客系列的下一篇文章将介绍我们如何以及为什么要为 Flux CLI 及其所有控制器镜像使用签名,以及你可以在工作流中做些什么来验证镜像来源。
CNCF
2022/03/28
1.1K0
Flux项目谈安全:镜像来源
linux: gpg签名与验签详解
GPG(GNU Privacy Guard)是一款强大的加密和签名工具,用于确保数据的安全性和完整性。本文总结了在使用GPG进行签名和验签过程中常见的问题及其解决方法,包括如何生成签名、使用密码进行签名、验证签名以及调试和排查卡住问题的方法。
运维开发王义杰
2024/05/29
9950
linux: gpg签名与验签详解
secure boot(三)secure boot的签名和验签方案
FIT 格式支持存储镜像的hash值,并且在加载镜像时会校验hash值。这可以保护镜像免受破坏,但是,它并不能保护镜像不被替换。
嵌入式与Linux那些事
2022/12/01
2.1K0
secure boot(三)secure boot的签名和验签方案
7.4 Git 工具 - 签署工作
Git 虽然是密码级安全的,但它不是万无一失的。 如果你从因特网上的其他人那里拿取工作,并且想要验证提交是不是真正地来自于可信来源,Git 提供了几种通过 GPG 来签署和验证工作的方式。
shaonbean
2019/05/26
4900
ATECC508A芯片开发笔记(七):实现数字签名(Sign)并校验(Verify)证书签名
由网络安全知识我们知道,对数据进行签名,其实就是用私钥加密而已,而验证签名就是用该私钥对应的公钥进行解密。
全栈程序员站长
2022/07/01
7200
ATECC508A芯片开发笔记(七):实现数字签名(Sign)并校验(Verify)证书签名
Linux下基于openssl实现数字签名
发送者将原文件src.txt、公钥文件key.pub和签名文件src.sig传输给接收者,接收者模拟校验操作。
程序员小涛
2020/12/03
4.3K0
Linux下基于openssl实现数字签名
证书、公钥、加密验证
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
艳龙
2021/12/16
1.8K0
证书、公钥、加密验证
写给开发人员的实用密码学 - 数字签名
办理过买房抵押贷款的朋友,应该还记得在贷款合同上不断按手印。这种现实世界的签字画押,一方面是保证合同的文本不会替换,另一方面双方事后都不能否认此次交易(个人方面靠签字和手印,银行方靠公章)。
云水木石
2021/04/01
8280
写给开发人员的实用密码学 - 数字签名
【网络安全】网络防护之旅 - 点燃网络安全战场的数字签名烟火
网络安全是一门关注计算机系统和网络安全的专业学科。其首要任务是维护信息系统的核心价值,包括机密性、完整性和可用性,以对抗未经授权的访问、破坏、篡改或泄露的威胁。
SarPro
2024/02/20
2050
【网络安全】网络防护之旅 - 点燃网络安全战场的数字签名烟火
Docker 的镜像签名
应用上云的过程中,过了部署关和应用改造关之后,安全就是下一个大问题了。对于容器化应用来说,镜像的安全是个非常根本的问题,例如 Harbor 中集成了 Clair 组件,用于对镜像进行漏洞扫描;之前介绍的 Trivy 也能够提供对镜像各层进行扫描的能力,类似的工具还有很多。在完成镜像本身的安全保障之后,一方面要把安全构建出来的镜像能够”原汁原味“的提供给运行时进行使用,同时还要对运行时环境进行约束,只允许获取和运行可靠镜像,如此才能够保证镜像供应链的完整。
崔秀龙
2019/12/18
3.5K0
随笔记录之RSA 盲签名
欧拉函数(Euler's totient function),记作φ(n),是数论中的一个重要函数。
密码学人CipherHUB
2023/08/31
1.6K15
随笔记录之RSA 盲签名
通过Kyverno使用KMS、Cosign和工作负载身份验证容器镜像
随着软件供应链攻击的增加,保护我们的软件供应链变得更加重要。此外,在过去几年中,容器的采用也有所增加。有鉴于此,对容器镜像进行签名以帮助防止供应链攻击的需求日益增长。此外,我们今天使用的大多数容器,即使我们在生产环境中使用它们,也容易受到供应链攻击。在传统的 CI/CD 工作流中,我们构建镜像并将其推入注册中心。供应链安全的一个重要部分是我们构建的镜像的完整性,这意味着我们必须确保我们构建的镜像没有被篡改,这意味着保证我们从注册中心中提取的镜像与我们将要部署到生产系统中的镜像相同。证明镜像没有被篡改的最简单和最好的方法之一(多亏了 Sigstore)是在构建之后立即签名,并在允许它们部署到生产系统之前验证它。这就是 Cosign 和 Kyverno 发挥作用的地方。
CNCF
2022/04/19
5.2K0
数字签名与加密算法-下【mix指南之区块链】
如果把人比作手机,价值观、态度和习惯是这个操作系统底层,领域技能更像是系统上的app。技能不会的话装一个就好,如果大家有好的“app”,可以相互推荐,如果自己没有装这个“app”,也可以借别人的。
mixlab
2019/09/26
1.1K0
数字签名与加密算法-下【mix指南之区块链】
相关推荐
Harbor v2.5.0引入Cosign
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验