在本文中,您將瞭解如何安裝、啟用及設定持續修補。 啟用容器暫存庫時,持續修補會自動偵測並解決容器映像檔的作業系統層級弱點。
先決條件
- 您可以使用 Azure Cloud Shell 或 Azure CLI 的本機安裝,最低版本為 2.15.0 或更新版本。
- 您有現有的資源群組與 Azure Container Registry(ACR)。
- 您擁有一個已啟用 ACR 工作功能的 Azure Container Registry(ACR 的免費層不支援 ACR 工作)。
安裝連續補丁工作流程
執行下列命令以安裝 CLI 擴充功能:
az extension add -n acrcssc
啟用持續修補工作流程
- 使用 az login 登入 Azure CLI。
az login
- 登入 ACR。
az acr login -n <myRegistry>
- 執行下列命令來建立名為
continuouspatching.json的檔案,其中包含連續修補 JSON。 JSON 檔名具有彈性。
cat <<EOF > continuouspatching.json
{
"version": "v1",
"tag-convention" : "<incremental|floating>",
"repositories": [{
"repository": "<Repository Name>",
"tags": ["<comma-separated-tags>"],
"enabled": <true|false>
}]
}
EOF
架構會以陣列格式匯入特定的存放庫和標記。 每個變數都會在這裡定義:
version可讓 ACR 小組追蹤您正在使用的架構版本。 除非指示,否則請勿變更此變數。tag-convention是選擇性欄位。 允許的值為「累加」或「浮動」-如需詳細資訊,請參閱 持續修補的重要概念 。repositories是包含詳細存放庫和標記資訊的陣列-
repository指的是儲存庫名稱 -
tags是以逗號分隔的標記陣列。 通配符*可用來表示該存放庫內的所有標記。 -
enabled是 true 或 false 的布爾值,可判斷指定的存放庫是否啟用或未啟用。
-
下列詳細說明客戶想要修補存放庫python內的所有標籤(使用* 符號)的範例組態,並特別修補存放庫中jammy-20240111的 jammy-20240125 和 ubuntu 標籤。
JSON 範例:
{
"version": "v1",
"tag-convention" : "incremental",
"repositories": [{
"repository": "python",
"tags": ["*"],
"enabled": true
},
{
"repository": "ubuntu",
"tags": ["jammy-20240111", "jammy-20240125"],
"enabled": true,
}]
}
- 建立組態檔之後,建議您執行一次模擬執行,以驗證所需的構件是否符合 JSON 準則。 試執行需要稱為
schedule的參數,其會指定連續修補迴圈執行的頻率。 排程旗標是以天為單位來測量,最小值為一天,最大值為 30 天。 例如,如果您想要每天修補映像,您可以將排程指定為1d或 1 天。 如果您希望每週更新一次,可以將排程設定為7d或是每 7 天。
命令架構:
az acr supply-chain workflow create -r <registryname> -g <resourcegroupname> -t continuouspatchv1 --config <JSONfilepath> --schedule <number of days> --dry-run
範例命令:
az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --dry-run
旗標 --dry-run 會輸出由 JSON 檔案配置的所有指定產物。 客戶可以確認已選取正確的項目。 使用範例 ubuntu 組態時,應該會顯示下列結果作為輸出。
Ubuntu: jammy-20240111
Ubuntu: jammy-20240125
使用幫助命令查看所有必需和可選參數。
az acr supply-chain workflow create --help
- 一旦對預先執行的結果感到滿意,請不加上
create標誌再次執行--dry-run命令,以正式建立您的連續修補工作流程。
備註
參數 --schedule 會遵循從當月第 1 天開始的固定日乘數。 也就是說:
- 如果您在 3 日指定
--schedule 7d並執行命令,則下一次排程的執行將會在 7 日,因為 7 是 3 日之後的第一個倍數,從當月第 1 天算起。 - 如果
--schedule是 3d,而今天是 7 日,則下一個排程運行會在 9 日登陸,因為 9 是接下來 7 個 3 的下一個倍數。 - 如果您新增旗標
--run-immediately,則會觸發立即修補程序執行。 後續排程的執行仍會根據您的--schedule值,與當月月初的最接近的天數倍數對齊。 - 排程計數器會每個月 重設 。 無論指定的排程如何,您的工作流程都會在每個月的第一天運行,然後在該月的剩餘天數遵循指定的排程值。 如果我的修補會在 1 月 28 日執行,而我的排程是每 7 天,我的下一個修補將會在 2 月 1 日執行,接著是 2 月 8 日,並按照每 7 天的間隔繼續執行。
命令架構:
az acr supply-chain workflow create -r <registryname> -g <resourcegroupname> -t continuouspatchv1 --config <JSONfilename> --schedule <number of days> --run-immediately
範例命令:
az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --run-immediately
成功命令時(不論您是否包含 --run-immediately),您應該會看到:
工作流程任務已成功排入佇列的確認訊息。
輸出參數,指出工作流程的下一次執行排程時間,因此您可以確切地追蹤何時會再次進行修補。
所有必要/選擇性旗標的協助指令。
az acr supply-chain workflow create --help
使用 Azure 入口網站檢視工作流程任務
- 工作流程成功之後,請移至 Azure 入口網站以檢視執行中的工作。 選取 [服務 -> 存放庫],您應該會看到名為
csscpolicies/patchpolicy的新存放庫。 此存放庫存放持續被引用以進行持續修補作業的 JSON 組態成品。
- 接下來,選取 [服務] 底下的 [工作] - 您應該會看到三個新的工作:
工作:
- cssc-trigger-workflow - 此工作會掃描組態檔,並在每個個別映像上呼叫掃描工作。
- cssc-scan-image - 這項任務會掃描映像以檢查作業系統的弱點。 只有在找到作系統弱點時,此工作才會觸發修補工作。
- cssc-patch-image - 此任務會修補影像。 這些工作會搭配運作,以執行您的連續修補工作流程。
- 您也可以在 [工作] 檢視內的 [執行] 上選取 ,以查看特定工作執行。 您可以在這裡檢視工作成功或失敗的狀態資訊,以及檢視偵錯記錄檔。
使用 CLI 檢視工作流程中的任務
您也可以執行下列 CLI show 命令,以查看每個工作和一般工作流程的詳細數據。 命令會輸出:
- 排程
- 建立日期
- 系統數據,例如上次修改日期、依誰等。
命令架構:
az acr supply-chain workflow show -r <registry> -g <resourceGroup> -t continuouspatchv1
範例命令:
az acr supply-chain workflow show -r myRegistry -g myResourceGroup -t continuouspatchv1
所有必要/選擇性旗標的說明命令:
az acr supply-chain workflow show --help
更新連續修補工作流程
如果您想要對連續修補工作流程進行編輯,更新命令是最簡單的方式。 您可以直接使用更新 CLI 命令來更新排程或 JSON 組態架構。
命令架構:
az acr supply-chain workflow update -r <registry> -g <resourceGroup> -t continuouspatchv1 --config <JSONfilename> --schedule <number of days>
範例命令:
az acr supply-chain workflow update -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d
所有必要/選擇性旗標的說明命令:
az acr supply-chain workflow update --help
若要更新排程,請使用排程的新輸入執行上一個命令。 若要更新 JSON 組態,建議您對檔案進行變更、執行試執行,然後執行更新命令。
刪除連續補丁工作流程
若要刪除連續修補工作流程,請執行下列 CLI 命令。
命令架構:
az acr supply-chain workflow delete -r <registry> -g <resourceGroup> -t continuouspatchv1
範例命令:
az acr supply-chain workflow delete -r myregistry -g myresourcegroup -t continuouspatchv1
所有必要/選擇性旗標的說明命令:
az acr supply-chain workflow delete --help
成功刪除工作流程之後,系統會自動刪除存放庫 「csscpolicies/patchpolicy」。。 也會刪除執行工作流程的三項工作,以及任何目前已排入佇列的執行。