我有一个带有 GitHub 操作的私有(private)存储库,当有新的推送到主分支时,它会将代码推送到 AWS S3 存储桶。我需要一对访问 key 才能推送内容,并将它们存储为 GitHub Secrets 并将它们作为构建脚本中的环境变量引用。现在我想在不久的将来公开这个 repo,我想知道这样做是否安全。该操作的工作流(.github/workflows/main.yml)本身确实是公开可见的,它的作用是什么,但它只有一个命令aws s3 cp myfile s3://my-bucket
并且代码本身绝对没有访问 key 。
将 GitHub Secrets 用于公共(public)存储库中的操作是否安全?我是唯一的所有者和唯一的贡献者,这在 future 不会改变。稍后我可能会使用 webhook 切换到 CodePipeline,但想先尝试 GitHub Actions。谢谢。
最佳答案
是的, secret 在公共(public)存储库中使用是安全的,但有些事情你应该小心。
***
。但是,如果在您的工作流程中,您从一个 secret (例如 base64 一个 API key )创建了一个敏感凭证,那么您应该 mask the new value 这样它就不会在构建日志中泄漏。echo "::add-mask::My sensitive value"
或者,直接使用该操作并引用您要定位的版本的提交哈希。
- uses: thirdparty/foo-action@172ec762f2ac8e050062398456fccd30444f8f30
write
访问权限的组织用户都能够创建工作流来导出 secret 。因此,请谨慎管理对存储库的访问。与 pull 请求相关的 Gist :
pull_request
事件无权访问 secret except for the default GITHUB_TOKEN
。此外, GITHUB_TOKEN
有 read-only access when an event is triggered by a forked repository 。这些是 GitHub Actions 强制实现的有意限制,以防止攻击者创建包含捕获 secret 或使用 secret 执行操作的工作流的 pull 请求。 pull_request_target
事件对 fork 触发的事件没有 secret 限制。默认情况下,它会 check out 基分支上的最后一次提交,但可以 check out pull 请求 HEAD。选择这样做需要格外小心。将 secret 传递给可以在 pull 请求中修改的任何代码都可能允许攻击者编写代码来导出 secret 。 关于git - 可以将 GitHub Secrets 与公共(public)存储库一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62142092/