创建安全映像流水线后,每次更改源代码时,您都可将生成签名映像的工作流自动化。
本页面介绍如何使用映像流水线生成经过认证的安全映像。
准备工作
使用流水线
基础映像的源代码位于您在设置安全映像流水线时指定的 GitHub 组织中的 baseimgfct-[some number]-containers
代码库中。要更新映像,请修改代码库中的相关文件,并向团队成员发送包含更改的拉取请求以供审核。创建拉取请求时,YOUR_PROJECT_NAME-builder
中的 Cloud Build 触发器会构建更新后的映像,并将该映像推送到 YOUR_PROJECT_NAME-stage
中的 Artifact Registry 代码库。
当团队成员在 YOUR_PROJECT_NAME-stage
中测试并验证映像后,他们可以批准并合并拉取请求。合并操作会构建、扫描和证明映像,并将映像从预演项目推送到 YOUR_PROJECT_NAME-verified
。
以下步骤描述了使用安全映像流水线的开发者工作流:
转到 baseimgfact-[some number]-containers 代码库。
打开与要更改的映像对应的文件夹,例如
ubuntu_18_0_4
。进行修改。例如,修改
Dockerfile
以更新容器映像。选择为此提交创建新分支并启动拉取请求 (Create a new branch for this commit and start a pull request)。
点击建议修改。
在注释说明中,输入 /gcbrun。这样可确保只有经过授权的用户建议更改代码库。
点击创建拉取请求。
创建拉取请求时,
YOUR_PROJECT_NAME-builder
中的构建触发器会构建映像并将映像推送到YOUR_PROJECT_NAME-stage
。添加团队成员来审核您的拉取请求。
手动验证映像后,团队成员会批准并合并拉取请求。
合并操作会构建、测试映像并扫描漏洞,证明映像为容器映像,然后将映像推送到
YOUR_PROJECT_NAME-verified
。
指定自定义安全政策
如果您使用安全映像流水线生成和维护基础容器映像,则可以指定用于验证映像的自定义安全政策。
YOUR_PROJECT_NAME-stage
会运行实例 Voucher,这是一种开源工具,可对容器映像运行一套检查,并为映像创建 Binary Authorization 证明。对 YOUR_PROJECT_NAME-stage
中的映像进行手动验证并且团队成员合并 GitHub 容器映像代码库中的拉取请求后,Voucher 会检查该映像是否存在漏洞,这些漏洞在 Voucher 配置文件中定义。检查完成后,如果所有已识别的漏洞均低于阈值,Voucher 会为映像创建 Binary Authorization 证明,并将映像推送到 YOUR_PROJECT_NAME-verified
。如果有任何已识别的漏洞达到或超过阈值,则 Voucher 不会创建证明。如果没有经过验证的证明,Binary Authorization Enforcer 会禁止将映像推送到 YOUR_PROJECT_NAME-verified
。
您可以在 Voucher Server 配置文件中定义 Voucher 要运行的检查以及其他条件。如需了解如何执行此操作,请参阅构建和配置 Voucher Server。