다음을 통해 공유


빠른 시작: Azure PowerShell을 사용하여 펌웨어 분석에 펌웨어 이미지 업로드

이 문서에서는 Azure PowerShell을 사용하여 펌웨어 이미지를 펌웨어 분석에 업로드하는 방법을 설명합니다.

펌웨어 분석은 펌웨어 이미지를 분석하고 펌웨어 이미지의 보안 취약성을 이해하는 도구입니다.

필수 조건

이 빠른 시작에서는 펌웨어 분석에 대한 기본적인 이해를 가정합니다. 자세한 내용은 디바이스 빌더의 펌웨어 분석을 참조하세요. 지원되는 파일 시스템 목록은 펌웨어 분석에 대한 질문과 대답을 참조 하세요.

Azure PowerShell에 대한 환경 준비

  1. Azure PowerShell 을 설치하거나 Azure Cloud Shell을 사용합니다.

  2. Connect-AzAccount 명령을 실행하여 Azure PowerShell에 로그인합니다. Cloud Shell을 사용하는 경우 이 단계를 건너뜁니다.

  3. 펌웨어 분석의 Azure PowerShell을 처음 사용하는 경우 확장을 설치합니다.

    Find-Module -Name Az.FirmwareAnalysis | Install-Module
    
  4. 펌웨어 분석에 구독을 등록 합니다.

  5. Set-AzContext를 실행하여 현재 세션에서 사용할 구독을 설정합니다. 펌웨어 이미지를 업로드할 구독을 선택합니다.

작업 영역에 펌웨어 이미지 업로드

  1. 업로드할 펌웨어 이미지를 만듭니다. 리소스 그룹 이름, 작업 영역 이름 및 각 매개 변수에 포함하려는 펌웨어 이미지에 대한 추가 세부 정보(예: Description, , ModelFileNameVendor또는 Version)를 삽입합니다.

    New-AzFirmwareAnalysisFirmware -ResourceGroupName myResourceGroup -WorkspaceName default -Description 'sample description' -FileName file -Vendor vendor -Model model -Version version
    

이 명령의 출력에는 펌웨어 ID인 속성이 포함됩니다 Name . 다음 명령에 대해 이 ID를 저장합니다.

  1. 다음 단계에서 Azure Storage에 펌웨어 이미지를 보내는 데 사용할 SAS URL을 생성합니다. 이전 단계에서 저장한 펌웨어 ID로 바꿉 sampleFirmwareID 니다. 이후 명령에 더 쉽게 액세스할 수 있도록 SAS URL을 변수에 저장할 수 있습니다.

    $sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
    
  2. 다음 스크립트를 사용하여 Azure Storage에 펌웨어 이미지를 업로드합니다. ''pathToFile을 로컬 컴퓨터의 펌웨어 이미지 경로로 바꿉니다. 경로를 따옴표로 묶습니다.

    $uri = [System.Uri] $sasURL.Url
    $storageAccountName = $uri.DnsSafeHost.Split(".")[0]
    $container = $uri.LocalPath.Substring(1)
    $containerName, $blob = $container -split '/', 2
    $sasToken = $uri.Query
    $filePath = 'pathToFile'
    $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -SasToken $sasToken
    Set-AzStorageBlobContent -File $filePath -Container $containerName -Context $storageContext -Blob $blob -Force
    

다음은 Azure PowerShell 명령을 사용하여 펌웨어 이미지를 만들고 업로드하는 방법의 엔드투엔드 워크플로 예제입니다. 환경에 맞게 처음에 설정된 변수의 값을 바꿉니다.

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

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

$FWID = (New-AzFirmwareAnalysisFirmware -ResourceGroupName $resourceGroup -WorkspaceName $workspace -FileName $fileName -Vendor $vendor -Model $model -Version $version).Name

$sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId $FWID -ResourceGroupName $resourceGroup -WorkspaceName $workspace

