security - 安全性不足:从触发持续集成的分叉中拉取请求
问题描述
我喜欢使用 Azure Pipelines 或 Travis CI 来运行构建和测试作业。使用几个部署步骤也很好,例如仅在为分支运行作业时执行master
。因此,我通常使用环境变量来启用 CI 进行部署。
实际上这样做有一个安全问题:黑客可以
- 分叉我的存储库和
- 编辑
.travis.yml
或azure-pipelines.yml
以CI将滥用环境变量中的秘密来做坏事的方式。在此之后,黑客可以 - 创建一个从 fork 存储库到我的存储库的拉取请求,这样
- Travis 或 Azure Pipelines 将执行该有害代码并可能破坏某些东西。
从某种意义上说,这个问题有什么解决方案吗?
- 我仍然可以享受自动部署和
- 没有可能的黑客可以滥用 CI?
处理此问题的一种方法可能是在来自分叉的拉取请求的情况下禁用触发构建。GitHub.com 有这样的功能吗?我没有找到关于这个主题的任何内容。或者有没有其他方法可以实现目标?
解决方案
就像@bk2204 所说,这些信息在文档中可用。
对于特拉维斯
该文档说,对于来自分叉的这些“外部拉取请求”构建,机密将不可用,仅适用于来自原始存储库的“内部拉取请求”。
请参阅:https ://docs.travis-ci.com/user/pull-requests/
对于 Azure 管道:
Microsoft 的 azure 管道已经有一个复选框,可以在其中启用或禁用对来自分叉的拉取请求的机密可用性:
- 选择您的管道
- 点击
Edit
右上角 - 点击右上角的三个点
- 选择
Triggers
- 点击
Pull request validation
左下方。 - 在右侧,您可以配置是否应该运行作业以及是否可以使用机密
推荐阅读
- android - 在运行时写入android资产目录?
- wordpress - 在哪里为 AWS 中托管的 wordpress 站点创建 htaccess 文件
- vba - 在 Excel VBA 中设置默认 TextBox.Value TypeName
- php - 提交表单后,FOS 用户包未重定向到 fos_user_registeration_check_email
- session - go-swagger 没有调用我的标题检查
- c# - 无法在表单视图中更新图像
- sql - 加入 SQL 表,其中加入列具有用户提交的条目
- c# - 如何从数据库中检索文件?
- python - python中用户定义的类序列化和反序列化
- javascript - 带有嵌入式引导开关切换的传单地图