【笔记】Helm-3 主题-5 Helm来源和完整性

Helm来源和完整性

Helm有一个来源工具帮助chart用户检测包的完整性和来源。使用基于PKI,GnuPG及流行包管理器的行业标准工具,Helm可以生成和检测签名文件。

概述

完整性是通过比较chart的出处记录来建立的。出处记录存储在出处文件,和打包好的chart放在一起。比如,如果有个名为myapp-1.2.3.tgz的chart,则它的出处文件是myapp-1.2.3.tgz.prov。

出处文件会在打包时生成(helm package --sign...),并可以通过多重命名检查,尤其是helm install --verify。

工作流

这部分描述有效使用源数据的潜在工作流。

前置条件:

1、合法的二进制格式(非ASCII包裹)的PGP密钥对

2、helm命令行工具

3、GnuPG命令行工具(可选)

4、Keybase命令行工具(可选)

注意:如果您的PGP私钥有密码,系统将提示您为所有支持 --sign选项的命令输入密码。

创建新的chart与之前一样:

$ helm create mychart

$ helm create mychart
Creating mychart

一旦准备好打包了,使用helm package命令时添加 --sign 参数,并且指定一已知的字符串key和包含相对应私钥的密钥环:

$ helm package --sign --key 'John Smith' --keyring path/to/keyring.secret mychart

$ helm package --sign --key 'John Smith' --keyring path/to/keyring.secret mychart

注意:--key参数的值必须是对应key的uid(在gpg --list-keys输出列表中)的字符串,比如名字或者email。指纹码不能使用。

提示:针对GunPG用户,您的私钥的keyring在~/.gnupg/secring.gpg。您可以使用gpg --list-secret-keys列出您需要的key。

警告:GnuPG v2版在默认位置~/.gnupg/pubring.kbx使用了新格式kbx存储私钥的keyring。使用以下命令将您的keyring转换到传统的gpg格式:

$ gpg --export >~/.gnupg/pubring.gpg

$ gpg --export-secret-keys >~/.gnupg/secring.gpg

$ gpg --export >~/.gnupg/pubring.gpg
$ gpg --export-secret-keys >~/.gnupg/secring.gpg

此时,您应该同时看到了mychart-0.1.0.tgz和mychart-0.1.0.tgz.prov。这两个文件最终都会被上传到对应的chart仓库。

您可以使用helm verify验证chart:

$ helm verify mychart-0.1.0.tgz

$ helm verify mychart-0.1.0.tgz

失败的验证如下:

$ helm verify topchart-0.1.0.tgz

$ helm verify topchart-0.1.0.tgz
Error: sha256 sum does not match for topchart-0.1.0.tgz: "sha256:1939fbf7c1023d2f6b865d137bbb600e0c42061c3235528b1e8c82f4450c12a7" != "sha256:5a391a90de56778dd3274e47d789a2c84e0e106e1a37ef8cfa51fd60ac9e623a"

在安装时同时验证,使用--verify参数。

$ helm install --generate-name --verify mychart-0.1.0.tgz

$ helm install --generate-name --verify mychart-0.1.0.tgz

如果keyring包含的与签名chart关联的公钥不在默认位置,需要在打包helm package时使用--keyring PATH指定keyring的path。

如果验证失败,chart的安装会在渲染前终止。

使用Keybase.io证书

Keybase.io 服务使得建立加密身份的信任链变得很容易。

Keybase

前置条件:

1、配置Keybase.io账户

2、本地已安装GnuPG

3、本地已安装keybase CLI

对包签名

第一步是将keybase密钥导入本地的GnuPG的密钥环keyring:

$ keybase pgp export -s | gpg --import

这会将您的Keybasee密钥转成OpenPGP格式,然后将其导入本地的~/.gnupg/secring.gpg文件

可以运行gpg --list-secret-keys 进行双重检测。

$ gpg --list-secret-keys

$ gpg --list-secret-keys
/Users/mattbutcher/.gnupg/secring.gpg
-------------------------------------
sec   2048R/1FC18762 2016-07-25
uid                  technosophos (keybase.io/technosophos) <technosophos@keybase.io>
ssb   2048R/D125E546 2016-07-25

注意您的密钥会有一个表示字符串:

technosophos (keybase.io/technosophos) <technosophos@keybase.io>

这个是密钥的全名。

然后,可以使用helm package打包和签名。确保在--key参数中使用名称的一部分。

