准备工作
- 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
- 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
- 在屏幕左上角,点击开始实验即可开始
Enable APIs and set up Artifact Registries
/ 20
Set up a Cloud Build pipeline and push your Docker image to Artifact Registry
/ 20
Create an Attestor, KMS pair, and update the policy
/ 20
Integrate vulnerability scanning into your CI/CD pipeline
/ 20
Fix the vulnerability and redeploy the CI/CD pipeline
/ 20
在实验室挑战赛中,我们会为您提供一个场景和一系列任务。您将使用从课程的各个实验中学到的技能自行确定如何完成这些任务,而不是按照分步说明进行操作。自动评分系统(显示在本页面中)会提供有关您是否已正确完成任务的反馈。
在您参加实验室挑战赛期间,我们不会再教授新的 Google Cloud 概念知识。您需要拓展所学的技能,例如通过更改默认值和查看并研究错误消息来更正您自己所犯的错误。
要想获得满分,您必须在该时间段内成功完成所有任务!
建议已报名参加保护软件交付流程课程的学员参加此实验室挑战赛。准备好接受挑战了吗?
您是 Cymbal Bank 的一名软件工程师,负责将新的 Web 应用安全部署到云端。该应用将处理敏感的客户数据,因此安全性至关重要。您的目标是实现一条稳健的自动化流水线,用于构建、扫描、签名并部署容器化应用,同时遵守严格的安全标准。在本挑战赛中,您将使用 Artifact Registry、Binary Authorization 和 Cloud Build 等 Google Cloud 服务,在示例应用上实现此目标。
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
在开始构建安全的 CI/CD 流水线之前,您需要启用必要的 Google Cloud API 并设置开发环境。这将确保您可以使用所有必需的服务和工具。
artifact-scanning-repo 和 artifact-prod-repo。扫描仓库用于存储在扫描漏洞之前的 Docker 映像,而生产仓库用于存储已签名并准备好部署的映像。
点击检查我的进度以验证是否完成了以下目标:
在此任务中,您将首先创建一个基本的 Cloud Build 配置,以构建 Docker 映像并将其推送到 Artifact Registry,从而为 CI/CD 流水线打下坚实的基础。完成这一初始步骤后,您可以在本实验的后续步骤中扫描映像是否存在漏洞。
首先,将以下角色添加到 Cloud Build 服务账号:
roles/iam.serviceAccountUserroles/ondemandscanning.admin在 Cloud Shell Editor 中,打开 sample-app/cloudbuild.yaml 文件。
完成待办事项:填写映像名称占位符 (<image-name>)。为此,您需要引用 artifact-scanning-repo 仓库,映像名称应为 sample-image。请务必使用
提交构建。
查看您推送到 artifact-scanning-repo 仓库的映像,并验证您是否可以在扫描结果中看到一些严重漏洞。
点击检查我的进度以验证是否完成了以下目标:
为了对容器部署强制执行严格的安全政策,您将利用 Binary Authorization。借助此服务,您可以定义谁可以在什么条件下部署哪些映像。在此任务中,您将创建并配置 Binary Authorization 的必要组件,包括证明者、备注和 KMS 密钥。这将帮助您做好准备,将 Binary Authorization 集成到 CI/CD 流水线中。
在 Cloud Shell 中,创建一个 JSON 文件。此文件将定义包含证明提示的证明者备注。证明提示的 human_readable_name 应设置为“Container Vulnerabilities attestation authority”(容器漏洞证明授权方)。
使用 Container Analysis API 创建 ID 为 vulnerability_note 的新备注。该备注的详细信息应在上一步中创建的备注文件中定义。请确保在 API 请求中包含正确的身份验证,并设置对应的 Content-Type 标头。
使用 Container Analysis API 检索您刚刚创建的证明者备注的详细信息。请确保在 API 请求中包含正确的身份验证。
使用 gcloud 命令行工具创建新的 Binary Authorization 证明者。证明者 ID 应为 vulnerability-attestor,并且应与您之前创建的证明者备注相关联。
使用 gcloud 命令行工具列出所有现有的 Binary Authorization 证明者。验证您刚刚创建的证明者是否包含在列表中。
构建 IAM 政策,向 Binary Authorization 服务账号授予 roles/containeranalysis.notes.occurrences.viewer 角色,使其能够访问您创建的证明者备注。然后,使用 Container Analysis API 为该备注设置此 IAM 政策。
在本部分,您将生成一个 KMS 密钥对来签署证明。
设置密钥管理:
global 位置创建一个名为 binauthz-keys 的 KMS 密钥环,以便存储密钥。lab-key,并确保它是版本 1。将密钥关联到证明者:
gcloud 命令行工具将 lab-key(版本 1)与您的 Binary Authorization 证明者相关联。引用密钥时,请务必指定 global 位置和 binauthz-keys 密钥环。修改政策:调整 Binary Authorization 政策,以强制执行默认规则的证明要求。
纳入证明者:将您之前创建的 vulnerability-attestor 纳入政策配置。
点击检查我的进度以验证是否完成了以下目标:
以任务 2 中构建的基础流水线为起点,您现在将为其集成关键安全功能,以提升其能力。其中包括用于识别容器映像中潜在弱点的漏洞扫描功能,以及用于确保映像完整性的映像签名。在此任务中,您将把漏洞扫描和映像签名集成到 CI/CD 流水线中,使其更加稳健和安全。
在您的项目中为 Cloud Build 服务账号授予以下 IAM 角色:
roles/binaryauthorization.attestorsViewerroles/cloudkms.signerVerifierroles/containeranalysis.notes.attacherroles/iam.serviceAccountUserroles/ondemandscanning.admin此外,还要确保 Compute Engine 默认服务账号也具有 cloudkms.signerVerifier 角色。
在本部分,您将完成 Cloud Build 流水线,使其包含漏洞扫描、严重性检查、映像签名,并部署到 Cloud Run。下面提供的代码是该流水线的部分实现。您需要填写缺失的部分才能完成流水线。
artifact-scanning-repo 仓库中的映像。严重漏洞,该流水线应该会失败。vulnerability-attestor,密钥版本是 lab-key 版本 1 的完整路径。artifact-prod-repo 仓库。artifact-prod-repo 仓库中的生产映像。cloudbuild.yaml 文件中的前几个待办事项。请务必将剩余的占位符替换为剩余待办事项的正确值。
触发构建:
查看构建失败情况:
CRITICAL 的漏洞而失败的情况。CRITICAL 的漏洞,您的构建应该会失败。您将在下一个任务中解决此问题。
点击检查我的进度以验证是否完成了以下目标:
在实际场景中,漏洞扫描通常会发现需要解决的问题。此任务模拟了这样一种场景:由于存在严重漏洞,您的构建失败了。在此任务中,您将分析构建失败的原因,找出漏洞,并通过更新应用的依赖项来修复漏洞。然后,您将重新触发 Cloud Build 流水线,以确保构建成功完成,并且没有任何严重漏洞。
更新 Dockerfile:修改 Dockerfile 以使用 python:3.8-alpine 基础映像。将 Flask、Gunicorn 和 Werkzeug 依赖项更新为以下版本:
3.0.3
23.0.0
3.0.4
重新触发构建:提交更新后的 Cloud Build 配置,以启动新的构建。
验证构建是否成功:检查 Cloud Build 记录页面,确认构建已成功完成,并没有 CRITICAL 漏洞问题。
为了进行测试,请运行以下命令,允许未经身份验证而访问 Cloud Run 服务,以便验证部署。将 <your-region> 替换为您部署服务的区域。
点击检查我的进度以验证是否完成了以下目标:
恭喜!在本实验中,您成功实现了一条安全的 CI/CD 流水线,可用于构建、扫描、签署和部署 Web 应用到云端。通过这次实操体验,您已经掌握了在云端构建和部署安全应用的基本技能,能够将安全最佳实践融入开发工作流,并确保软件交付流程的完整性。
请查看以下资源,详细了解本实验中介绍的主题:
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2025 年 12 月 10 日
上次测试实验的时间:2025 年 9 月 4 日
版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
太好了!
一旦可用,我们会通过电子邮件告知您
一次一个实验
确认结束所有现有实验并开始此实验