Краткое руководство. Отправка образов встроенного ПО в Defender для Интернета вещей с помощью Azure CLI
В этой статье объясняется, как использовать Azure CLI для отправки образов встроенного ПО в Defender для Интернета вещей.
Анализ встроенного ПО Defender для Интернета вещей — это средство, которое анализирует образы встроенного ПО и предоставляет представление об уязвимостях безопасности в образах встроенного ПО.
Необходимые компоненты
В этом кратком руководстве предполагается базовое понимание анализа встроенного ПО Defender для Интернета вещей. Дополнительные сведения см. в разделе "Анализ встроенного ПО для построителей устройств". Список поддерживаемых файловых систем см. в статье "Часто задаваемые вопросы о анализе встроенного ПО Defender для Интернета вещей".
Подготовка среды к работе с Azure CLI
Установите Azure CLI для локального выполнения команд CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Выполните вход в Azure CLI с помощью команды az login. Выполните действия, отображаемые в терминале, чтобы завершить процесс проверки подлинности. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.
Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.
- Установите расширение "Анализ встроенного ПО Defender для Интернета вещей", выполнив следующую команду:
az extension add --name firmwareanalysis
- Установите расширение "Анализ встроенного ПО Defender для Интернета вещей", выполнив следующую команду:
Чтобы найти установленную версию и зависимые библиотеки, выполните команду az version. Чтобы обновить до последней версии, выполните команду az upgrade.
Подключение подписки к Анализу встроенного ПО Defender для Интернета вещей.
Выберите соответствующий идентификатор подписки, где вы хотите отправить образы встроенного ПО, выполнив команду az account set.
Отправка образа встроенного ПО в рабочую область
Создайте образ встроенного ПО для отправки. Вставьте имя группы ресурсов, идентификатор подписки и имя рабочей области в соответствующие параметры.
az firmwareanalysis firmware create --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default
Выходные данные этой команды включают свойство, которое является идентификатором name
встроенного ПО. Сохраните этот идентификатор для следующей команды.
Создайте URL-адрес SAS, который будет использоваться на следующем шаге для отправки образа встроенного ПО в служба хранилища Azure. Замените
sampleFirmwareID
идентификатор встроенного ПО, сохраненный на предыдущем шаге. URL-адрес SAS можно хранить в переменной, чтобы упростить доступ для будущих команд:$sasURL = $(az firmwareanalysis workspace generate-upload-url --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID --query "url")
Отправьте образ встроенного ПО в служба хранилища 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, что составляет один час. Большие изображения могут занять больше времени для анализа, поэтому можно задать время ожидания с помощью --timeout
параметра в соответствии с вашими потребностями. Ниже приведен пример использования az resource wait
команды с --timeout
параметром для автоматизации проверка состояния анализа, если вы уже создали встроенное ПО и сохранили идентификатор встроенного ПО в переменной с именем$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 в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.
az firmwareanalysis firmware sbom-component --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID
Недостатки
Следующая команда извлекает CVEs, найденные в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.
az firmwareanalysis firmware cve --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID
Двоичное ужесточение
Следующая команда извлекает результаты анализа на двоичное ужесточение в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.
az firmwareanalysis firmware binary-hardening --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID
Синхронизация хэшей паролей
Следующая команда извлекает хэши паролей в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.
az firmwareanalysis firmware password-hash --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID
Сертификаты
Следующая команда извлекает уязвимые сертификаты шифрования, найденные в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.
az firmwareanalysis firmware crypto-certificate --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID
Ключи
Следующая команда извлекает уязвимые ключи шифрования, найденные в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.
az firmwareanalysis firmware crypto-key --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID