云客户?
免费开始>
在MyJFrog >中升级
云有什么新>





概述

签名管道特性是确定哪个管道/步骤生成特定工件的验证系统。它为用户提供了一种方法,以确保在通过CI/CD工作流提升这些工件之前,他们的工件没有被篡改。签名过程创建信任,并提供一种方法验证工件的不可变性和包的真实性。这意味着,如果文物的真实性无法验证,他们可以阻塞。

此外,签名管道特性构建全面的元数据,称为pipeinfo。这为每个步骤和运行提供了完整的可见性和审计,可以在UI中查看。

  • 签名管道特性仅在Enterprise+许可证下可用。
  • 在这个版本中,签名管道特性仅适用于buildinfo和Go二进制文件。
  • 默认情况下启用了签名管道特性。若要禁用此功能,请使用核心业务配置章节。管道系统YAML,设置signedPipelinesEnabled标记为

页面内容


签名过程

在管道的签名过程中:

  • 管道的每次运行都会生成一个运行键。
  • 在运行期间,所有工件(pipeInfo.json)均以私钥签署。
  • 私钥在运行结束时被丢弃。
  • 生成工件的运行的元数据存储为工件的标记。
  • 在验证阶段,使用公钥对签名进行验证。

对于每次运行,包含全面元数据(*.json)的文件和相应的签名文件(*.json.sig)被上传到Artifactory。这提供了一种跟踪管道的整个路径的方法。现在,除了交叉引用pipeInfo之外,任何需要验证的进程都可以验证这一点。


Pipe-Info库

管道信息存储库,如Build-Info库,是每个项目创建的本地存储库,并存储每个管道的所有元数据。

每当pipeline上传一个新的构建到Artifactory时,它的pipeinfo json文件就会自动部署到默认文件中artifactory-pipe-info存储库或< project_key > -pipe-info存储库。不属于任何项目的管道构件存储在artifactory-pipe-info属于特定项目的存储库和管道构件存储在< project_key > -pipe-info存储库。

查看pipe-info存储库

要查看管道信息存储库,请从应用程序模块,点击Artifactory |工件然后点击artifactory-pipe-info/< project_key >-pipe-info存储库。

Artifactory使用以下结构自动将json文件放在管道信息存储库中:[pipeline-name]→[branch]→[run-rumber]→[pipe-info文件]

JSON模式定义了一个pipeinfo对象。对象由三个组件组成,它们总结了一次运行:

  • head.json:包含管道的元数据,以及管道yaml文件的内容。
  • info.json:运行状态元数据。
  • 一步. json:该步骤的元数据。

每一个. json文件使用相应的.json.sig签名文件。如果要查看json文件的内容,右键单击json文件,单击视图,如上图所示。

使用人工管道信息存储库

  • 在默认情况下,将自动创建并使用人工管道信息存储库。删除它将导致存储库中的所有管道信息被删除,并将重新创建一个新的默认管道信息存储库。
  • 只有管理员和项目管理员才能查看和导航此存储库。

清理政策

如果您有在Artifactory User Plugins中定义的现有清理策略,可以根据策略从本地存储库中删除工件,那么它们也会影响到Artifactory -pipe-info存储库,并且应该相应地更新。从清理策略中排除此存储库,以确保管道信息文件不会被删除。


查看元数据

当您成功构建管道时,该管道的构件和构建的元数据将显示在相应的存储库中Artifactory

| .工艺品| | projects | <版本>n导航并单击其中一个文件。这将显示管道选项卡,其中显示创建工件的运行的元数据。

管道选项卡只在单击文件时出现。

类似地,转到Artifactory |构建| | 然后点击管道选项卡,它显示了构建的元数据。

查看pipeinfo.json

一个pipeInfo.json在Project/Pipeline命名空间下为每次运行生成文件。该文件捕获管道特定步骤的元数据,以及每个运行的详细物料清单(BOM)。管道信息包括名称、版本、类型、状态、时间戳、输入、输出、节点池等信息。该信息保存在运行状态在执行期间。运行完成后,将json文件上传到适当的存储库。

浏览pipeinfo.json文件,将鼠标指针悬停在管道上,然后单击显示管道信息显示的图标。的内容pipeinfo.json文件显示在json查看器中。

导航到步骤

将鼠标指针悬停在管道和c上舔的转到步骤显示的图标。这将引导您进入特定管道的特定运行的步骤视图我的管道


存储和验证签名管道数据

本机的步骤

管道本机步骤自动存储有关其构建的构件的信息,以便稍后将其用作已签名管道验证的一部分。

这些步骤的PowerShell版本不支持签名管道特性。

以下本机步骤可以保存工件信息:

以下本机步骤可以验证已发布的工件:

通用的步骤

也可以只使用Bash步骤创建自己的签名管道。要实现这一点,请使用以下在执行时可用的实用程序函数来配置需要跟踪和验证的内容。

如果工件保存在一个Bash步骤中,则可以在后面的Bash步骤中对其进行验证。

YAML例子

为Bash签名的管道
2022世界杯阿根廷预选赛赛程资源:—name: signed_git类型:GitRepo配置:scmProvider: bbs路径:~test/myapp分支:包括:^master$—name: signed_buildinfo类型:BuildInfo配置:sourceArtifactory: my_art管道:—name: test_signed_start步骤:—name: create_info类型:Bash配置:inputResources:—name: signed_git集成:—name: my_art outputResources:—name: signed_buildinfo执行:onExecute:- cd $res_signed_git_resourcePath - jfrog rt upload server.js - jfrog rt build-collect-environment - jfrog rt build-publish——detail -summary $JFROG_CLI_BUILD_NAME $JFROG_CLI_BUILD_NUMBER > summaryOutput. js- save_artifact_info buildInfo summaryOutput. jsonjson——build-name=$JFROG_CLI_BUILD_NAME——build-number=$JFROG_CLI_BUILD_NUMBER -name: test_signed_stop步骤:-name: validate_info类型:Bash配置:inputResources: -name: signed_b2022世界杯阿根廷预选赛赛程uildinfo执行:onExecute: - response=$(validate_artifact buildInfo——build-name ${res_signed_buildinfo_buildName}——build-number ${res_signed_buildinfo_buildNumber}) - validateResult=$(echo "$response" | jq '.result') - if ["$validateResult" != "true"];然后返回"failed validation" &&退出1;fi
  • 没有标签
版权所有©2022 JFrog Ltd.