构建应用并查看安全数据分析
本快速入门介绍如何在 Google Cloud 控制台的 Software Delivery Shield 安全数据分析面板中构建应用并查看 build 的安全性数据分析。
您将学习以下内容:
- 使用 Cloud Build 构建 Java 应用并将其容器化,然后将容器映像推送到 Artifact Registry Docker 代码库。
查看该 build 的以下安全性数据分析:
- 软件工件 (SLSA) 级别的供应链级别:根据 SLSA 规范确定了软件构建流程的成熟度级别。
- 构建工件中的漏洞。
- build 工件的软件物料清单 (SBOM)。
- 构建出处,这是关于 build 的可验证元数据集合。其中包括已构建映像的摘要、输入来源位置、构建工具链、构建步骤和构建时长等详细信息。
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Artifact Registry, and Container Scanning APIs:
gcloud services enable cloudbuild.googleapis.com
artifactregistry.googleapis.com containerscanning.googleapis.com - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Artifact Registry, and Container Scanning APIs:
gcloud services enable cloudbuild.googleapis.com
artifactregistry.googleapis.com containerscanning.googleapis.com
准备环境
将项目 ID 设置为环境变量:
export PROJECT_ID=$(gcloud config get project)
克隆包含要构建和容器化的 Java 代码示例的代码库:
git clone https://github.com/googlecloudplatform/software-delivery-shield-demo-java.git cd software-delivery-shield-demo-java/backend
为您的映像创建 Artifact Registry 代码库
在位置
us-central1
中创建一个名为containers
且说明内容为“Docker repository”(Docker 代码库)的新 Docker 代码库:gcloud artifacts repositories create containers \ --repository-format=docker \ --location=us-central1 --description="Docker repository"
验证您的代码库已创建:
gcloud artifacts repositories list
您应该会在显示的代码库列表中看到
containers
。
构建应用
使用 Cloud Build 构建 Java 应用并将其容器化。 以下命令会构建 Java 应用并对其进行容器化,并将构建的容器存储在 Artifact Registry Docker 代码库中:
gcloud builds submit --config=cloudbuild.yaml --region=us-central1
构建完成后,您将看到如下所示的成功状态消息:
<pre class="none lang-sh">
DONE
-----------------------------------------------------------------------------
ID: 3e08565f-7f57-4449-bc68-51c46cf33d03
CREATE_TIME: 2022-09-19T15:41:07+00:00
DURATION: 54S
SOURCE: gs://sds-docs-project_cloudbuild/source/1663602066.777581-6ebe4b2d6fd741ffa18936d7f78055e9.tgz
IMAGES: us-central1-docker.pkg.dev/sds-docs-project/containers/java-guestbook-backend:quickstart
STATUS: SUCCESS
</pre>
为构建的映像生成 SBOM
SBOM 是应用的完整清单,用于标识您的软件所依赖的软件包。这些内容可能包括供应商提供的第三方软件、内部工件和开源库。
为您在上一部分中构建的映像生成 SBOM:
gcloud artifacts sbom export
--uri=us-central1-docker.pkg.dev/${PROJECT_ID}/containers/java-guestbook-backend:quickstart
查看安全性数据分析
Google Cloud 控制台中的 Cloud Build 界面包含 Software Delivery Shield 安全性数据分析面板,其中显示与构建相关的安全信息,例如 SLSA 级别、依赖项中的任何漏洞,以及构建来源。
如需查看 Software Delivery Shield 安全性数据分析面板,请执行以下操作:
在 Google Cloud 控制台中打开构建记录页面:
选择您的项目,然后点击打开。
在区域下拉菜单中,选择 us-central1。
在包含构建的表中,找到您刚刚执行的构建所在的行。
在安全性数据分析列下,点击查看。
您会看到该构建的安全性数据分析面板:
此面板会显示以下信息:
SLSA 级别:此 build 已达到 SLSA 级别 3。点击了解详情链接,即可了解此安全等级的含义。
漏洞:在您的工件中发现的任何漏洞。点击映像名称 (java-guestbook-backend) 查看已针对漏洞进行扫描的工件。
Artifact Registry 中构建的容器映像的依赖项。
构建详情:构建的详细信息,例如构建器和用于查看日志的链接。
清理
为避免因本页面中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的 Google Cloud 项目。
停用 Container Scanning API:
gcloud services disable containerscanning.googleapis.com --force
删除 Artifact Registry 代码库:
gcloud artifacts repositories delete containers \ --location=us-central1 --async
您现在已删除在此快速入门中创建的代码库。