Szybki start: przekazywanie obrazów oprogramowania układowego do analizy oprogramowania układowego przy użyciu programu Azure PowerShell
W tym artykule wyjaśniono, jak używać programu Azure PowerShell do przekazywania obrazów oprogramowania układowego do analizy oprogramowania układowego.
Analiza oprogramowania układowego to narzędzie, które analizuje obrazy oprogramowania układowego i zapewnia zrozumienie luk w zabezpieczeniach na obrazach oprogramowania układowego.
Wymagania wstępne
W tym przewodniku Szybki start założono podstawową wiedzę na temat analizy oprogramowania układowego. Aby uzyskać więcej informacji, zobacz Analiza oprogramowania układowego dla konstruktorów urządzeń. Aby uzyskać listę obsługiwanych systemów plików, zobacz Często zadawane pytania dotyczące analizy oprogramowania układowego.
Przygotowywanie środowiska do programu Azure PowerShell
Zainstaluj program Azure PowerShell lub użyj usługi Azure Cloud Shell.
Zaloguj się do programu Azure PowerShell, uruchamiając polecenie Connect-AzAccount. Pomiń ten krok, jeśli używasz usługi Cloud Shell.
Jeśli jest to pierwsze użycie programu Azure PowerShell analizy oprogramowania układowego, zainstaluj rozszerzenie:
Find-Module -Name Az.FirmwareAnalysis | Install-Module
Dołącz subskrypcję do analizy oprogramowania układowego.
Uruchom polecenie Set-AzContext , aby ustawić subskrypcję do użycia w bieżącej sesji. Wybierz subskrypcję, w której chcesz przekazać obrazy oprogramowania układowego.
Przekazywanie obrazu oprogramowania układowego do obszaru roboczego
Utwórz obraz oprogramowania układowego do przekazania. Wstaw nazwę grupy zasobów, nazwę obszaru roboczego i wszelkie dodatkowe szczegóły dotyczące obrazu oprogramowania układowego, które chcesz uwzględnić w odpowiednich parametrach, takich jak , , , lub
Version
Model
.Vendor
FileName
Description
New-AzFirmwareAnalysisFirmware -ResourceGroupName myResourceGroup -WorkspaceName default -Description 'sample description' -FileName file -Vendor vendor -Model model -Version version
Dane wyjściowe tego polecenia zawierają Name
właściwość , która jest identyfikatorem oprogramowania układowego. Zapisz ten identyfikator dla następnego polecenia.
Wygeneruj adres URL sygnatury dostępu współdzielonego, którego użyjesz w następnym kroku, aby wysłać obraz oprogramowania układowego do usługi Azure Storage. Zastąp
sampleFirmwareID
element identyfikatorem oprogramowania układowego zapisanym w poprzednim kroku. Adres URL sygnatury dostępu współdzielonego można przechowywać w zmiennej, aby ułatwić dostęp do przyszłych poleceń:$sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Użyj poniższego skryptu, aby przekazać obraz oprogramowania układowego do usługi Azure Storage. Zastąp ciąg "
pathToFile
" ścieżką do obrazu oprogramowania układowego na komputerze lokalnym. Zawijaj ścieżkę w cudzysłowie.$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
Oto przykładowy przepływ pracy z końca tego, jak można użyć poleceń programu Azure PowerShell do utworzenia i przekazania obrazu oprogramowania układowego. Zastąp wartości zmiennych ustawionych na początku, aby odzwierciedlić środowisko.
$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
Pobieranie wyników analizy oprogramowania układowego
Aby pobrać wyniki analizy oprogramowania układowego, upewnij się, że stan analizy to "Gotowe". Zastąp sampleFirmwareID
ciąg identyfikatorem myResourceGroup
oprogramowania układowego nazwą grupy zasobów i default
nazwą obszaru roboczego:
Get-AzFirmwareAnalysisFirmware -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Wyszukaj pole "status", aby wyświetlić "Gotowe", a następnie uruchom odpowiednie polecenia, aby pobrać wyniki analizy oprogramowania układowego.
Jeśli chcesz zautomatyzować proces sprawdzania stanu analizy, możesz użyć następującego skryptu, aby okresowo sprawdzać stan zasobu, dopóki nie osiągnie wartości "Gotowe". Zmienną $timeoutInSeconds
można ustawić w zależności od rozmiaru obrazu — analizowanie większych obrazów może trwać dłużej, więc dostosuj tę zmienną zgodnie z potrzebami.
$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
Następujące polecenie pobiera SBOM na obrazie oprogramowania układowego. Zastąp każdy argument odpowiednią wartością dla grupy zasobów, subskrypcji, nazwy obszaru roboczego i identyfikatora oprogramowania układowego.
Get-AzFirmwareAnalysisSbomComponent -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Wady
Następujące polecenie pobiera cves znalezione na obrazie oprogramowania układowego. Zastąp każdy argument odpowiednią wartością dla grupy zasobów, subskrypcji, nazwy obszaru roboczego i identyfikatora oprogramowania układowego.
Get-AzFirmwareAnalysisCve -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Wzmacnianie zabezpieczeń binarnych
Poniższe polecenie pobiera wyniki analizy dotyczące wzmacniania zabezpieczeń binarnych na obrazie oprogramowania układowego. Zastąp każdy argument odpowiednią wartością dla grupy zasobów, subskrypcji, nazwy obszaru roboczego i identyfikatora oprogramowania układowego.
Get-AzFirmwareAnalysisBinaryHardening -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Skróty haseł
Następujące polecenie pobiera skróty haseł w obrazie oprogramowania układowego. Zastąp każdy argument odpowiednią wartością dla grupy zasobów, subskrypcji, nazwy obszaru roboczego i identyfikatora oprogramowania układowego.
Get-AzFirmwareAnalysisPasswordHash -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Certyfikaty
Następujące polecenie pobiera narażone certyfikaty kryptograficzne, które zostały znalezione na obrazie oprogramowania układowego. Zastąp każdy argument odpowiednią wartością dla grupy zasobów, subskrypcji, nazwy obszaru roboczego i identyfikatora oprogramowania układowego.
Get-AzFirmwareAnalysisCryptoCertificate -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Klucze
Następujące polecenie pobiera wrażliwe klucze kryptograficzne, które zostały znalezione na obrazie oprogramowania układowego. Zastąp każdy argument odpowiednią wartością dla grupy zasobów, subskrypcji, nazwy obszaru roboczego i identyfikatora oprogramowania układowego.
Get-AzFirmwareAnalysisCryptoKey -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default