本文說明如何查看儲存在構件分析中的 Vulnerability Exploitability eXchange (VEX) 陳述式,以及如何使用 VEX 狀態篩選安全漏洞。
安全性和政策執行者可以使用這些功能,在安全性問題緩解工作中決定優先順序。您也可以使用 VEX 資料來驗證構件組合,協助貴機構滿足法規要求。
必要的角色
如要取得上傳 VEX 評估項目和檢查 VEX 漏洞狀態所需的權限,請要求管理員為您授予專案的下列 IAM 角色:
-
如要查看安全漏洞發生頻率:
容器分析發生頻率檢視器 (
roles/containeranalysis.occurrences.viewer
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
在 Google Cloud 控制台中查看 VEX 狀態
如要查看儲存在 Artifact Registry 中的容器映像檔 VEX 資訊,請按照下列步驟操作:
開啟「Artifact Registry」存放區頁面。
這個頁面會顯示存放區清單。
在存放區清單中,按一下存放區名稱。
在圖片清單中,按一下圖片名稱。
系統會開啟圖片摘要清單。
在摘要清單中,按一下摘要名稱。
摘要詳細資料頁面會隨即開啟,並顯示一列分頁。根據預設,系統會開啟「總覽」分頁。
在分頁標籤列中,選取「漏洞」分頁標籤。
這個頁面會顯示「掃描結果」總覽,以及「VEX 狀態」部分。
「VEX 狀態」摘要區段會顯示依 VEX 狀態類型分類的套件數量。如要查看所有具有特定 VEX 狀態的套件,請按一下狀態類型旁邊的數字。
「Vulnerabilities」分頁也會在安全漏洞清單中顯示每個套件的 VEX 狀態。
如何篩選安全漏洞清單:
- 按一下漏洞清單上方的「篩選漏洞」。
- 從篩選器清單中選擇篩選器。
- 指定要用來篩選清單的值。
在 Cloud Build 中查看 VEX 狀態
如果您使用的是 Cloud Build,也可以在 Google Cloud 控制台的「Security insights」側邊面板中查看 VEX 資訊。
如果您使用 Cloud Build,可以在 Google Cloud 主控台的「Security insights」側邊面板中查看映像檔中繼資料。
「安全性深入分析」側邊面板提供建構安全性資訊的總覽,適用於儲存在 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_affected
、known_not_affected
、under_investigation
或fixed
。
舉例來說,您可以執行下列指令,篩選 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 標準。