$ helm package --sign --key technosophos --keyring ~/.gnupg/secring.gpg mychart

$ helm package --sign --key technosophos --keyring ~/.gnupg/secring.gpg mychart

package命令会生成一个.tgz文件和一个.tgz.prov文件。

验证包

您可以使用类似的方法验证被其他Keybase密钥签名的chart。

比如您要验证使用keybase.io/technosophos签名的包,可使用keybase工具:

$ keybase follow technosophos

$ keybase gpg pull

上面第一个命令追踪了用户technosophos。然后使用keybase gpg pull下载您追踪的所有账户的OpenPGP密钥,并把他们放置在GnuPG密钥环中(~/.gnupg/pubring.gpg)。

此时,就可以使用helm verify 或者其他带--verify的命令:

$ helm verify somechart-1.2.3.tgz

chart无法验证的原因

一般失败的原因有这些:

1、The .prov file is missiong or corrupt.说明有配置错误或者原有维护者没有创建源文件。

2、The key used to sign the file is not in your keyring.说明这个签名chart的密钥不是您已经注明为信任的密钥。

3、The verification of the .prov file failed.这说明chart或者源数据有错误。

4、The file hashes in the provenance file do not match the hash of the archive file.表明chart包已经被篡改。

如果验证失败,就有理由不信任该包。

来源文件

来源文件包含chart的YAML文件加上一些验证信息。来源文件会自动生成。

会添加下列源数据:

1、chart文件(Chart.yaml)让人和工具都可以看到chart中的内容。

2、chart包(.tgz文件)签名(SHA256,就像Docker),可以用来验证额chart包的完整性。

3、使用了OpenGPG算法签名所有内容(查看 Keybase.io ,一种使签名和验证更简单的新式方法)。

Keybase

这些内容的结合给予了用户以下保证:

1、包本身不会被篡改(.tgz包的校验和)。

2、发布包的人是可知的(通过GnuPG/PGP签名)。

文件格式类似这样:

Hash: SHA512apiVersion: v2
appVersion: "1.16.0"
description: Sample chart
name: mychart
type: application
version: 0.1.0...
files:mychart-0.1.0.tgz: sha256:d31d2f08b885ec696c37c7f7ef106709aaf5e8575b6d3dc5d52112ed29a9cb92
-----BEGIN PGP SIGNATURE-----wsBcBAEBCgAQBQJdy0ReCRCEO7+YH8GHYgAAfhUIADx3pHHLLINv0MFkiEYpX/Kd
nvHFBNps7hXqSocsg0a9Fi1LRAc3OpVh3knjPfHNGOy8+xOdhbqpdnB+5ty8YopI
mYMWp6cP/Mwpkt7/gP1ecWFMevicbaFH5AmJCBihBaKJE4R1IX49/wTIaLKiWkv2
cR64bmZruQPSW83UTNULtdD7kuTZXeAdTMjAK0NECsCz9/eK5AFggP4CDf7r2zNi
hZsNrzloIlBZlGGns6mUOTO42J/+JojnOLIhI3Psd0HBD2bTlsm/rSfty4yZUs7D
qtgooNdohoyGSzR5oapd7fEvauRQswJxOA0m0V+u9/eyLR0+JcYB8Udi1prnWf8=
=aHfz
-----END PGP SIGNATURE-----

注意YAML部分包含了两个文档,(用...\n分隔)。第一个文档是Chart.yaml内容。第二个是文件内容打包时文件名的SHA256校验和。

签名是标准的PGP,用于 防篡改。

David Ross -- PGP -- Digital Signatures

Chart仓库

Chart仓库是一个Helm chart的集合。

Chart仓库必须要保证通过指定的http请求提供源文件,同时要确保使用同样URL路径的chart是可用的。

比如,如果包的基础URL是https://example.com/charts/mychart-1.2.3.tgz,则若是存在的源文件地址https://example.com/charts/mychart-1.2.3.tgz.prov必需能访问。

从终端用户的角度来看,helm install --verify myrepo/mychart-1.2.3应该同时下载chart和源文件,且不需要额外的用户配置或操作。

建立权威和真实性

当处理信任链系统时,建立签名者的权威变得非常重要。或者简单来说,上面的系统实际上取决于您信任的签名chart的人。也就意味着您需要信任签名者的公钥。

