使用安全映像流水线

创建安全映像流水线后,每次更改源代码时,您都可将生成签名映像的工作流自动化。

本页面介绍如何使用映像流水线生成经过认证的安全映像。

准备工作

创建安全映像流水线并熟悉流水线创建的资源

使用流水线

基础映像的源代码位于您在设置安全映像流水线时指定的 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

以下步骤描述了使用安全映像流水线的开发者工作流:

  1. 转到 baseimgfact-[some number]-containers 代码库。

  2. 打开与要更改的映像对应的文件夹,例如 ubuntu_18_0_4

  3. 进行修改。例如,修改 Dockerfile 以更新容器映像。

  4. 选择为此提交创建新分支并启动拉取请求 (Create a new branch for this commit and start a pull request)。

  5. 点击建议修改

  6. 注释说明中,输入 /gcbrun。这样可确保只有经过授权的用户建议更改代码库。

  7. 点击创建拉取请求

    创建拉取请求时,YOUR_PROJECT_NAME-builder 中的构建触发器会构建映像并将映像推送到 YOUR_PROJECT_NAME-stage

  8. 添加团队成员来审核您的拉取请求。

  9. 手动验证映像后,团队成员会批准并合并拉取请求。

    合并操作会构建、测试映像并扫描漏洞,证明映像为容器映像,然后将映像推送到 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