Udostępnij za pośrednictwem


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

  1. Zainstaluj program Azure PowerShell lub użyj usługi Azure Cloud Shell.

  2. Zaloguj się do programu Azure PowerShell, uruchamiając polecenie Connect-AzAccount. Pomiń ten krok, jeśli używasz usługi Cloud Shell.

  3. Jeśli jest to pierwsze użycie programu Azure PowerShell analizy oprogramowania układowego, zainstaluj rozszerzenie:

    Find-Module -Name Az.FirmwareAnalysis | Install-Module
    
  4. Dołącz subskrypcję do analizy oprogramowania układowego.

  5. 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

  1. 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 VersionModel. VendorFileNameDescription

    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.

  1. 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
    
  2. 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