Helm的一个设计决策是Helm项目不会将自己作为必须的一方插入到信任链中。我们不想针对所有的chart签名者成为“证书颁发机构”,而是更喜欢分布式模型,这是我们选择OpenPGP作为我们的基础技术的原因之一。所以在建立权威的问题上,在chart 2中或多或少没有定义这一步(会在接下来的Helm 3中决定)。

当然,对于使用源系统感兴趣的人,我们有一些提示和建议:

Keybase平台为可靠信息提供了一个公共的中心化的仓库。

Keybase

1、您可以使用Keybase存储您的key或者获取其他人的公钥。

2、Keybase还有非常好的文档

3、我们还没有测试的时候,Keybas的“安全站点”特性可以提供Helm chart。

4、基础想法是一个官方“chart审核人”使用他(她)的私钥签名,然后上传源文件到chart仓库。

5、该想法的一些做法是在仓库的index.yaml文件中列出一些合法的密钥。

————————————

仅用于本人学习

来源:Helm | Docs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/626419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

汽车研发测试大全

车研发中需要做的试验&#xff0c;这些试验都是保证我们的车能安全、稳定、可靠行驶的必要条件。主要包含以下内容&#xff1a; 一、整车试验项目 1.1整车可靠性试验 1.2 NVH试验 1.3 HVAC试验 1.4 EMC试验 1.5 化学分析试验 1.6 整车道路性能试验 二、零部件试验项目 …

什么是NTFS格式文件系统?Tuxera NTFS for Mac2024下载步骤

一般磁盘格式分为&#xff1a;FAT、FAT32、NTFS&#xff0c;这几种格式目前是我们最常遇到的文件系统格式&#xff0c;其中现在遇到最多的就是NTFS格式&#xff0c;为更好地了解这类文件系统格式&#xff0c;小编今天专门介绍一下什么是NTFS格式文件系统以及它的特点和局限性。…

git提交文本或者word到git教程,git创建仓库时候自带

简易的命令行入门教程: Git 全局设置: git config --global user.name “XX” git config --global user.email “XXXqq.com” 创建 git 仓库: mkdir test cd test git init touch README.md git add README.md git commit -m “first commit” git remote add origin https:…

eclipse ADT安装及abap cds模版创建

文章目录 1.前提2.安装3.创建cds模版 abap cds 常用语法 https://blog.csdn.net/weixin_49198221/article/details/135531478?spm1001.2014.3001.5501 1.前提 需要了解版本关系: **1.eclipse:**2023-06 (4.28), 2023-09 (4.29), 2023-12 (4.30) 2.Windows: ​ 1.Windows …

基本BGP配置试验 :配置 IBGP 和 EBGP

一、预习&#xff1a; BGP&#xff1a;Border Gateway Protocol 没有精妙的算法&#xff0c;但能承载大量的路由&#xff0c;它不生产路由&#xff0c;它是路由的搬运工 使用TCP做为传输层协议&#xff0c;端口号179&#xff0c;使用触发式路由更新 1. BGP路由…

LiveGBS流媒体平台GB/T28181功能-基础配置接入控制白名单黑名单配置控制设备安全接入设备单独配置接入密码

LiveGBS基础配置接入控制白名单黑名单配置控制设备安全接入设备单独配置接入密码 1、白名单配置应用场景2、接入控制2.1、白名单2.2、黑名单 3、搭建GB28181视频直播平台 1、白名单配置应用场景 LiveGBS国标流媒体服务&#xff0c;支持白名单配置。 可在设备注册前&#xff0…

SV-8004VP 网络对讲求助话筒,4个自定义按键

SV-8004VP网络对讲求助话筒&#xff0c;4个自定义按键 SV-8004VP是一款4按键求助对讲话筒&#xff0c;具有10/100M以太网接口&#xff0c;支持G.711音频编解码&#xff0c;其接收SIP网络的音频数据&#xff0c;实时解码播放&#xff0c;还配置了麦克风输入和扬声器输出。 SV-…

红日靶场2 指免杀360 个人学习记录

360安全卫士&#xff0c;有一说一&#xff0c;确实很强&#xff0c;这几天研究的MSF利用java反序列化的漏洞是无法利用的&#xff0c;其他方法也瘦小甚微 前几天在研究用 用免杀工具 go-shellcode-loader-main免杀工具对我们生成的木马进行加密 本来是用csa4.0黑客工具生成了…

中国互联网的早期形态

