[英]Is it okay to use GitHub Secrets with a public repo?
我有一个带有 GitHub 操作的私有仓库,当有新的推送到主分支时,它会将代码推送到 AWS S3 存储桶。 我需要一对访问密钥才能推送内容,并将它们存储为 GitHub Secrets 并将它们作为构建脚本中的环境变量引用。 现在我想在不久的将来公开这个 repo,我想知道这样做是否安全。 该操作的工作流 (.github/workflows/main.yml) 本身确实是公开可见的,它的作用是什么,但它只有一个命令aws s3 cp myfile s3://my-bucket
并且绝对没有访问密钥代码本身。
将 GitHub Secrets 用于公共回购中的操作是否安全? 我是唯一的所有者和唯一的贡献者,这在未来不会改变。 稍后我可能会使用 webhook 切换到 CodePipeline,但想先尝试 GitHub Actions。 谢谢。
是的,秘密在公共存储库中使用是安全的,但有些事情你应该小心。
所有秘密都在构建日志中自动屏蔽并显示为***
。 但是,如果在您的工作流程中,您从一个秘密(例如 base64 和 API 密钥)创建了一个敏感凭证,那么您应该屏蔽新值,这样它就不会在构建日志中泄漏。
echo "::add-mask::My sensitive value"
如果您非常关心您的秘密的安全性,我还建议您不要直接使用第三方 GitHub 操作,只需遵循操作的标签或分支。 分叉操作并在工作流程中使用您的分叉。 这将防止有人修改您用来捕获该操作所使用的秘密的操作,并将其发送到他们控制下的某个外部服务器。
或者,直接使用该操作并为您要定位的版本引用提交 hash。
- uses: thirdparty/foo-action@172ec762f2ac8e050062398456fccd30444f8f30
在您的帐户上使用双重身份验证 (2FA) 。 如果您的帐户遭到入侵,攻击者很容易创建工作流并导出您的机密。
存储库协作者或任何具有write
权限的组织用户都能够创建工作流来导出机密。 因此,请谨慎管理对存储库的访问。
与拉取请求相关的要点:
pull_request
事件无权访问机密, 默认的GITHUB_TOKEN
。 此外,当事件由分叉存储库触发时, GITHUB_TOKEN
具有只读访问权限。 这些是 GitHub 操作强制实施的有意限制,以防止攻击者创建包含捕获机密或使用机密执行操作的工作流的拉取请求。pull_request_target
事件对分叉触发的事件没有秘密限制。 默认情况下,它会检出基础分支上的最后一次提交,但可以检出拉取请求 HEAD。 选择这样做需要格外小心。 将机密传递给可以在拉取请求中修改的任何代码都可能允许攻击者编写代码来导出机密。是的,看起来是这样。 根据 Github ,您对谁可以访问您的机密具有组织级别的访问控制策略。
对于存储在组织级别的机密,您可以使用访问策略来控制哪些存储库可以使用组织机密。 组织级机密允许您在多个存储库之间共享机密,从而减少创建重复机密的需要。 在一个位置更新组织机密还可以确保更改在使用该机密的所有存储库工作流中生效。
存储库是公共的还是私有的都不会影响这一点,这是有道理的。 公共项目也需要秘密。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.