次の方法で共有


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

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

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

前提条件

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

Azure CLI 用の環境を準備する

  • Azure CLI をローカルで実行するには、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

  • az login コマンドを使用して、Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

  • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • 次のコマンドを実行して、ファームウェア分析拡張機能をインストールします。
      az extension add --name firmwareanalysis
      
  • インストールされているバージョンおよび依存ライブラリを検索するには、az version コマンドを実行します。 最新バージョンにアップグレードするには、az upgrade コマンドを実行します。

  • サブスクリプションをファームウェア分析にオンボードします。

  • az account set コマンドを実行して、ファームウェア イメージをアップロードする適切なサブスクリプション ID を選択します。

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

  1. アップロードするファームウェア イメージを作成します。 リソース グループ名、サブスクリプション ID、ワークスペース名をそれぞれのパラメーターに挿入します。

    az firmwareanalysis firmware create --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default
    

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

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

    set resourceGroup=myResourceGroup
    set subscription=123e4567-e89b-12d3-a456-426614174000
    set workspace=default
    set firmwareID=sampleFirmwareID
    
    for /f "tokens=*" %i in ('az firmwareanalysis workspace generate-upload-url --resource-group %resourceGroup% --subscription %subscription% --workspace-name %workspace% --firmware-id %firmwareID% --query "url"') do set sasURL=%i
    
  2. ファームウェア イメージを Azure Storage にアップロードします。 パスを含む pathToFile を、ローカル コンピューターのファームウェア イメージに置き換えます。

    az storage blob upload -f "pathToFile" --blob-url %sasURL%
    

これらのコマンドを使用してファームウェア イメージを作成およびアップロードするワークフローの例を示します。 CLI コマンドでの変数の使用方法の詳細については、「Azure CLI のコマンドで変数を使用する方法」をご覧ください。

set filePath="/path/to/image"
set resourceGroup="myResourceGroup"
set workspace="default"

set fileName="file1"
set vendor="vendor1"
set model="model"
set version="test"

for /f "tokens=*" %i in ('az firmwareanalysis firmware create --resource-group %resourceGroup% --workspace-name %workspace% --file-name %fileName% --vendor %vendor% --model %model% --version %version% --query "name"') do set FWID=%i

for /f "tokens=*" %i in ('az firmwareanalysis workspace generate-upload-url --resource-group %resourceGroup% --workspace-name %workspace% --firmware-id %FWID% --query "url"') do set URL=%i

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 (1 時間) です。 大きなイメージは分析に時間がかかる場合があるため、必要に応じて --timeout パラメーターを使用してタイムアウトを設定できます。 ファームウェアを作成し、$FWID という変数にファームウェア ID を格納していると仮定して、az resource wait コマンドを --timeout パラメータと共に使用して、分析の状態の確認を自動化する例を次に示します。

set resourceGroup="myResourceGroup"
set workspace="default"
set FWID="yourFirmwareID"

for /f "tokens=*" %i in ('az firmwareanalysis firmware show --resource-group %resourceGroup% --workspace-name %workspace% --firmware-id %FWID% --query "id"') do set ID=%i

echo Successfully created a firmware image with the firmware ID of %FWID%, recognized in Azure by this resource ID: %ID%.

for /f "tokens=*" %i in ('az resource wait --ids %ID% --custom "properties.status=='Ready'" --timeout 10800') do set WAIT=%i

for /f "tokens=*" %i in ('az resource show --ids %ID% --query "properties.status"') do set STATUS=%i

echo Firmware analysis completed with status: %STATUS%

分析状態が "準備完了" であることを確認したら、結果をプルするためのコマンドを実行できます。

SBOM

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

az firmwareanalysis firmware sbom-component --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

弱点

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

az firmwareanalysis firmware cve --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

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

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

az firmwareanalysis firmware binary-hardening --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

パスワード ハッシュ

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

az firmwareanalysis firmware password-hash --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

証明書

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

az firmwareanalysis firmware crypto-certificate --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

キー

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

az firmwareanalysis firmware crypto-key --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID