你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:使用 Azure CLI 将固件映像上传到 Defender for IoT 固件分析

本文介绍如何使用 Azure CLI 将固件映像上传到 Defender for IoT 固件分析。

Defender for IoT 固件分析是一种分析固件映像并提供对固件映像中安全漏洞的理解的工具。

先决条件

本快速入门假定你基本了解 Defender for IoT 固件分析。 有关详细信息,请参阅面向设备制造商的固件分析。 有关支持的文件系统的列表,请参阅有关 Defender for IoT 固件分析的常见问题解答

为 Azure CLI 准备环境

  • 安装 Azure CLI 以在本地运行 CLI 命令。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI

  • 通过使用 az login 命令登录到 Azure CLI。 按照终端中显示的步骤完成身份验证过程。 有关其他登录选项,请参阅使用 Azure CLI 登录

  • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展

    • 运行以下命令来安装 Defender for IoT 固件分析扩展:
      az extension add --name firmwareanalysis
      
  • 若要查找安装的版本和依赖库,请运行 az version 命令。 若要升级到最新版本,请运行 az upgrade 命令。

  • 将订阅加入 Defender for IoT 固件分析。

  • 运行 az account set 命令,选择要在其中上传固件映像的相应订阅 ID。

将固件映像上传到工作区

  1. 创建要上传的固件映像。 将资源组名称、订阅 ID 和工作区名称插入到相应的参数中。

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

此命令的输出包括一个 name 属性,即固件 ID。 保存此 ID 以供下一个命令使用。

  1. 生成 SAS URL,下一步将使用该 URL 将固件映像发送到 Azure 存储。 将 sampleFirmwareID 替换为在上一步保存的固件 ID。 可以将 SAS URL 存储在变量中,以便更轻松地访问将来的命令:

    $sasURL = $(az firmwareanalysis workspace generate-upload-url --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID --query "url")
    
  2. 将固件映像上传到 Azure 存储。 将 pathToFile 替换为本地计算机上的固件映像的路径。

    az storage blob upload -f pathToFile --blob-url $sasURL
    

下面是一个示例工作流,展示了如何使用这些命令创建和上传固件映像。 若要详细了解如何在 CLI 命令中使用变量,请访问如何在 Azure CLI 命令中使用变量

$filePath='/path/to/image'
$resourceGroup='myResourceGroup'
$workspace='default'

$fileName='file1'
$vendor='vendor1'
$model='model'
$version='test'

$FWID=$(az firmwareanalysis firmware create --resource-group $resourceGroup --workspace-name $workspace --file-name $fileName --vendor $vendor --model $model --version $version --query "name")

$URL=$(az firmwareanalysis workspace generate-upload-url --resource-group $resourceGroup --workspace-name $workspace --firmware-id $FWID --query "url")

$OUTPUT=(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 参数设置超时。 下面是一个示例,演示如何将 az resource wait 命令与 --timeout 参数一起使用来自动检查分析的状态,假设你已经创建固件并将固件 ID 存储在名为 $FWID 的变量中:

$ID=$(az firmwareanalysis firmware show --resource-group $resourceGroup --workspace-name $workspace --firmware-id $FWID --query "id")

Write-Host (‘Successfully created a firmware image with the firmware ID of ‘ + $FWID + ‘, recognized in Azure by this resource ID: ‘ + $ID + ‘.’)

$WAIT=$(az resource wait --ids $ID --custom "properties.status=='Ready'" --timeout 10800) 

$STATUS=$(az resource show --ids $ID --query 'properties.status')

Write-Host ('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

Certificates

以下命令检索在固件映像中找到的易受攻击的加密证书。 将每个参数替换为资源组、订阅、工作区名称和固件 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