快速入門:使用 Azure CLI 將韌體映像上傳至適用於 IoT 的 Defender 韌體分析
本文說明如何使用 Azure CLI 將韌體映像上傳至適用於 IoT 韌體分析的 Defender。
適用於IoT的Defender韌體分析 是一種工具,可分析韌體映像,並提供對韌體映射中安全性弱點的瞭解。
必要條件
本快速入門假設對適用於IoT韌體分析的Defender有基本瞭解。 如需詳細資訊,請參閱 裝置產生器的韌體分析。 如需支援的文件系統清單,請參閱 適用於IoT韌體分析的Defender常見問題。
備妥環境以使用 Azure CLI
安裝 Azure CLI 以在本機執行 CLI 命令。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱〈如何在 Docker 容器中執行 Azure CLI〉。
使用 az login 命令來登入 Azure CLI。 請遵循終端機中顯示的步驟來完成驗證程式。 如需其他登入選項,請參閱使用 Azure CLI 登入。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能詳細資訊,請參閱使用 Azure CLI 擴充功能。
- 執行下列命令來安裝適用於IoT的Defender韌體分析擴充功能:
az extension add --name firmwareanalysis
- 執行下列命令來安裝適用於IoT的Defender韌體分析擴充功能:
若要尋找已安裝的版本和相依連結庫,請執行 az version 命令。 若要升級至最新版本,請執行 az upgrade 命令。
將您的訂用帳戶上線 至適用於IoT韌體分析的Defender。
執行 az account set 命令 ,以選取您想要上傳韌體映射的適當訂用帳戶標識碼。
將韌體映像上傳至工作區
建立要上傳的韌體映像。 將資源組名、訂用帳戶標識碼和工作區名稱插入個別參數中。
az firmwareanalysis firmware create --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default
此命令的輸出包含 name
屬性,也就是您的韌體標識碼。 儲存下一個命令的這個標識碼。
產生 SAS URL,您將在下一個步驟中用來將韌體映射傳送至 Azure 儲存體。 將取代
sampleFirmwareID
為您從上一個步驟儲存的韌體標識碼。 您可以將 SAS URL 儲存在變數中,以便日後命令更容易存取:$sasURL = $(az firmwareanalysis workspace generate-upload-url --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID --query "url")
將您的韌體映像上傳至 Azure 儲存體。 將取代
pathToFile
為本機計算機上韌體映射的路徑。az storage blob upload -f pathToFile --blob-url $sasURL
以下是如何使用這些命令來建立和上傳韌體映像的範例工作流程。 若要深入瞭解如何在 CLI 命令中使用變數,請流覽 如何在 Azure CLI 命令中使用變數:
$filePath='/path/to/image'
$resourceGroup='myResourceGroup'
$workspace='default'
$fileName='file1'
$vendor='vendor1'
$model='model'
$version='test'
$FWID=$(az firmwareanalysis firmware create --resource-group $resourceGroup --workspace-name $workspace --file-name $fileName --vendor $vendor --model $model --version $version --query "name")
$URL=$(az firmwareanalysis workspace generate-upload-url --resource-group $resourceGroup --workspace-name $workspace --firmware-id $FWID --query "url")
$OUTPUT=(az storage blob upload -f $filePath --blob-url $URL)
擷取韌體分析結果
若要擷取韌體分析結果,您必須確定分析的狀態為「就緒」:
az firmwareanalysis firmware show --firmware-id sampleFirmwareID --resource-group myResourceGroup --workspace-name default
尋找 [狀態] 欄位以顯示 [就緒],然後執行下列命令來擷取韌體分析結果。
如果您想要將檢查分析狀態的程式自動化,您可以使用 az resource wait
命令。
az resource wait
此命令具有--timeout
參數,這是分析在逾時範圍內未到達「就緒」時,分析將會結束的時間。 默認逾時為 3600,也就是一小時。 大型影像可能需要較長的時間進行分析,因此您可以根據需求使用 --timeout
參數來設定逾時。 以下範例說明如何使用 az resource wait
命令搭配 --timeout
參數來自動檢查分析的狀態,假設您已建立韌體,並將韌體標識符儲存在名為 $FWID
的變數中:
$ID=$(az firmwareanalysis firmware show --resource-group $resourceGroup --workspace-name $workspace --firmware-id $FWID --query "id")
Write-Host (‘Successfully created a firmware image with the firmware ID of ‘ + $FWID + ‘, recognized in Azure by this resource ID: ‘ + $ID + ‘.’)
$WAIT=$(az resource wait --ids $ID --custom "properties.status=='Ready'" --timeout 10800)
$STATUS=$(az resource show --ids $ID --query 'properties.status')
Write-Host ('Firmware analysis completed with status: ' + $STATUS)
確認分析狀態為「就緒」之後,您可以執行命令來提取結果。
$80M
下列命令會擷取韌體映像中的SBOM。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。
az firmwareanalysis firmware sbom-component --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID
弱點
下列命令會擷取韌體映像中找到的 CVE。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。
az firmwareanalysis firmware cve --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID
二進位強化
下列命令會擷取韌體映像中二進位強化的分析結果。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。
az firmwareanalysis firmware binary-hardening --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID
密碼哈希
下列命令會擷取韌體映像中的密碼哈希。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。
az firmwareanalysis firmware password-hash --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID
憑證
下列命令會擷取韌體映像中找到的易受攻擊密碼編譯憑證。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。
az firmwareanalysis firmware crypto-certificate --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID
[索引鍵]
下列命令會擷取韌體映像中找到的易受攻擊密碼編譯密鑰。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。
az firmwareanalysis firmware crypto-key --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID