Chr*_*ris 12 git github amazon-web-services github-actions
我有一个带有 GitHub Action 的私有存储库,当有新的推送到主分支时,它会将代码推送到 AWS S3 存储桶。我需要一对访问密钥才能推送内容,我将它们存储为 GitHub Secrets 并将它们作为构建脚本中的环境变量进行引用。现在我想在不久的将来公开这个 repo,我想知道这样做是否安全。操作的工作流 (.github/workflows/main.yml) 本身确实是公开可见的,它的作用是什么,但它只有一个命令aws s3 cp myfile s3://my-bucket,代码本身绝对没有访问密钥。
将 GitHub Secrets 用于公共存储库中的操作是否安全?我是唯一的所有者和唯一的贡献者,这在未来不会改变。稍后我可能会使用 webhook 切换到 CodePipeline,但想先尝试 GitHub Actions。谢谢。
pet*_*ans 18
是的,在公共存储库中使用机密是安全的,但有些事情你应该小心。
所有秘密都会在构建日志中自动屏蔽并显示为***. 但是,如果在您的工作流程中您从一个秘密(例如 base64 一个 API 密钥)创建了一个敏感的凭证,那么您应该屏蔽新值,这样它就不会在构建日志中泄漏。
echo "::add-mask::My sensitive value"
Run Code Online (Sandbox Code Playgroud)
如果你非常关心你的秘密的安全性,我也建议不要通过遵循操作的标签或分支直接使用第三方 GitHub 操作。分叉操作并在工作流程中使用分叉。这将防止有人修改您正在使用的操作以捕获该操作使用的机密并将其发送到他们控制下的某个外部服务器的可能性。
或者,直接使用该操作并引用您要定位的版本的提交哈希。
- uses: thirdparty/foo-action@172ec762f2ac8e050062398456fccd30444f8f30
Run Code Online (Sandbox Code Playgroud)
在您的帐户上使用双因素身份验证 (2FA)。如果您的帐户遭到入侵,攻击者创建工作流程并导出您的机密就很容易了。
存储库协作者或具有write访问权限的任何组织用户都能够创建工作流来导出机密。因此,请谨慎管理对存储库的访问。
与拉取请求相关的要点:
pull_request由叉触发事件没有获得秘密,除了默认的GITHUB_TOKEN。此外,当事件由分叉存储库触发时, TheGITHUB_TOKEN具有只读访问权限。这些是 GitHub Actions 有意实施的限制,以防止攻击者创建包含捕获机密或使用机密执行操作的工作流的拉取请求。pull_request_target事件对由分叉触发的事件没有秘密限制。默认情况下,它会检查基础分支上的最后一次提交,但可以检查拉取请求 HEAD。选择这样做需要格外小心。将机密传递给可以在拉取请求中修改的任何代码可能允许攻击者编写代码来导出机密。| 归档时间: |
|
| 查看次数: |
3385 次 |
| 最近记录: |