使用 Sigstore 签名的 Elastic Stack 容器镜像!

news2024/11/16 9:20:41

作者:Maxime Greau

软件供应链攻击不断增加。 这就是为什么这个主题是安全领导者的首要任务。

在这方面,这篇博文重点介绍了使用 Sigstore 对 Elastic Stack 容器镜像进行签名的新功能,以便:

  • 保护 Elastic 软件供应链工作流程
  • 为 Elastic 用户提供一种简单且标准的方法,在将 Elastic 容器映像部署到任何基础设施之前验证其来源,从而防止供应链攻击
  • 满足监管和合规要求

什么是 Sigstore?

Sigstore 是一个 OpenSSF 项目,得到 Chainguard、Red Hat 和 Google 等公司的支持,利用无密钥签名工作流程等功能,为轻松签名、验证和保护软件提供了新标准。 弹性图像使用 cosign 进行签名,这是 Sigstore 项目的一部分。 Cosign 支持 OCI 注册表中的容器签名、验证和存储。

哪些 Elastic Stack 版本是使用 Sigstore 签名的?

Elastic 早在 2016 年就开始发布 ELK 容器镜像 5.0。 2023 年 5 月,8.8.0 引入了第一个签名的 Elastic Stack 容器映像。

确保镜像已被 Elastic 签名就像安装 cosign 应用程序并执行以下命令一样简单:

$ cosign verify --key https://artifacts.elastic.co/cosign.pub \
                  docker.elastic.co/elasticsearch/elasticsearch:8.8.1

该命令以 JSON 格式打印检查结果和签名负载:

Verification for docker.elastic.co/elasticsearch/elasticsearch:8.8.1 --
The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - Existence of the claims in the transparency log was verified offline
  - The signatures were verified against the specified public key
[
  {
    "critical": {
      "identity": {
        "docker-reference": "docker.elastic.co/elasticsearch/elasticsearch"
      },
      "image": {
        "docker-manifest-digest": "sha256:27cb808b1029ac75718a12ac16f2c09b0cda6469146b6039fd3573fc2f0711d3"
      },
      "type": "cosign container image signature"
    },
    "optional": {
      "Bundle": {
        "SignedEntryTimestamp": "MEUCIQDSDY3XrFURA5DO5fJ36WZfKf1ejaPlASgLn6tMXEHlDwIgKQPXXgNOasuXOSRRjeNdl0L028n/Yx3yMETYWNxthzg=",
        "Payload": {
          "body": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIwNWNhZDk4MmYxMDQ3OTk0OGY3Zjk5NDQyNGEwNWQ5ZDZkZDM5ZDAyZWJmMzNjY2QzMTVlNDUwNmJkOGE4NzY2In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJRkVWZGFJRWcyR1RVQ0l3RkhYeHdxd0kyZGtlazZMbjFXTEFvcHowM0hQMEFpRUE2ZnpDaHpuLy96cGZqYUtCSG1adkgvREhuZzRHMVlKMGltbUNZL20zUWFvPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCUVZVSk1TVU1nUzBWWkxTMHRMUzBLVFVacmQwVjNXVWhMYjFwSmVtb3dRMEZSV1VsTGIxcEplbW93UkVGUlkwUlJaMEZGY1ZaMlRtUlJkR1JrZEdWdGRtWmpWV1V5VGpCbloxZ3ZjSFJxYVFwRlZYRjRlakp3UkZVM1ZWYzFiVE53WkcxSU1UTnJUVXR3ZURselJqUjJWVFZLVDJVM1ZYSXJSazVJVERkaFlXaE1hbWRIWXpBNGRXUkJQVDBLTFMwdExTMUZUa1FnVUZWQ1RFbERJRXRGV1MwdExTMHRDZz09In19fX0=",
          "integratedTime": 1686211821,
          "logIndex": 23111241,
          "logID": "c0d23d6ad406973f9559f3ba2d1ca01f84147d8ffc5b8445c224f98b9591801d"
        }
      },
      "tag": "8.8.1"
    }
  }
]

请注意:我们在对镜像进行签名时(例如 8.8.1)确实设置了发布版本的标签属性,以便于验证命令。

使用镜像摘要(digest)验证签名

建议通过其摘要值拉取和引用容器镜像作为最佳实践,该摘要值在技术上是不可变的,与镜像标签相反(即使我们确实在内部将标签视为不可变)。

