查看 VEX 狀態

本文說明如何查看 Artifact Analysis 中儲存的安全漏洞可利用性交換 (VEX) 陳述式,以及如何使用 VEX 狀態篩選安全漏洞。

安全性和政策執行人員可以使用這些功能,決定安全問題緩解工作的優先順序。您也可以使用 VEX 資料來證明構件的組成,協助貴機構符合法規要求。

必要的角色

如要取得上傳 VEX 評估結果及查看安全漏洞 VEX 狀態所需的權限,請要求管理員授予您專案的下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

在 Google Cloud 控制台中查看 VEX 狀態

如要查看儲存在 Artifact Registry 中的容器映像檔 VEX 資訊,請按照下列步驟操作:

  1. 開啟 Artifact Registry 的「Repositories」(存放區) 頁面。

    開啟「Repositories」(存放區) 頁面

    這個頁面會顯示存放區清單。

  2. 在存放區清單中,按一下存放區名稱。

  3. 在圖片清單中,按一下圖片名稱。

    系統會開啟圖片摘要清單。

  4. 在摘要清單中,按一下摘要名稱。

    系統會開啟摘要詳細資料頁面,並顯示一列分頁標籤。系統預設會開啟「總覽」分頁。

  5. 在分頁列中,選取「安全漏洞」分頁標籤。

    頁面會顯示「掃描結果」總覽,以及「VEX 狀態」部分。

    「VEX 狀態」摘要部分會顯示依各 VEX 狀態類型分類的套件數量。如要查看特定 VEX 狀態的所有套件,請按一下狀態類型旁的數字。

    「安全漏洞」分頁也會顯示安全漏洞清單中每個套件的 VEX 狀態。

    如要篩選安全漏洞清單,請按照下列步驟操作:

    1. 按一下「安全漏洞」清單上方的「篩選安全漏洞」
    2. 從篩選器清單中選擇篩選器。
    3. 指定要用來篩選清單的值。

在 Cloud Build 中查看 VEX 狀態

如果您使用 Cloud Build,也可以在 Google Cloud 控制台的「安全性洞察」側邊面板中查看 VEX 資訊。

如果您使用 Cloud Build,可以在 Google Cloud 控制台的「安全性洞察」側邊面板中查看映像檔中繼資料。

「安全性深入分析」側邊面板會顯示儲存在 Artifact Registry 中的構件,以及建構安全資訊的整體概況。如要進一步瞭解側邊面板,以及如何使用 Cloud Build 協助保護軟體供應鏈,請參閱「查看建構作業安全洞察資訊」。

使用 gcloud CLI 查看

下節說明如何擷取 VEX 資訊,以及如何套用篩選器,根據需求限制結果。

查看單一構件的 VEX 資訊

如要查看上傳的 VEX 資訊,可以查詢 API 並列出附註,附註類型為 VULNERABILITY_ASSESSMENT

使用下列 API 呼叫,要求指定構件的所有安全漏洞評估附註:

curl -G -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    --data-urlencode "filter=(kind=\"VULNERABILITY_ASSESSMENT\" AND vulnerability_assessment.product.generic_uri=\"https://LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME@DIGEST\"" https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/notes

地點

  • LOCATION 是存放區的地區或多地區位置。
  • PROJECT_ID 是 Google Cloud 專案的 ID,您的映像檔會儲存在 Artifact Registry 存放區中。
  • REPO_NAME 是包含映像檔的 Artifact Registry 存放區名稱。
  • IMAGE_NAME 是映像檔的名稱。
  • DIGEST 是映像檔摘要,開頭為 sha256: 的字串。

依 VEX 狀態篩選安全漏洞

您可以使用 gcloud 依 VEX 狀態篩選安全漏洞中繼資料。構件分析會根據每個 Grafeas 安全漏洞例項中儲存的狀態進行篩選。

執行下列指令,根據指定的 VEX 狀態篩選出安全漏洞事件:

gcloud artifacts vulnerabilities list RESOURCE_URI \
    --occurrence-filter="vulnDetails.vex_assessment.state=\"STATUS\""

地點

  • RESOURCE_URI 是映像檔的完整網址,類似於 https://LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID@sha256:HASH。
  • STATUS 是要篩選的 VEX 狀態,可以是下列其中一個值:known_affectedknown_not_affectedunder_investigationfixed

舉例來說,執行下列指令可篩選出 VEX 狀態為 AFFECTED 的安全漏洞事件:

gcloud artifacts vulnerabilities list RESOURCE_URI \
    --occurrence-filter="vulnDetails.vex_assessment.state=\"AFFECTED\""

列出不含 VEX 的安全漏洞

如要找出尚未有任何 VEX 資訊的安全性弱點,請使用下列 gcloud 指令:

gcloud artifacts vulnerabilities list /
    LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME@DIGEST /--occurrence-filter="isNull(vulnDetails.vex_assessment.state)"

地點

  • LOCATION 是存放區的地區或多地區位置。
  • PROJECT_ID 是 Google Cloud 專案的 ID,您的映像檔會儲存在 Artifact Registry 存放區中。
  • REPO_NAME 是包含映像檔的 Artifact Registry 存放區名稱。
  • IMAGE_NAME 是映像檔的名稱。
  • DIGEST 是映像檔摘要,開頭為 sha256: 的字串。

限制

  • 上傳 VEX 陳述式僅支援容器映像檔。
  • 上傳的 VEX 陳述式無法匯出為 CSAF、OpenVex 或 SPDX 標準。

後續步驟