首页 > 解决方案 > 从 Marketplace 中“取消发布”GitHub Action 是如何工作的?可能吗?发布的版本安全吗?

问题描述

截至 2020 年 12 月,我找不到太多关于是否可以从 Marketplace 中“取消发布”GitHub Action 的信息。

有很多关于“如何发布”的文档,但找不到关于取消发布的任何内容。

我是否使用了错误的关键字?我了解发布如何正常工作吗?我曾假设已发布的操作与 GitHub 上直接可用的公开操作不同,但我不再那么确定了。

另外,我阅读了https://julienrenaux.fr/2019/12/20/github-actions-security-risk/,它基本上表明盲目使用类似peter-evans/create-or-update-comment@v1不使用特定哈希的东西存在巨大的安全问题。但到目前为止,我还没有在任何地方看到使用哈希。

这是我们在公司实际使用的代码示例,在我们的GitHub Action中:

# On E2E success, add a comment to the PR, if there is an open PR for the current branch
- name: Comment PR (E2E success)
  uses: peter-evans/create-or-update-comment@v1
  if: steps.pr_id_finder.outputs.number && success()
  with:
    token: ${{ secrets.GITHUB_TOKEN }}
    issue-number: ${{ steps.pr_id_finder.outputs.number }}
    body: |
      :white_check_mark:  E2E tests **SUCCESS** for commit ${{ github.sha }} previously deployed at [${{ env.VERCEL_DEPLOYMENT_URL }}](${{ env.VERCEL_DEPLOYMENT_URL }})
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

基本上,上面的文章指出使用peter-evans/create-or-update-comment@v1是危险的,因为任何人都可以针对v1标签发布并更新v1我们正在使用的版本,而我们甚至没有注意到这种变化。(而且,从那里会产生各种危险的想法,例如偷窃秘密)

这篇文章已有 1 年历史,也许从那以后情况发生了变化?很难相信 GitHub 会在其 Actions Marketplace 的核心留下这样一个安全漏洞。我以前从未听说过,对此我感到非常震惊/担忧。

标签: githubgithub-actions

解决方案


所以,手头有两个问题:

  1. GitHub Actions Marketplace 的作用是什么?
  2. 如何取消发布在 GitHub Actions Marketplace 中发布的操作?

关于 1),与我假设的不同,Marketplace 的作用仅限于索引 GitHub Actions,以便更容易找到它们。它与 NPM 有很大的不同,NPM 是保护已发布的包,使任何人都无法对其进行修改。

由于操作是使用其 GitHub 路径引用的,因此作者可以随时销毁自己的操作。删除他们的存储库或将其标记为私有是会立即破坏所有现有集成的操作。

  • 短篇小说:使用哈希/SHA 进行分叉和引用操作是构建弹性操作的唯一方法,这些操作不会在有人更改其分支/标签或删除/隐藏其 GitHub 存储库时破坏您的 CI。
  • 长话短说:见https://github.com/UnlyEd/next-right-now/discussions/223

关于 2),通过“取消发布”来自市场的操作,您真正要做的就是“取消索引”它,仅此而已。您不会破坏任何东西,也不会破坏任何工作流程,您只会将其从市场中删除,并且不会再显示。

您可以通过编辑您的版本(在 GitHub 上)并取消选中“将此操作发布到 GitHub 市场”来实现。

请参阅https://docs.github.com/en/free-pro-team@latest/actions/creating-actions/publishing-actions-in-github-marketplace#removing-an-action-from-github-marketplace


推荐阅读