使用 crane 工具与远程注册表和图像交互,可以轻松获取任何镜像的摘要值,而无需拉取它:

$ crane digest docker.elastic.co/elasticsearch/elasticsearch:8.8.1
sha256:27cb808b1029ac75718a12ac16f2c09b0cda6469146b6039fd3573fc2f0711d3

然后,通过摘要验证签名很简单,如下所示:

$ cosign verify --key https://artifacts.elastic.co/cosign.pub \
                  docker.elastic.co/elasticsearch/elasticsearch@sha256:27cb808b1029ac75718a12ac16f2c09b0cda6469146b6039fd3573fc2f0711d3

Elastic 容器注册表支持

我们的 Elastic 容器注册表可在 docker.elastic.co 上获取; 它是符合 OCI 标准的注册表,因此与 cosign 兼容。 但我们必须更新容器库 UI,使其与 cosign 签名格式兼容。 提醒一下,cosign 获取图像的 SHA256 校验和,并将签名作为标签以以下格式推送到注册表:sha256-<sha256_checksum_of_image>.<sig>。 这些标签对 UI 是隐藏的。

查看这篇博客文章,了解有关即将推出的 OCI v1.1 规范以及将解决此 .sig 标签解决方法的联合签名支持的更多信息。

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

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

相关文章

java面试Day14

1.如何使用 Redis 实现一个排行榜&#xff1f; Redis实现排行榜是Redis中一个很常见的场景&#xff0c;主要使用的是ZSet进行实现&#xff0c;下面是为什么选用ZSet&#xff1a; 有序性&#xff1a;排行榜肯定需要实现一个排序的功能&#xff0c;在Redis中有序的数据结构有List…

Tauri:跨平台探索之旅

一、简介 Tauri 是一个跨平台 GUI 框架&#xff0c;与 Electron 的思想基本类似。都是属于跨平台技术的解决方案 优缺点快速分析 我们一般会把tauri作为 Electron 的替代方案&#xff0c;electron优点咱们不看&#xff0c;这里就提两个electron比较明显的问题&#xff1a; 安装…

高考志愿填报的个人看法,希望能对你有所启发

各省高考成绩已出&#xff0c;又到一年高考季。张雪峰提到&#xff1a;“普通家庭不要光谈理想&#xff0c;也要谈落地。”志愿怎样填报、选专业还是选学校、什么专业好就业、高考志愿主要看什么&#xff1f; 作为一名过来人&#xff0c;今天就站在小部分群体的角度来聊聊&…

自动化测试常见的三大问题及解决方案

各位小伙伴们&#xff0c;大家好&#xff0c;今天给大家带来的是关于自动化测试常见的三大问题及解决方案&#xff0c;希望给遇到这三大问题的你一些帮助 一&#xff0c;就是我们定位元素的时候&#xff0c;定位不到或有时定位得到&#xff0c;有时定位不到。 特别是喜欢复制…

策略模式(Strategy)

定义 策略是一种行为设计模式&#xff0c;它能让你定义一系列算法&#xff0c;并将每种算法分别放入独立的类中&#xff0c;以使算法的对象能够相互替换。 前言 1. 问题 你打算为游客们创建一款导游程序。该程序的核心功能是提供美观的地图&#xff0c;以帮助用户在任何城市…

数据结构 手撕顺序表(动态版)+代码详解

⭐️ 顺序表介绍 顺序表是线性表的一种。 &#x1f320;什么是线性表呢&#xff1f; 线性表是数据结构的一种&#xff0c;一个线性表是 n n n个具有相同特性的数据元素的有限序列。常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串… &#x1f320;什么是顺序表呢&…

Docker + Wasm = 王炸!!!

Docker 宣布推出与 WebAssembly 集成 (DockerWasm) 的首个技术预览版&#xff0c;并表示公司已加入字节码联盟 (Bytecode Alliance)&#xff0c;成为投票成员。 Bytecode Alliance&#xff08;字节码联盟&#xff09;由 Mozilla、Fastly、Intel 与 Red Hat 联合成立&#xff0c…

Redis的优化(二)

Redis的高可用 一、主从复制优化主从复制的作用主从复制流程主从复制实验 二、Redis 哨兵模式哨兵模式的作用故障转移机制主节点的选举原则哨兵模式的实验 三、Redis群集模式集群的作用Redis集群的数据分片搭建Redis群集模式实验 ●主从复制&#xff1a;主从复制是高可用Redis的…

路由协议基本术语

文章目录 1、自治系统AS2、EGP和IGP3、度量标准和度量值4、管理距离5、路由协议与路由算法6、路由环路问题 1、自治系统AS Internet中&#xff0c;自治系统就是处于同一个管理机构&#xff08;如一个ISP&#xff09;控制下的路由器和网络群组 在同一个自治系统中的所有路由器…

Python3 标准库概览 | 菜鸟教程(十八)

目录 一、Python3 标准库中的模块 &#xff08;一&#xff09;os 模块 &#xff08;二&#xff09;sys 模块 &#xff08;三&#xff09;time 模块 &#xff08;四&#xff09;datetime 模块 &#xff08;五&#xff09;random 模块 &#xff08;六&#xff09;math 模块…

RabbitMQ笔记(持续更新中~)

1.消息队列 1.1 MQ的相关概念 1.1.1 什么是MQ MQ&#xff08;message queue&#xff09;&#xff0c;从字面上看&#xff0c;本质是个队列&#xff0c;FIFO先进先出&#xff0c;只不过队列中存放的内容是消息而已&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游…

Pandas之Series(一)

Hi&#x1f60a;&#x1f60a;~大家好呀~最近两天釉色酱在学习python中的数据分析的一个基本库——pandas。今天就先学习pandas中最基本的数据结构Series。下面我们一起进入Series的世界吧&#xff01;&#x1f61d; Pandas简介&#xff1a; Pandas是一种基于Python语言的快速…

sklearn.model_selection模块介绍

数据集划分方法 train_test_split train_test_split(*arrays, test_sizeNone, train_sizeNone, random_stateNone, shuffleTrue, stratifyNone)参数包括&#xff1a; test_size&#xff1a;可选参数&#xff0c;表示测试集的大小。可以是一个表示比例的浮点数&#xff08;例…

Android:ViewPager2

简介 ViewPager2内部使用RecyclerView实现&#xff0c;并提供了增强功能 特性 支持水平、垂直方向布局 android:orientation “vertical” 支持从右到左 android:layoutDirection “rtl” 禁止滑动 setUserInputEnabled() 可修改Fragment集合 对可修改的Fragment集合进行分…

深入探究Bean生命周期的扩展点:Bean Post Processor

概要 在Spring框架中&#xff0c;Bean生命周期的管理是非常重要的一部分。在Bean的创建、初始化和销毁过程中&#xff0c;Spring提供了一系列的扩展点&#xff0c;使开发者能够在不破坏原有功能的基础上&#xff0c;对Bean的生命周期进行定制化操作。其中&#xff0c;Bean Post…

LLM记录202304-202306

RLHF RAFT RAFT: Reward rAnked FineTuning for Generative Foundation Model Alignment code RRHF RRHF: Rank Responses to Align Language Models with Human Feedback without tears code p i = ∑ t lo

English Learning - L3 作业打卡 Lesson7 Day53 2023.6.28 周三

English Learning - L3 作业打卡 Lesson7 Day53 2023.6.28 周三 引言&#x1f349;句1: It was this moment that I asked myself that life-defining question:成分划分同化连读爆破语调 &#x1f349;句2: If my life were a book and I were the author, how would I want t…

基于Web的小学学科数字教学资源管理系统

摘要 小学学科数字教学资源管理是一个典型的学习项目&#xff0c;从教学资源、教材信息的统计和分析&#xff0c;在过程中会产生大量的、各种各样的数据。本文以小学学科数字教学资源管理系统为目标&#xff0c;采用B/S模式&#xff0c;以Springboot为开发框架&#xff0c;java…

计算机网络面经之TCP三次握手和四次挥手的详解

常见问题 1.详细描述三次握手和四次挥手的过程。 2.三次握手可以变成两次握手吗&#xff1f; 3.简述 TCP 连接和关闭的状态转移。 4.简述TCP 四次挥手的 TIME_WAIT状态&#xff0c;以及为什么需要有这个状态 重要的字段定义与作用 &#xff08;1&#xff09;序号(sequence nu…

循环双链表

目录 双向循环链表结构体初始化函数添加数据头插删除数据显示函数示例程序一(简易版本)&#xff1a;运行结果&#xff1a;示例程序二输出结果&#xff1a; 双向循环链表 结构图示&#xff1a; 结构体 typedef struct node {int data;struct node* pre; //指向前驱struct …