自動掃描 Go 封裝

瞭解如何啟用自動掃描功能、將容器映像檔推送至 Artifact Registry,以及查看映像檔中發現的安全漏洞清單。

每當映像檔推送至 Artifact Registry 時,Artifact Analysis 就會掃描安全漏洞。平台管理員和應用程式開發人員可使用這項自動掃描功能,協助找出軟體交付管道中的風險。

本快速入門導覽課程會使用簡單的公開套件,示範一種套件掃描類型。根據預設,啟用掃描 API 後,Artifact Analysis 會掃描多種套件類型的安全漏洞。支援的套件類型包括:OS、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 角色,只要您已獲授角色,即可選取任何專案。
    • 建立專案:如要建立專案,您需要具備專案建立者角色 (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,您需要具備服務使用情形管理員 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 角色,只要您已獲授角色,即可選取任何專案。
    • 建立專案:如要建立專案,您需要具備專案建立者角色 (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,您需要具備服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

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

在 Artifact Registry 中建立 Docker 存放區

您必須建立 Docker 存放區,以便儲存本快速入門教學導覽課程所用的範例映像檔。

  1. 在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。

    開啟「存放區」頁面

  2. 點選「Create Repository」

  3. 在「Create Repository」(建立存放區) 頁面中,輸入下列設定:

    • Name (名稱):quickstart-docker-repo
    • 格式:Docker
    • 模式:標準
    • 位置類型:區域
    • Region (區域):us-central1
  4. 點選「建立」

畫面會顯示「Repositories」頁面。quickstart-docker-repo 存放區會新增至存放區清單。

設定驗證機制

如要使用 Artifact Registry 推送或提取映像檔,請先設定 Docker,透過 Google Cloud CLI 驗證傳送至 Artifact Registry 的要求。

在 Cloud 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

將新的 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 控制台的「Manage resources」(管理資源) 頁面。

    前往「Manage resources」(管理資源)

  2. 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)
  3. 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。

後續步驟