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

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

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

固件分析是一种工具,可用于分析固件映像并提供对固件映像中安全漏洞的理解。

先决条件

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

为 Azure CLI 准备环境

  • 安装 Azure CLI 以在本地运行 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
    

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

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

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

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