sigstore/gh-action-sigstore-python

GitHub: sigstore/gh-action-sigstore-python

基于 Sigstore 的 GitHub Action,实现 CI/CD 流程中零密钥、透明化的软件工件自动签名。

Stars: 64 | Forks: 14

# gh-action-sigstore-python [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/c084725713201555.svg)](https://github.com/sigstore/gh-action-sigstore-python/actions/workflows/ci.yml) [![自测](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/3ae3d16ff5201556.svg)](https://github.com/sigstore/gh-action-sigstore-python/actions/workflows/selftest.yml) 此 GitHub Action 使用 [`sigstore-python`](https://github.com/sigstore/sigstore-python) 来生成 Sigstore 签名。`gh-action-sigstore-python` 是将 [Sigstore 集成到您的 CI 系统](https://docs.sigstore.dev/quickstart/quickstart-ci/) 的最简单方法,不仅可用于 Python 项目,也可用于其他语言的项目。 ## 目录 * [使用方法](#usage) * [配置](#configuration) * [⚠️ 内部选项 ⚠️](#internal-options) * [许可协议](#licensing) * [行为准则](#code-of-conduct) ## 使用方法 只需将 `sigstore/gh-action-sigstore-python` 添加到您的工作流中即可: ``` jobs: selftest: runs-on: ubuntu-latest permissions: id-token: write steps: - uses: actions/checkout@v4 with: persist-credentials: false - name: Build step run: echo "build result example" > file.txt - uses: sigstore/gh-action-sigstore-python@v3.2.0 with: inputs: file.txt ``` 注意:您的工作流**必须**拥有请求 OIDC token 进行身份验证的权限。 可以通过在您的作业(如上所示)或工作流中设置 `id-token: write` 来实现。 有关权限设置的更多信息可以在[此处](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#adding-permissions-settings)找到。 ## 配置 `gh-action-sigstore-python` 接受多种配置输入,其中大多数是可选的。 ### `inputs` `inputs` 设置控制 `sigstore-python` 对哪些文件进行签名。除非在发布事件中将 [release-signing-artifacts](#release-signing-artifacts) 设置为 `true`,否则必须至少提供一个输入。 要签名一个或多个文件: ``` - uses: sigstore/gh-action-sigstore-python@v3.2.0 with: inputs: file0.txt file1.txt file2.txt ``` `inputs` 参数也支持文件通配符: ``` - uses: sigstore/gh-action-sigstore-python@v3.2.0 with: inputs: ./path/to/inputs/*.txt ``` 支持多行输入,文件名中的空格也可以使用 POSIX shell 词法规则进行转义: ``` - uses: sigstore/gh-action-sigstore-python@v3.2.0 with: inputs: | ./path/to/inputs/*.txt ./another/path/foo\ bar.txt ./a/third/path/"easier to quote than to escape".txt ``` ### `identity-token` **默认值**:空(将使用 GitHub Actions 凭证) `identity-token` 设置控制提供给 Fulcio 的 OpenID Connect token。默认情况下,工作流将使用 GitHub Actions 环境中的凭证。 ``` - uses: sigstore/gh-action-sigstore-python@v3.2.0 with: inputs: file.txt identity-token: ${{ IDENTITY_TOKEN }} # assigned elsewhere ``` ### `oidc-client-id` **默认值**:`sigstore` `oidc-client-id` 设置控制在 OAuth2 期间提供给 OpenID Connect Server 的 OpenID Connect 客户端 ID。 示例: ``` - uses: sigstore/gh-action-sigstore-python@v3.2.0 with: inputs: file.txt oidc-client-id: alternative-sigstore-id ``` ### `oidc-client-secret` **默认值**:空(默认不提供 OpenID Connect 客户端密钥) `oidc-client-secret` 设置控制在 OAuth2 期间提供给 OpenID Connect Server 的 OpenID Connect 客户端密钥。 示例: ``` - uses: sigstore/gh-action-sigstore-python@v3.2.0 with: inputs: file.txt oidc-client-secret: alternative-sigstore-secret ``` ### `staging` **默认值**:`false` `staging` 设置控制 `sigstore-python` 是否使用 sigstore 的暂存实例,而不是默认的生产实例。 示例: ``` - uses: sigstore/gh-action-sigstore-python@v3.2.0 with: inputs: file.txt staging: true ``` ### `verify` **默认值**:`false` `verify` 设置控制在所有文件签名完成后,是否使用 `sigstore verify` 子命令验证生成的签名和证书。 这**并非严格必要**,但可以作为冒烟测试,以确保所有签名工件已正确生成且签名已正确提交至 Rekor。 如果启用了 `verify`,则您**必须**同时传递 `verify-cert-identity` 和 `verify-oidc-issuer` 设置。未能传递这些设置将产生错误。 示例: ``` - uses: sigstore/gh-action-sigstore-python@v3.2.0 with: inputs: file.txt verify: true verify-oidc-issuer: https://some-oidc-issuer.example.com verify-cert-identity: some-identity ``` ### `verify-cert-identity` **默认值**:空 `verify-cert-identity` 设置控制是否在签名发生后验证签名证书的主题备用名称 (SAN)。如果设置了此选项,`sigstore-python` 会将证书的 SAN 与提供的值进行比较。 此设置仅在 `verify` 设置为 `true` 时适用。在没有 `verify: true` 的情况下提供此设置将产生错误。 此设置必须与 `verify-oidc-issuer` 结合使用。在没有 `verify-oidc-issuer` 的情况下提供此设置将产生错误。 ``` - uses: sigstore/gh-action-sigstore-python@v3.2.0 with: inputs: file.txt verify: true verify-cert-identity: john.hancock@example.com verify-oidc-issuer: https://oauth2.sigstage.dev/auth ``` ### `verify-oidc-issuer` **默认值**:`https://oauth2.sigstore.dev/auth` `verify-oidc-issuer` 设置控制是否在签名发生后验证签名证书的颁发者扩展。如果设置了此选项,`sigstore-python` 会将证书的颁发者扩展与提供的值进行比较。 此设置仅在 `verify` 设置为 `true` 时适用。在没有 `verify: true` 的情况下提供此设置将产生错误。 此设置必须与 `verify-cert-identity` 结合使用。在没有 `verify-cert-identity` 的情况下提供此设置将产生错误。 示例: ``` - uses: sigstore/gh-action-sigstore-python@v3.2.0 with: inputs: file.txt verify: true verify-cert-identity: john.hancock@example.com verify-oidc-issuer: https://oauth2.sigstage.dev/auth ``` ### `upload-signing-artifacts` **默认值**:`false` `upload-signing-artifacts` 设置控制 `sigstore-python` 是否为签名操作产生的输出创建[工作流工件](https://docs.github.com/en/actions/using-workflows/storing-workflow-data-as-artifacts)。 默认情况下,不上传任何工作流工件。启用后,将使用默认的工作流工件保留期。 示例: ``` - uses: sigstore/gh-action-sigstore-python@v3.2.0 with: inputs: file.txt upload-signing-artifacts: true ``` ### `release-signing-artifacts` **默认值**:`true` `release-signing-artifacts` 设置控制 `sigstore-python` 是否将签名工件上传到触发此运行的发布事件。 此设置对非 `release` 事件无效。 如果启用,此设置还会重新上传并签名 GitHub 的默认源代码工件,因为无法保证它们是稳定的。 需要 [`contents: write` 权限](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token)。 示例: ``` permissions: contents: write # ... - uses: sigstore/gh-action-sigstore-python@v3.2.0 with: inputs: file.txt release-signing-artifacts: true ``` 在发布事件中,也可以不指定显式输入。在发布事件中使用时,此操作将对任何预先存在的发布工件进行签名: ``` permissions: contents: write # ... # 无需显式设置,签署所有既有的发布 artifacts - uses: sigstore/gh-action-sigstore-python@v3.2.0 ``` ### 内部选项
⚠️ 内部选项 ⚠️ 以下所有内容均被视为“内部”选项,这意味着它们不属于稳定的公开设置,可能随时被移除或更改。**您大概率不需要这些设置。** 所有内部选项均以 `internal-be-careful-` 为前缀。 #### `internal-be-careful-debug` **默认值**:`false` `internal-be-careful-debug` 设置启用额外的调试日志,包括 `sigstore-python` 本身及其操作封装代码。您可以使用它来调试棘手的配置问题。 示例: ``` - uses: sigstore/gh-action-sigstore-python@v3.2.0 with: inputs: file.txt internal-be-careful-debug: true ```
## 许可协议 `gh-action-sigstore-python` 根据 Apache 2.0 许可协议授权。 ## 行为准则 所有与此项目互动的人员均应遵守 [sigstore 行为准则](https://github.com/sigstore/.github/blob/main/CODE_OF_CONDUCT.md) ## 安全 如果您发现任何安全问题,请参考 sigstore 的[安全流程](https://github.com/sigstore/.github/blob/main/SECURITY.md)。 ## 信息 `gh-action-sigstore-python` 是作为 [`sigstore`](https://sigstore.dev) 项目的一部分开发的。 我们还有一个 [Slack 频道](https://sigstore.slack.com)! 点击[此处](https://join.slack.com/t/sigstore/shared_invite/zt-mhs55zh0-XmY3bcfWn4XEyMqUUutbUQ)获取邀请链接。
标签:DevSecOps, DNS 解析, GitHub Action, GitHub Actions 工作流, OIDC, Python, Sigstore, 上游代理, 代码签名, 工件签名, 无后门, 无密钥签名, 网络调试, 自动化, 软件完整性, 逆向工具