$uri = [System.Uri] $sasURL.Url
$storageAccountName = $uri.DnsSafeHost.Split(".")[0]
$container = $uri.LocalPath.Substring(1)
$containerName, $blob = $container -split '/', 2
$sasToken = $uri.Query
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -SasToken $sasToken
Set-AzStorageBlobContent -File $filePath -Container $containerName -Context $storageContext -Blob $blob -Force

펌웨어 분석 결과 검색

펌웨어 분석 결과를 검색하려면 분석 상태가 "준비됨"인지 확인해야 합니다. 펌웨어 ID, myResourceGroup 리소스 그룹 이름 및 default 작업 영역 이름으로 대체 sampleFirmwareID 합니다.

Get-AzFirmwareAnalysisFirmware -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default

"상태" 필드를 찾아 "준비됨"을 표시한 다음, 해당 명령을 실행하여 펌웨어 분석 결과를 검색합니다.

분석 상태를 확인하는 프로세스를 자동화하려는 경우 다음 스크립트를 사용하여 "준비됨"에 도달할 때까지 정기적으로 리소스 상태를 확인할 수 있습니다. 이미지 크기에 따라 변수를 설정할 $timeoutInSeconds 수 있습니다. 더 큰 이미지는 분석하는 데 더 오래 걸릴 수 있으므로 필요에 따라 이 변수를 조정합니다.

$ID = Get-AzFirmwareAnalysisFirmware -ResourceGroupName $resourceGroup -WorkspaceName default -FirmwareId $FWID | Select-Object -ExpandProperty Id

Write-Host "Successfully created a firmware image, recognized in Azure by this resource id: $ID."

$timeoutInSeconds = 10800
$startTime = Get-Date

while ($true) {
    $resource = Get-AzResource -ResourceId $ID
    $status = $resource.Properties.Status

    if ($status -eq 'ready') {
        Write-Host "Firmware analysis completed with status: $status"
        break
    }

    $elapsedTime = (Get-Date) - $startTime
    if ($elapsedTime.TotalSeconds -ge $timeoutInSeconds) {
        Write-Host "Timeout reached. Firmware analysis status: $status"
        break
    }

    Start-Sleep -Seconds 10
}

SBOM

다음 명령은 펌웨어 이미지에서 SBOM을 검색합니다. 각 인수를 리소스 그룹, 구독, 작업 영역 이름 및 펌웨어 ID에 대한 적절한 값으로 바꿉니다.

Get-AzFirmwareAnalysisSbomComponent -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default

취약점

다음 명령은 펌웨어 이미지에 있는 CVE를 검색합니다. 각 인수를 리소스 그룹, 구독, 작업 영역 이름 및 펌웨어 ID에 대한 적절한 값으로 바꿉니다.

Get-AzFirmwareAnalysisCve -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

이진 강화

다음 명령은 펌웨어 이미지의 이진 강화에 대한 분석 결과를 검색합니다. 각 인수를 리소스 그룹, 구독, 작업 영역 이름 및 펌웨어 ID에 대한 적절한 값으로 바꿉니다.

Get-AzFirmwareAnalysisBinaryHardening -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

암호 해시

다음 명령은 펌웨어 이미지에서 암호 해시를 검색합니다. 각 인수를 리소스 그룹, 구독, 작업 영역 이름 및 펌웨어 ID에 대한 적절한 값으로 바꿉니다.

Get-AzFirmwareAnalysisPasswordHash -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

인증서

다음 명령은 펌웨어 이미지에서 발견된 취약한 암호화 인증서를 검색합니다. 각 인수를 리소스 그룹, 구독, 작업 영역 이름 및 펌웨어 ID에 대한 적절한 값으로 바꿉니다.

Get-AzFirmwareAnalysisCryptoCertificate -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

구성

다음 명령은 펌웨어 이미지에서 발견된 취약한 암호화 키를 검색합니다. 각 인수를 리소스 그룹, 구독, 작업 영역 이름 및 펌웨어 ID에 대한 적절한 값으로 바꿉니다.

Get-AzFirmwareAnalysisCryptoKey -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default