自动扫描 Go 软件包

了解如何启用自动扫描、在 Artifact Registry 上推送容器映像,以及查看映像中发现的任何漏洞的列表。

每次将映像推送到 Artifact Registry 时,Artifact Analysis 都会扫描漏洞。平台管理员和应用开发者可以使用此自动扫描功能来帮助识别软件交付流水线中的风险。

本快速入门使用一个简单的公开软件包来演示一种软件包扫描。默认情况下,启用扫描 API 后,Artifact Analysis 会扫描多种软件包类型中的漏洞。 支持的软件包类型包括:操作系统、Go、Java (Maven)、Python 和 Node.js (npm)。

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud新手, 请创建一个账号来评估我们的产品在 实际场景中的表现。新客户还可获享 $300 赠金,用于 运行、测试和部署工作负载。
  2. 安装 Google Cloud CLI。

  3. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

  4. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  5. 创建或选择 Google Cloud 项目

    选择或创建项目所需角色

    • 选择项目:选择项目不需要特定的 IAM 角色,您可以选择您被授予角色的任何项目。
    • 创建项目:如需创建项目,您需要拥有 Project Creator 角色 (roles/resourcemanager.projectCreator),该角色包含 resourcemanager.projects.create 权限。了解如何授予 角色
    • 创建 Google Cloud 项目:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替换为您要创建的 Google Cloud 项目的名称。

    • 选择您创建的 Google Cloud 项目:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替换为您的 Google Cloud 项目名称。

  6. 验证是否已为您的 Google Cloud 项目启用结算功能。

  7. 启用 Artifact Registry 和 Container Scanning API:

    启用 API 所需的角色

    如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予 角色

    gcloud services enable containerscanning.googleapis.com  artifactregistry.googleapis.com
  8. 安装 Google Cloud CLI。

  9. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

  10. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  11. 创建或选择 Google Cloud 项目

    选择或创建项目所需角色

    • 选择项目:选择项目不需要特定的 IAM 角色,您可以选择您被授予角色的任何项目。
    • 创建项目:如需创建项目,您需要拥有 Project Creator 角色 (roles/resourcemanager.projectCreator),该角色包含 resourcemanager.projects.create 权限。了解如何授予 角色
    • 创建 Google Cloud 项目:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替换为您要创建的 Google Cloud 项目的名称。

    • 选择您创建的 Google Cloud 项目:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替换为您的 Google Cloud 项目名称。

  12. 验证是否已为您的 Google Cloud 项目启用结算功能。

  13. 启用 Artifact Registry 和 Container Scanning API:

    启用 API 所需的角色

    如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予 角色

    gcloud services enable containerscanning.googleapis.com  artifactregistry.googleapis.com

在 Artifact Registry 中创建 Docker 代码库

创建 Docker 代码库以存储此快速入门的示例映像。

  1. 在 Google Cloud 控制台中打开代码库 页面。

    打开“代码库”页面

  2. 点击创建代码库

  3. 创建代码库 页面上,输入以下设置:

    • 名称: quickstart-docker-repo
    • 格式:Docker
    • 模式:标准
    • 位置类型:区域
    • 区域: us-central1
  4. 点击创建

您会看到代码库 页面。您的 quickstart-docker-repo 代码库已添加到代码库列表中。

配置身份验证

在推送或拉取 Artifact Registry 中的映像之前,您必须配置 Docker 以使用 Google Cloud CLI 对向 Artifact Registry 发出的请求进行身份验证。

在 Cloud Shell 或本地 shell 中,为 us-central1 区域中的 Docker 代码库设置身份验证:

gcloud auth configure-docker us-central1-docker.pkg.dev

获取软件包

  1. 切换到要保存容器映像的目录。

  2. 将映像复制到本地目录。例如,您可以使用 Docker 从 Docker Hub 拉取最新的 Go 映像。

    docker pull golang:1.17.6-alpine
    

使用代码库名称标记软件包

当您想要将软件包推送到 Artifact Registry 时,需要配置 docker push 命令以将映像推送到特定位置。

运行以下命令以将映像标记为 quickstart-image:tag1

docker tag golang:1.17.6-alpine \
us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1

其中:

  • PROJECT 是您的 Google Cloud 项目 ID。 如果您的项目 ID 包含英文冒号 (:),请参阅 网域级项目
  • us-central1 是 Artifact Registry 代码库区域。
  • docker.pkg.dev 是 Docker 代码库的主机名。
  • quickstart-image 是您要在代码库中使用的映像名称。该映像名称可能与本地映像名称不同。
  • tag1 是要添加到 Docker 映像的标记。如果您没有指定标记,Docker 将应用默认标记 latest

将映像推送到 Artifact Registry

Artifact Analysis 会在新 Go 软件包上传到 Artifact Registry 时自动扫描这些软件包。

如需将映像推送到 Artifact Registry 中的 Docker 代码库,请运行以下命令:

docker push us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1

PROJECT 替换为您的 Google Cloud 项目 ID。 如果您的项目 ID 包含英文冒号 (:),请参阅 网域级项目

查看漏洞扫描结果

清理

为避免因本页面中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的 Google Cloud 项目。

如果您为此指南创建了一个新项目,现在可以删除该项目。

  1. 在 Google Cloud 控制台中,前往 管理资源 页面。

    转到“管理资源”

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击 关闭以删除项目。

后续步骤