快速入門:使用 Azure PowerShell 將韌體映射上傳至韌體分析
本文說明如何使用 Azure PowerShell 將韌體映射上傳至韌體分析。
韌體分析是一種工具 ,可分析韌體映像,並瞭解韌體映射中的安全性弱點。
必要條件
本快速入門假設對韌體分析有基本的瞭解。 如需詳細資訊,請參閱裝置建立器的韌體分析。 如需支援的文件系統清單,請參閱 韌體分析的常見問題。
準備 Azure PowerShell 的環境
執行 Connect-AzAccount 命令來登入 Azure PowerShell。 如果您使用 Cloud Shell,請略過此步驟。
如果這是您第一次使用韌體分析的 Azure PowerShell,請安裝擴充功能:
Find-Module -Name Az.FirmwareAnalysis | Install-Module
將您的訂用帳戶上線 至韌體分析。
執行 Set-AzContext,將您的訂用帳戶 設定為在目前的會話中使用。 選取您要上傳韌體映像的訂用帳戶。
將韌體映像上傳至工作區
建立要上傳的韌體映像。 插入資源群組名稱、工作區名稱,以及您要包含在個別參數中之韌體映像的任何其他詳細資料,例如
Description
、FileName
、Vendor
、Model
或Version
。New-AzFirmwareAnalysisFirmware -ResourceGroupName myResourceGroup -WorkspaceName default -Description 'sample description' -FileName file -Vendor vendor -Model model -Version version
此命令的輸出包含 Name
屬性,也就是您的韌體標識碼。 儲存下一個命令的這個標識碼。
產生您將在下一個步驟中使用的 SAS URL,以將韌體映射傳送至 Azure 儲存體。 將取代
sampleFirmwareID
為您從上一個步驟儲存的韌體標識碼。 您可以將 SAS URL 儲存在變數中,以便日後命令更容易存取:$sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
使用下列腳本將韌體映射上傳至 Azure 儲存體。 將 『
pathToFile
' 取代為本機電腦上韌體映像的路徑。 以引號括住路徑。$uri = [System.Uri] $sasURL.Url $storageAccountName = $uri.DnsSafeHost.Split(".")[0] $container = $uri.LocalPath.Substring(1) $containerName, $blob = $container -split '/', 2 $sasToken = $uri.Query $filePath = 'pathToFile' $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -SasToken $sasToken Set-AzStorageBlobContent -File $filePath -Container $containerName -Context $storageContext -Blob $blob -Force
以下是從端對端的工作流程範例,說明如何使用 Azure PowerShell 命令來建立和上傳韌體映像。 取代開頭所設定變數的值,以反映您的環境。
$filePath='/path/to/image'
$resourceGroup='myResourceGroup'
$workspace='default'
$fileName='file1'
$vendor='vendor1'
$model='model'
$version='test'
$FWID = (New-AzFirmwareAnalysisFirmware -ResourceGroupName $resourceGroup -WorkspaceName $workspace -FileName $fileName -Vendor $vendor -Model $model -Version $version).Name
$sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId $FWID -ResourceGroupName $resourceGroup -WorkspaceName $workspace
$uri = [System.Uri] $sasURL.Url
$storageAccountName = $uri.DnsSafeHost.Split(".")[0]
$container = $uri.LocalPath.Substring(1)
$containerName, $blob = $container -split '/', 2
$sasToken = $uri.Query
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -SasToken $sasToken
Set-AzStorageBlobContent -File $filePath -Container $containerName -Context $storageContext -Blob $blob -Force
擷取韌體分析結果
若要擷取韌體分析結果,您必須確定分析的狀態為「就緒」。 取代為您的韌體識別碼、myResourceGroup
使用資源群組名稱,並以default
您的工作區名稱取代 sampleFirmwareID
:
Get-AzFirmwareAnalysisFirmware -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
尋找 [狀態] 欄位以顯示 [就緒],然後執行個別命令來擷取韌體分析結果。
如果您想要將檢查分析狀態的程式自動化,您可以使用下列腳本定期檢查資源狀態,直到達到「就緒」為止。 您可以根據影像的大小來設定 $timeoutInSeconds
變數 - 較大的影像可能需要較長的時間進行分析,因此請根據您的需求調整此變數。
$ID = Get-AzFirmwareAnalysisFirmware -ResourceGroupName $resourceGroup -WorkspaceName default -FirmwareId $FWID | Select-Object -ExpandProperty Id
Write-Host "Successfully created a firmware image, recognized in Azure by this resource id: $ID."
$timeoutInSeconds = 10800
$startTime = Get-Date
while ($true) {
$resource = Get-AzResource -ResourceId $ID
$status = $resource.Properties.Status
if ($status -eq 'ready') {
Write-Host "Firmware analysis completed with status: $status"
break
}
$elapsedTime = (Get-Date) - $startTime
if ($elapsedTime.TotalSeconds -ge $timeoutInSeconds) {
Write-Host "Timeout reached. Firmware analysis status: $status"
break
}
Start-Sleep -Seconds 10
}
SBOM
下列命令會擷取韌體映像中的SBOM。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。
Get-AzFirmwareAnalysisSbomComponent -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
弱點
下列命令會擷取韌體映像中找到的 CVE。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。
Get-AzFirmwareAnalysisCve -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
二進位強化
下列命令會擷取韌體映像中二進位強化的分析結果。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。
Get-AzFirmwareAnalysisBinaryHardening -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
密碼雜湊
下列命令會擷取韌體映像中的密碼哈希。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。
Get-AzFirmwareAnalysisPasswordHash -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
憑證
下列命令會擷取韌體映像中找到的易受攻擊密碼編譯憑證。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。
Get-AzFirmwareAnalysisCryptoCertificate -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
[索引鍵]
下列命令會擷取韌體映像中找到的易受攻擊密碼編譯密鑰。 將每個自變數取代為資源群組、訂用帳戶、工作區名稱和韌體標識碼的適當值。
Get-AzFirmwareAnalysisCryptoKey -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default