1 大约是从 1991 年开始&#xff0c;国内开始了第一个 BBS 站——北京长城站&#xff0c;经过长时间发展&#xff0c;直到 1995 年&#xff0c;随着计算机及其外设的大幅降价&#xff0c;BBS 才逐渐被部分人们所认识。少数玩 BBS 站的“极客”站长&#xff0c; 基于个人关系&am…

伪装目标检测模型论文阅读之:Zoom in and out

论文链接&#xff1a;https://arxiv.org/abs/2203.02688 代码;https://github.com/lartpang/zoomnet 1.摘要 最近提出的遮挡对象检测&#xff08;COD&#xff09;试图分割视觉上与其周围环境融合的对象&#xff0c;这在现实场景中是非常复杂和困难的。除了与它们的背景具有高…

多线程——定时器

定时器在日常开发中常用到的组件工具&#xff0c;类似于“闹钟” 设定一个时间&#xff0c;到了时间定时器就会自动去执行某个逻辑 Java标准库&#xff0c;也提供了定时器的实现 Timer timer new Timer( ); 代码演示&#xff1a; public class Test14 {public static void m…

第二证券:旅游股大涨 “预热”春节黄金周

在淄博烧烤热、哈尔滨冰雪热火爆出圈后&#xff0c;希望能接住文旅下一波“泼天富贵”的各地文旅局各出奇招并“卷”出新高度&#xff0c;被各地网友谈论“杀疯了”。 其间&#xff0c;A股游览概念股迎来一波集体上涨&#xff0c;成为不少出资者的重视热点&#xff0c;而行将到…

模拟日光AR汽车HUD的光学特性太阳光模拟器

AR HUD 的光学特性 几何光学可描述物体、透镜和成像之间的关系。将物体放在透镜及其焦点之间将会形成放大且离实际物体有一定距离的虚像[4]。这便是 HUD 生成虚像的方法。源物体&#xff08;在这里是散射屏或 TFT 面板&#xff09;在 HUD 反光镜光学系统的焦距内。这使相应虚像…

test0116测试

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 磁盘满的本质分析 专栏&#xff1a;《Linux从小白到大神》 | 系统学习Linux开发、VIM/GCC/GDB/Make工具…

网络安全ctf比赛/学习资源整理,【解题工具、比赛时间、解题思路、实战靶场、学习路线】推荐收藏!

对于想学习或者参加CTF比赛的朋友来说&#xff0c;CTF工具、练习靶场必不可少&#xff0c;今天给大家分享自己收藏的CTF资源&#xff0c;希望能对各位有所帮助。 CTF在线工具 首先给大家推荐我自己常用的3个CTF在线工具网站&#xff0c;内容齐全&#xff0c;收藏备用。 1、C…

Androidmanifest文件加固和对抗

前言 恶意软件为了不让我们很容易反编译一个apk&#xff0c;会对androidmanifest文件进行魔改加固&#xff0c;本文探索androidmanifest加固的常见手法以及对抗方法。这里提供一个恶意样本的androidmanifest.xml文件&#xff0c;我们学完之后可以动手实践。 1、Androidmanife…

2. goLand安装及外配置参数通用用法

目录 概述测试代码解决外配置参数结束 概述 选择版本安装 go 安装的版本 1.go安装及相关配置 goLand 对于 习惯 idea 系列使用的人&#xff0c;还是很友好的。 测试代码 package mainimport ("flag""fmt""os" )func main() {name : flag.St…

Jenkins之pipeline

安装插件 Pipeline Pipeline: Stage View Plugin 创建任务 配置 demo 开始实践 拉取git仓库代码 checkout scmGit(branches: [[name: */main]], extensions: [], userRemoteConfigs: [[url: http://178.119.30.133:8929/root/mytest.git]])通过SonarQube做质量检测 sh …

RabbitMQ交换机(2)-Direct

1.Direct 直连(路由)交换机,生产者将消息发送到交换机&#xff0c;并指定消息的Routing Key&#xff08;路由键&#xff09;。交换机会将Routing Key与队列绑定进行匹配&#xff0c;如果匹配成功&#xff0c;则将该消息路由到对应的队列中。如果没有匹配成功&#xff0c;该消息…

Python不同数据对象的空值校验

更多Python学习内容&#xff1a;ipengtao.com 空值校验在数据处理和应用程序开发中是一个非常重要的任务。Python提供了多种方式来检查不同数据对象&#xff08;如字符串、列表、字典、集合等&#xff09;是否为空或包含空值。本文将详细介绍Python中对不同数据对象进行空值校验…