繁体   English   中英

有没有办法强制 Github 操作在来自分支的拉取请求触发器中使用主分支工作流文件?

[英]Is there a way to force Github actions use main branch workflow files in a pull request trigger from a fork?

我有一个使用 github 动作和叉子 model 的问题。

我使用 fork model,其中分叉的存储库需要通过 CI 工作流在从 fork 返回到基本存储库的拉取请求中进行检查 CI 工作流需要来自基本存储库的一些秘密。

当前设置:

  1. Base Repository/main branch/.github/workflows/正确的工作流文件。

  2. 分叉存储库/主分支/.github/workflows/恶意修改文件以泄露秘密。

  3. 基本存储库中的操作设置:

    • 从分叉拉取请求运行工作流程 [是]
    • 从分叉拉取请求将写入令牌发送到工作流 [否]
    • 从分叉拉取请求中向工作流发送机密 [是]

观察到的行为/Q:

  1. 我可以从分叉的主分支创建拉取请求 -> 基础主分支
  2. 请求触发工作流运行,使用来自 FORKED 存储库的文件。 这是一个问题,因为有人可以分叉分支并添加工作流来揭示秘密。
  3. 工作流中的aws-actions/configure-aws-credentials可以使用 AWS 登录。 这是一个问题,因为此操作需要permissions: id-token: write 据我了解,来自分叉的拉取请求不应授予工作流任何写入权限。 我也担心这里的安全。

希望的行为:

我想要实现的是,仍然允许来自分叉存储库的拉取请求来触发 CI 工作流,但使用来自基本存储库的文件而不是分叉存储库。 无论如何这可能吗? 如果没有,有什么补救措施吗?

还想检查我对授予分叉拉取请求的所谓只读权限的理解。 为什么id-token:write权限似乎有效? 工作流文件中的显式权限声明是否可以覆盖分叉拉取请求限制?

如果我误解了重要概念,第一次使用工作流用户,请道歉。

参考: 防止PWN攻击

我无法提供保护通用凭证的解决方案,但是我可以针对 AWS 特定凭证提出解决方法。

OpenID Connect

您可以创建一个启用 OpenID 的 IAM 角色,并trust github 操作承担它。 这是通过我们的各种 github 操作完成的。

您可以在 github 的文档中找到更多详细信息。

https://docs.github.com/cn/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM