Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как использовать Azure CLI для отправки образов встроенного ПО в анализ встроенного ПО.
Анализ встроенного ПО — это средство, которое анализирует образы встроенного ПО и обеспечивает понимание уязвимостей безопасности в образах встроенного ПО.
Необходимые компоненты
В этом кратком руководстве предполагается базовое понимание анализа встроенного ПО. Дополнительные сведения см. в разделе "Анализ встроенного ПО для построителей устройств". Список поддерживаемых файловых систем см. в разделе Часто задаваемые вопросы о анализе встроенного ПО.
Подготовка среды к работе с Azure CLI
Установите Azure CLI для локального выполнения команд CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Выполните вход в Azure CLI с помощью команды az login. Выполните действия, отображаемые в терминале, чтобы завершить процесс проверки подлинности. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.
Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.
- Установите расширение анализа встроенного ПО, выполнив следующую команду:
az extension add --name firmwareanalysis
- Установите расширение анализа встроенного ПО, выполнив следующую команду:
Чтобы найти установленную версию и зависимые библиотеки, выполните команду az version. Чтобы обновить до последней версии, выполните команду az upgrade.
Подключение подписки к анализу встроенного ПО.
Выберите соответствующий идентификатор подписки, где вы хотите отправить образы встроенного ПО, выполнив команду az account set.
Отправка образа встроенного ПО в рабочую область
Создайте GUID для использования в качестве уникального идентификатора встроенного ПО. Рассмотрим пример.
python -c "import uuid; print(uuid.uuid4())"
Используйте выходные данные команды в качестве идентификатора встроенного ПО в последующих примерах.
Создайте образ встроенного ПО для отправки. Вставьте имя группы ресурсов, идентификатор подписки и имя рабочей области в соответствующие параметры.
az firmwareanalysis firmware create --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id {firmware ID from command above} --vendor {vendor name} --model {model name} --version {version number}
Выходные данные этой команды включают свойство, которое является идентификатором name встроенного ПО.
Сохраните этот идентификатор для следующей команды.
Создайте URL-адрес SAS, который будет использоваться на следующем шаге для отправки образа встроенного ПО в служба хранилища Azure. Замените
sampleFirmwareIDидентификатор встроенного ПО, сохраненный на предыдущем шаге. URL-адрес SAS можно хранить в переменной, чтобы упростить доступ для будущих команд: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Отправьте образ встроенного ПО в служба хранилища 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, что составляет один час. Большие изображения могут занять больше времени для анализа, поэтому можно задать время ожидания с помощью --timeout параметра в соответствии с вашими потребностями. Ниже приведен пример использования az resource wait команды с --timeout параметром для автоматизации проверки состояния анализа, если вы уже создали встроенное ПО и сохранили идентификатор встроенного ПО в переменной с именем $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%
Убедившись, что состояние анализа готово, можно выполнить команды, чтобы извлечь результаты.
Сводка по встроенному ПО
Следующая команда извлекает общую сводку результатов анализа встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, имени рабочей области и идентификатора встроенного ПО.
az firmwareanalysis firmware summary --resource-group myResourceGroup --workspace-name default --firmware-id 123e4567-e89b-12d3-a456-426614174000 --summary-type Firmware
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
Чтобы получить сводку по CVEs, выполните следующую команду.
az firmwareanalysis firmware summary --resource-group myResourceGroup --workspace-name default --firmware-id 123e4567-e89b-12d3-a456-426614174000 --summary-type CommonVulnerabilitiesAndExposures
Двоичное ужесточение
Следующая команда извлекает результаты анализа на двоичное ужесточение в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.
az firmwareanalysis firmware binary-hardening --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID
Чтобы просмотреть итог результатов работы по защите двоичных файлов, выполните следующую команду в терминале:
az firmwareanalysis firmware summary --resource-group myResourceGroup --workspace-name default --firmware-id 123e4567-e89b-12d3-a456-426614174000 --summary-type BinaryHardening
Синхронизация хэшей паролей
Следующая команда извлекает хэши паролей в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.
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 summary --resource-group myResourceGroup --workspace-name default --firmware-id 123e4567-e89b-12d3-a456-426614174000 --summary-type CryptoCertificate
Ключи
Следующая команда извлекает уязвимые ключи шифрования, найденные в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.
az firmwareanalysis firmware crypto-key --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID
Чтобы просмотреть сводку ключей, выполните следующую команду:
az firmwareanalysis firmware summary --resource-group myResourceGroup --workspace-name default --firmware-id 123e4567-e89b-12d3-a456-426614174000 --summary-type CryptoKey