次の方法で共有


クイック スタート: Azure PowerShell を使用して、ファームウェア分析にファームウェア イメージをアップロードする

この記事では、Azure PowerShell を使用してファームウェア イメージをファームウェア分析にアップロードする方法について説明します。

ファームウェア分析は、ファームウェア イメージを分析し、ファームウェア イメージのセキュリティの脆弱性を理解できるようにするツールです。

前提条件

このクイック スタートでは、ファームウェア分析に関する基本的な理解を前提としています。 詳細については、「デバイス ビルダーのファームウェア分析」を参照してください。 サポートされているファイル システムの一覧については、「ファームウェア分析についてよく寄せられる質問」を参照してください。

Azure PowerShell の環境を準備する

  1. Azure PowerShell をインストールするか、Azure Cloud Shell を使用します

  2. Connect-AzAccount コマンドを実行して Azure PowerShell にサインインします。 Cloud Shell を使用する場合は、この手順をスキップしてください。

  3. ファームウェア分析の Azure PowerShell を初めて使用する場合は、拡張機能をインストールします。

    Find-Module -Name Az.FirmwareAnalysis | Install-Module
    
  4. サブスクリプションをファームウェア分析にオンボードします。

  5. Set-AzContext を実行して、現在のセッションで使用するサブスクリプションを設定します。 ファームウェア イメージをアップロードするサブスクリプションを選択します。

ワークスペースにファームウェア イメージをアップロードする

  1. アップロードするファームウェア イメージを作成します。 リソース グループ名、ワークスペース名、および組み込むファームウェア イメージに関する追加の詳細をそれぞれのパラメーター (DescriptionFileNameVendorModelVersion など) に挿入します。

    New-AzFirmwareAnalysisFirmware -ResourceGroupName myResourceGroup -WorkspaceName default -Description 'sample description' -FileName file -Vendor vendor -Model model -Version version
    

このコマンドの出力には、ファームウェア ID である Name プロパティが含まれています。 次のコマンドで使用できるように、この ID を保存します。

  1. 次の手順で使用する SAS URL を生成して、ファームウェア イメージを Azure Storage に送信します。 sampleFirmwareID を、前の手順で保存したファームウェア ID に置き換えます。 SAS URL を変数に格納することで、次回以降のコマンドで簡単にアクセスできできるようになります:

    $sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
    
  2. 次のスクリプトを使用して、ファームウェア イメージを Azure Storage にアップロードします。 パスを含む '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

ファームウェア分析の結果を取得する

ファームウェア分析結果を取得するには、分析の状態が "準備完了" であることを確認する必要があります。 sampleFirmwareID をファームウェア ID で、myResourceGroup をリソース グループ名で、default をワークスペース名で置き換えます。

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 を取得します。 各引数を、リソース グループ、サブスクリプション、ワークスペース名、ファームウェア ID の適切な値に置き換えます。

Get-AzFirmwareAnalysisSbomComponent -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default

弱点

次のコマンドでは、ファームウェア イメージで見つかった CVE を取得します。 各引数を、リソース グループ、サブスクリプション、ワークスペース名、ファームウェア ID の適切な値に置き換えます。

Get-AzFirmwareAnalysisCve -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

バイナリのセキュリティ強化

次のコマンドでは、ファームウェア イメージでセキュリティを強化したバイナリの分析結果を取得します。 各引数を、リソース グループ、サブスクリプション、ワークスペース名、ファームウェア ID の適切な値に置き換えます。

Get-AzFirmwareAnalysisBinaryHardening -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

パスワード ハッシュ

次のコマンドは、ファームウェア イメージのパスワード ハッシュを取得します。 各引数を、リソース グループ、サブスクリプション、ワークスペース名、ファームウェア ID の適切な値に置き換えます。

Get-AzFirmwareAnalysisPasswordHash -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

証明書

次のコマンドでは、ファームウェア イメージで見つかった脆弱な暗号化証明書を取得します。 各引数を、リソース グループ、サブスクリプション、ワークスペース名、ファームウェア ID の適切な値に置き換えます。

Get-AzFirmwareAnalysisCryptoCertificate -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

キー

次のコマンドでは、ファームウェア イメージで見つかった脆弱な暗号化キーを取得します。 各引数を、リソース グループ、サブスクリプション、ワークスペース名、ファームウェア ID の適切な値に置き換えます。

Get-AzFirmwareAnalysisCryptoKey -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default