得知新的安全漏洞時,請務必迅速採取行動。本頁面提供您預先建構的必要 API 呼叫和篩選器清單。使用這些 API 呼叫,從「Artifact Analysis」中擷取掃描結果,並收集構件狀態相關資訊。
這類內容適用於自動掃描中繼資料。如果圖片超過 30 天的持續分析時間範圍,您可以再次將圖片推送至 Artifact Registry,執行新的掃描作業。
本頁的所有範例都會直接存取 API,但您也可以使用 Container Analysis 用戶端程式庫或 gcloud 指令。
所需權限
所有範例都使用 ListOccurrences
API 方法。如要呼叫這個方法,您必須具備所分析專案的 容器分析例項檢視者
(roles/containeranalysis.occurrences.viewer)
角色。
如果您要分析自己的專案,就已經具備必要權限。
如果您要分析的專案不是您擁有的專案,請參閱 IAM 存取權管理操作說明來授予權限。
如要進一步瞭解使用「結構體分析」的供應商和客戶的存取權類型,請參閱「權限」。
查看映像檔的所有安全漏洞中繼資料
使用篩選器 KIND="VULNERABILITY"
搭配專案 ID 和圖片的完整資源網址 (包括 https://
):
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(kind=\"VULNERABILITY\" AND resourceUrl=\"RESOURCE_URL\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
更改下列內容:
- PROJECT_ID 是您的 Google Cloud 專案 ID。如要查看專案清單,您可以使用
gcloud projects list
。 - RESOURCE_URL 是圖片的完整網址,格式為
https://HOSTNAME/PROJECT_ID/IMAGE_ID@sha256:HASH
。您必須在網址開頭使用https://
。如要找出圖片的網址,您可以使用「我想全面瞭解專案的所有中繼資料」中的呼叫。
輸出內容包含安全漏洞清單,其中包含嚴重性、緩解選項 (如有) 以及內含安全漏洞的套件名稱等詳細資料。
檢查專案中的特定安全漏洞
在多數情況下,Artifact Analysis 會使用 CVE ID 做為漏洞 ID。不過,GitHub 安全警示資料庫中列出的一些安全漏洞並未有相關的 CVE ID。在這種情況下,Artifact Analysis 會改用 GHSA ID。
安全漏洞 ID 會納入 noteName
欄位。開頭為 CVE
的為 CVE ID,開頭為 GHSA
的為 GHSA ID。舉例來說,如果您執行指令查看映像檔的所有安全漏洞,輸出結果如下:
vulnerabilities:
HIGH:
- name: projects/my-project/occurrences/1234fh2c-699a-462f-b920-93a80f56f544
resourceUri: https://my_region-docker.pkg.dev/my-project/my-repo/my-image@sha256:8a1a79b587797c5164ec95977cf7aaaa828694a615947bdaed6a327d5b6a17bb
noteName: projects/goog-vulnz/notes/CVE-2021-32798
kind: VULNERABILITY
...
- name: projects/my-project/occurrences/OCCURRENCE_ID
resourceUri: https://my_region-docker.pkg.dev/my-project/my-repo/my-image@sha256:8a1a79b587797c5164ec95977cf7aaaa828694a615947bdaed6a327d5b6a17bb
noteName: projects/goog-vulnz/notes/GHSA-884p-74jh-xrg2
kind: VULNERABILITY
...
第一個漏洞的 ID 為 CVE-2021-32798
,第二個漏洞的 ID 為 GHSA-884p-74jh-xrg2
。
取得安全漏洞的 ID。
使用下列篩選器運算式中的 CVE ID 或 GHSA ID,即可擷取受影響映像檔的清單:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(noteProjectId=\"goog-vulnz\" AND noteId=\"VULN_ID\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
更改下列內容:
- PROJECT_ID 是您的 Google Cloud 專案 ID。如要查看專案清單,您可以使用
gcloud projects list
。 - VULN_ID 是安全漏洞的 ID。CVE ID 或 GHSA ID 編號,例如
CVE-2021-32798
或GHSA-884p-74jh-xrg2
。
舉例來說,以下呼叫會示範如何擷取專案中含有 CVE-2023-23915
的圖片掃描結果:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(noteProjectId=\"goog-vulnz\" AND noteId=\"CVE-2023-23915\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
更改下列內容:
- PROJECT_ID 是您的 Google Cloud 專案 ID。如要查看專案清單,您可以使用
gcloud projects list
。
搜尋多項專案中的安全漏洞
使用 curl globbing 在各個專案中執行查詢。
舉例來說,以下程式碼段落會設定一個包含兩個專案 ID 的變數,然後為每個專案傳送 API 呼叫,以便搜尋發生次數。
PROJECT_IDS="PROJECT_ID_1,PROJECT_ID_2"
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://containeranalysis.googleapis.com/v1/projects/{$PROJECT_IDS}/occurrences"
更改下列內容:
- PROJECT_ID_1 是您要檢查的第一個專案的 Google Cloud 專案 ID。
- PROJECT_ID_2 是您要檢查的第二個專案的 Google Cloud 專案 ID。
如果您需要查找專案 ID,可以使用 gcloud projects list
查看專案清單。
系統不支援在多個專案中進行單一 API 呼叫。
全面瞭解專案的所有中繼資料
請要求與專案 ID 相關的所有出現次數:
curl -X GET -H "Content-Type: application/json" -H \
"Authorization: Bearer $(gcloud auth print-access-token)" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
更改下列內容:
- PROJECT_ID 是您的 Google Cloud 專案 ID。
輸出內容包括安全漏洞資訊,以及與專案相關的其他支援的中繼資料類型。舉例來說,您的專案可能含有建構詳細資料或認證。
針對特定事件查詢所有可用詳細資料
如要進一步瞭解個別事件的詳細資料,請使用下列要求。
舉例來說,如果您使用 Pub/Sub 接收漏洞發生情形的通知,Pub/Sub 會傳送基本詳細資料,協助您找出發生情形的時間和內容。酬載包含發生 ID。您可以使用事件 ID 查詢詳細資料,協助您分類問題並採取行動。
curl -X GET -H "Content-Type: application/json" -H \
"Authorization: Bearer $(gcloud auth print-access-token)" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences/OCCURRENCE_ID
更改下列內容:
- PROJECT_ID 是您的 Google Cloud 專案 ID。
- OCCURRENCE_ID 是上一個範例中出現次數清單的數值。或者,如果您收到來自 Pub/Sub 的訊息,請使用該訊息中網址結尾處的數值。
輸出內容包括套件類型、漏洞嚴重程度、CVSS 分數,以及修正方式 (如有) 等資訊。