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

这篇具有很好参考价值的文章主要介绍了【笔记】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: SHA512

apiVersion: 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文章来源地址https://www.toymoban.com/news/detail-800090.html

到了这里,关于【笔记】Helm-3 主题-5 Helm来源和完整性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql索引--普通索引,唯一索引,主键索引,参照完整性约束,数据完整性约束

    -- 方法1:create index -- 对employee表的员工部门号列创建普通索引depart_ind -- create index depart_ind on employees(员工部门号); -- 对employee表的姓名和地址列创建复合索引ad_ind; -- create index ad_ind on employees(姓名,地址); -- 对departments表的部门名称列创建唯一索引un_ind; -- create unique index un_ind

    2023年04月21日
    浏览(45)
  • 5.1 实体完整性

    第5章 数据库完整性笔记 定义 : 完整性 :确保数据的正确性和相容性。 正确性 :数据与现实世界语义相符、反映实际状况。 相容性 :同一对象在数据库的不同关系表中数据逻辑上是一致的。 示例 : 学号唯一性。 性别限定为男或女。 本科学生年龄为14-50之间的整数。 学

    2024年02月06日
    浏览(45)
  • 2.4数据完整性验证

    1.数据完整性概述 数据完整性指数据不会被非授权更改或破坏,如篡改、删除、插入等 主要类型:带恢复的连接完整性、不带恢复的连接完整性、选择字段连接完整性、无连接完整性、选择字段无连接完整性 主要实现技术:基于密码技术的完整性保护和基于非密码技术的完

    2024年02月08日
    浏览(55)
  • 数据安全—数据完整性校验

    1、数据安全保障三要素即 保密性 完整性、可用性 机密性:要求数据不被他人轻易获取,需要进行数据加密。 完整性:要求数据不被他人随意修改,需要进行签名技术 可用性:要求服务不被他人恶意攻击,需要进行数据校验 2、为保证数据完整性如下图所示 1)将要提交的参

    2024年02月09日
    浏览(51)
  • mac m1关闭sip系统完整性保护csrutil disable,如何禁用mac m1的系统完整性保护

    mac安装软件会出现: 请与开发者联系,以确定“MinitabExpress可以配合此macoS版本使 用 显示: 表示设置成功,重启后生效

    2024年02月10日
    浏览(49)
  • 信号完整性相关基础知识

    一、GHz传输链路信号损耗的特征,高频和低频分量信号损耗问题 • 1. 信号沿 FR4 传播,两种有功损耗 : 导体损耗和介质损耗两种损耗的高频衰减大于低频衰减。当信号传播 4in 长时, 8GHz 以上高频分量的功率衰减量大于 50 %,而对低频分量的影响却小得多。 • 2.FR4 板上 4i

    2024年02月08日
    浏览(41)
  • 5.4 完整性约束命名子句

      定义 : 完整性约束是在 CREATE TABLE 语句中定义的。 SQL为 CREATE TABLE 语句提供了 CONSTRAINT 子句,用于对完整性约束进行命名。 命名的目的是方便增加或删除约束。 基本结构 : 其中,完整性约束条件可以是NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK等。 示例 : 学生登记表 Student

    2024年02月06日
    浏览(44)
  • 二级MySQL(四)——完整性约束

    一种规则,限制存储的数据 保证数据库中数据的正确,有效和完整 分类: 非空——得有值——NOT NULL 唯一——唯一的,不重复——UNIQUE 主键——非空且唯一——PRIMARY KEY 默认——给出默认值——DEFAULT 检查——保证某个条件——CHECK 外键——两张表的连接——FOREIGN KEY 主键

    2024年02月11日
    浏览(45)
  • 信号完整性分析学习--17--反射

            上一节重点介绍了传输线的阻抗的概念,这是分析传输线的基础,也是信号完整性的基础。这一节重点介绍最重要的传输线效应--反射,以及如何消除反射的影响。         上一节的最后,讲到输入阻抗概念的时候,我们已经知道负载端阻抗与传输线的阻抗的

    2024年02月07日
    浏览(49)
  • MySQL数据库完整性

    数据库的完整性是指数据的正确性和相容性。 数据的正确性是指数据符合现实世界语义,反映当前实际情况;数据的相容性是指数据库在同一对象的不同关系表中的数据是符合逻辑的。 数据的完整性:为了防止数据库中存在不和语义的数据 数据的安全性:为了保护数据库防

    2024年02月15日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包