Aracılığıyla paylaş


Sanal makine görüntüsünü test edin

Bu makalede, en son Azure Market yayımlama gereksinimlerini karşıladığından emin olmak için bir sanal makine (VM) görüntüsünün nasıl test edilmesinin açıklandığı açıklanmaktadır.

Azure VM dağıtma

Azure İşlem Galerisi (eski adıyla Paylaşılan Görüntü Galerisi) görüntüsünden vm dağıtmak için:

  1. Azure İşlem Galerisi görüntü sürümünü açın.
  2. VM Oluştur'u seçin.
  3. Bir Sanal Makine Adı sağlayın ve bir VM Boyutu seçin.
  4. Gözden geçir ve oluştur’u seçin. Doğrulama geçirildikten sonra Oluştur'u seçin.

Not

Bir vhd dosyasından VM oluşturmak için, Sertifika aracını bir VM görüntüsüne bağlama veya Kendi Kendine Test API'sini kullanmak için PowerShell kullanma altındaki yönergeleri izleyin.

VM teklifinizi göndermeden önce şu adımları tamamlayın:

  • Genelleştirilmiş görüntünüzü kullanarak Azure VM dağıtma; Bkz . Onaylı bir temel kullanarak sanal makine oluşturma veya kendi görüntünüzü kullanarak sanal makine oluşturma.
  • Doğrulamaları çalıştırın.

Doğrulamaları çalıştırma

Dağıtılan görüntüde doğrulamaları çalıştırmanın iki yolu vardır.

Azure Sertifikalı için Sertifikasyon Test Aracı'nı kullanma

Önemli

Sertifika test aracını çalıştırmak için Windows Uzaktan Yönetim hizmetinin Windows üzerinde çalışıyor ve yapılandırılmış olması gerekir. Bu, 5986 numaralı bağlantı noktasına erişim sağlar. Daha fazla bilgi için bkz . Windows Uzaktan Yönetimi için yükleme ve yapılandırma.

Sertifikasyon test aracını indirme ve çalıştırma

Azure Sertifikalı için Sertifika Test Aracı yerel bir Windows makinesinde çalışır ancak Azure tabanlı bir Windows veya Linux VM'yi test eder. Kullanıcı VM görüntünüzün Microsoft Azure ile kullanılabileceğini ve VHD'nizi hazırlamayla ilgili rehberlik ve gereksinimlerin karşılandığını onaylar.

  1. Azure Sertifikalı için en son Sertifika Test Aracı'nı indirin ve yükleyin.
  2. Sertifikasyon aracını açın ve ardından Yeni Test Başlat'ı seçin.
  3. Test Bilgileri ekranında, test çalıştırması için bir Test Adı girin.
  4. Windows Server (Windows için 5986 numaralı bağlantı noktasına izin ver) veya Linux (Linux için 22 numaralı bağlantı noktasına izin ver) vm'nizin Platformunu seçin. Platform seçiminiz kalan seçenekleri etkiler.
  5. VM'niz bu veritabanı hizmetini kullanıyorsa Azure SQL Veritabanı için test et onay kutusunu seçin.

Sertifika aracını bir VM görüntüsüne bağlama

  1. SSH Kimlik Doğrulama modunu seçin: Parola Kimlik Doğrulaması veya Anahtar Dosyası Kimlik Doğrulaması.

  2. Parola tabanlı kimlik doğrulaması kullanıyorsanız VM DNS Adı, Kullanıcı adı ve Parola değerlerini girin. Varsayılan SSH Bağlantı Noktası numarasını da değiştirebilirsiniz.

    VM test bilgilerinin seçimini gösterir.

  3. Anahtar dosya tabanlı kimlik doğrulaması kullanıyorsanız VM DNS Adı, Kullanıcı adı ve Özel anahtar konumu değerlerini girin. Ayrıca parola ekleyebilir veya varsayılan SSH Bağlantı Noktası numarasını değiştirebilirsiniz.

  4. Tam VM DNS adını girin (örneğin, MyVMName.Cloudapp.net).

  5. Kullanıcı Adı ve Parola girin.

    VM kullanıcı adı ve parola seçimini gösterir.

  6. İleri'yi seçin.

Sertifikasyon testi çalıştırma

Sertifika aracında VM görüntünüz için parametre değerlerini verdikten sonra, VM'nize geçerli bir bağlantı oluşturmak için Bağlantıyı Sına'yı seçin. Bağlantı doğrulandıktan sonra, testi başlatmak için İleri'yi seçin. Test tamamlandığında sonuçlar bir tabloda görüntülenir. Durum sütununda her test için (Başarılı/Başarısız/Uyarı) gösterilir. Testlerden herhangi biri başarısız olursa, görüntünüz sertifikalı değildir. Bu durumda gereksinimleri ve hata iletilerini gözden geçirin, önerilen değişiklikleri yapın ve testi yeniden çalıştırın.

Otomatikleştirilmiş test tamamlandıktan sonra Anket ekranının iki sekmesinde vm görüntünüz hakkında ek bilgi sağlayın( Genel Değerlendirme ve Çekirdek Özelleştirmesi) ve ardından İleri'yi seçin.

Son ekran, Linux VM görüntüsü için SSH erişim bilgileri ve özel durumlar arıyorsanız başarısız değerlendirmeler için bir açıklama gibi daha fazla bilgi sağlamanıza olanak tanır.

Son olarak, yürütülen test çalışmalarının test sonuçlarını ve günlük dosyalarını ve ankete yanıtlarınızı indirmek için Rapor Oluştur'a tıklayın.

Not

Vm'de güvenlik duvarları gibi yazılımlar yüklü olduğundan, birkaç yayımcının VM'lerin kilitlenmesi gereken senaryoları vardır. Bu durumda, Sertifikalı Test Aracı'nı buradan indirin ve raporu İş Ortağı Merkezi desteğine gönderin.

Kendi Kendine Test API'sini kullanmak için PowerShell kullanma

Linux işletim sisteminde

PowerShell'de API'yi çağırma:

  1. Erişim belirtecini oluşturun.
  2. API'yi çağırmak için Invoke-WebRequest komutunu kullanın.
  3. Aşağıdaki kod örneğinde ve ekran yakalamada gösterildiği gibi yöntemi Post ve içerik türü JSON'dir.
  4. Gövde parametrelerini JSON biçiminde belirtin.

Aşağıdaki komutlar bir erişim belirteci oluşturur:

$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Content-Type", "application/x-www-form-urlencoded")
$body = "grant_type=client_credentials&client_id=$clientId&client_secret=$clientSecret&resource=https%3A%2F%2Fmanagement.core.windows.net"
$response = Invoke-RestMethod "https://login.microsoftonline.com/$tenantId/oauth2/token" -Method 'POST' -Headers $headers -Body $body
$accessToken = $response.access_token

PowerShell'de erişim belirteci oluşturmaya yönelik bir ekran örneği gösterir.

Bu örnekte API'ye bir PowerShell çağrısı gösterilir (VM oluşturma sırasında 22 numaralı bağlantı noktasına izin ver):

$accesstoken = "token"
$headers = @{ "Authorization" = "Bearer $accesstoken" }
$DNSName = "<Machine DNS Name>"
$UserName = "<User ID>"
$Password = "<Password>"
$OS = "Linux"
$PortNo = "22"
$CompanyName = "ABCD"
$AppId = "<Application ID>"
$TenantId = "<Tenant ID>"

$body = @{
   "DNSName" = $DNSName
   "UserName" = $UserName
   "Password" = $Password
   "OS" = $OS
   "PortNo" = $PortNo
   "CompanyName" = $CompanyName
   "AppId" = $AppId
   "TenantId" = $TenantId
} | ConvertTo-Json

$body

$uri = "https://isvapp.azurewebsites.net/selftest-vm"

$res = (Invoke-WebRequest -Method "Post" -Uri $uri -Body $body -ContentType "application/json" -Headers $headers).Content


Aşağıda, PowerShell'de API'yi çağırma örneği verilmiştir:

PowerShell'de API'yi çağırmak için ekran örneği.


Önceki örneği kullanarak JSON dosyasını alabilir ve ayrıştırarak aşağıdaki ayrıntıları alabilirsiniz:

$resVar = $res | ConvertFrom-Json
$actualresult = $resVar.Response | ConvertFrom-Json

Write-Host "OSName: $($actualresult.OSName)"
Write-Host "OSVersion: $($actualresult.OSVersion)"
Write-Host "Overall Test Result: $($actualresult.TestResult)"

For ($i = 0; $i -lt $actualresult.Tests.Length; $i++) {
   Write-Host "TestID: $($actualresult.Tests[$i].TestID)"
   Write-Host "TestCaseName: $($actualresult.Tests[$i].TestCaseName)"
   Write-Host "Description: $($actualresult.Tests[$i].Description)"
   Write-Host "Result: $($actualresult.Tests[$i].Result)"
   Write-Host "ActualValue: $($actualresult.Tests[$i].ActualValue)"
}


öğesini gösteren $res.Contentbu örnek ekran, test sonuçlarınızın ayrıntılarını JSON biçiminde gösterir:

Test sonuçlarının ayrıntılarıyla Birlikte PowerShell'de API'yi çağırmak için ekran örneği.


Aşağıda çevrimiçi bir JSON görüntüleyicisinde (Kod Güzelleştirmesi veya JSON Görüntüleyicisi gibi) görüntülenen JSON test sonuçlarının bir örneği verilmiştir.

Çevrimiçi JSON görüntüleyicisinde daha fazla test sonucu.

Windows işletim sisteminde

PowerShell'de API'yi çağırma:

  1. API'yi çağırmak için Invoke-WebRequest komutunu kullanın.
  2. Aşağıdaki kod örneğinde ve örnek ekranda gösterildiği gibi yöntemi Post ve içerik türü JSON'dir.
  3. Gövde parametrelerini JSON biçiminde oluşturun.

Bu kod örneği, API'ye bir PowerShell çağrısı gösterir (VM oluşturma sırasında bağlantı noktası 5986'ya izin verin):

$accesstoken = "Get token for your Client AAD App"
$headers = @{ "Authorization" = "Bearer $accesstoken" }
$Body = @{ 
   "DNSName" = "XXXX.westus.cloudapp.azure.com"
   "UserName" = "XXX"
   "Password" = "XXX@123456"
   "OS" = "Windows"
   "PortNo" = "5986"
   "CompanyName" = "ABCD"
   "AppId" = "XXXX-XXXX-XXXX"
   "TenantId" = "XXXX-XXXX-XXXX"
} | ConvertTo-Json

$res = Invoke-WebRequest -Method "Post" -Uri $uri -Body $Body -ContentType "application/json" –Headers $headers;
$Content = $res | ConvertFrom-Json

Bu örnek ekranlar, PowerShell'de API'yi çağırma örneklerini gösterir:

SSH anahtarıyla:

SSH Anahtarı ile PowerShell'de API'yi çağırma.

Parola ile:

PowerShell'de API'yi parolayla çağırma.


Önceki örneği kullanarak JSON dosyasını alabilir ve ayrıştırarak aşağıdaki ayrıntıları alabilirsiniz:

$resVar = $res | ConvertFrom-Json
$actualresult = $resVar.Response | ConvertFrom-Json

Write-Host "OSName: $($actualresult.OSName)"
Write-Host "OSVersion: $($actualresult.OSVersion)"
Write-Host "Overall Test Result: $($actualresult.TestResult)"

For ($i = 0; $i -lt $actualresult.Tests.Length; $i++) {
   Write-Host "TestID: $($actualresult.Tests[$i].TestID)"
   Write-Host "TestCaseName: $($actualresult.Tests[$i].TestCaseName)"
   Write-Host "Description: $($actualresult.Tests[$i].Description)"
   Write-Host "Result: $($actualresult.Tests[$i].Result)"
   Write-Host "ActualValue: $($actualresult.Tests[$i].ActualValue)"
}


öğesini gösteren bu $res.Contentekran, test sonuçlarınızın ayrıntılarını JSON biçiminde gösterir:

Test sonuçlarının JSON biçimindeki ayrıntıları.


Aşağıda çevrimiçi bir JSON görüntüleyicisinde (Kod Güzelleştirme veya JSON Görüntüleyicisi gibi) görüntülenen test sonuçlarının bir örneği verilmiştir.

Sonuçları çevrimiçi bir JSON görüntüleyicisinde test edin.

Linux işletim sisteminde Kendi Kendine Test API'sini kullanmak için CURL kullanma

Bu örnekte curl, Microsoft Entra Id ve Self-Host VM'ye POST API çağrısı yapmak için kullanılacaktır.

  1. Kendi kendine konak VM'de kimlik doğrulaması yapmak için bir Microsoft Entra belirteci isteme

    Curl isteğinde doğru değerlerin değiştirildiğinden emin olun.

    curl --location --request POST 'https://login.microsoftonline.com/{TENANT_ID}/oauth2/token' \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data-urlencode 'grant_type=client_credentials' \
    --data-urlencode 'client_id={CLIENT_ID} ' \
    --data-urlencode 'client_secret={CLIENT_SECRET}' \
    --data-urlencode 'resource=https://management.core.windows.net'
    

    İstekten gelen yanıta bir örnek aşağıda verilmiştir:

    {
        "token_type": "Bearer",
        "expires_in": "86399",
        "ext_expires_in": "86399",
        "expires_on": "1599663998",
        "not_before": "1599577298",
        "resource": "https://management.core.windows.net",
        "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJS…"
    }
    
  2. Kendi kendini test eden VM için istek gönderme

    Taşıyıcı belirtecinin ve parametrelerinin doğru değerlerle değiştirildiğinden emin olun.

    curl --location --request POST 'https://isvapp.azurewebsites.net/selftest-vm' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJS…' \
    --data-raw '{
        "DNSName": "avvm1.eastus.cloudapp.azure.com",
        "UserName": "azureuser",
        "Password": "SECURE_PASSWORD_FOR_THE_SSH_INTO_VM",
        "OS": "Linux",
        "PortNo": "22",
        "CompanyName": "COMPANY_NAME",
        "AppId": "CLIENT_ID_SAME_AS_USED_FOR_AAD_TOKEN ",
        "TenantId": "TENANT_ID_SAME_AS_USED_FOR_AAD_TOKEN"
    }'
    

    Kendi kendini test eden VM API çağrısından örnek yanıt:

    {
        "TrackingId": "9bffc887-dd1d-40dd-a8a2-34cee4f4c4c3",
        "Response": "{\"SchemaVersion\":1,\"AppCertificationCategory\":\"Microsoft Single VM Certification\",\"ProviderID\":\"050DE427-2A99-46D4-817C-5354D3BF2AE8\",\"OSName\":\"Ubuntu 18.04\",\"OSDistro\":\"Ubuntu 18.04.5 LTS\",\"KernelVersion\":\"5.4.0-1023-azure\",\"KernelFullVersion\":\"Linux version 5.4.0-1023-azure (buildd@lgw01-amd64-053) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #23~18.04.1-Ubuntu SMP Thu Aug 20 14:46:48 UTC 2020\\n\",\"OSVersion\":\"18.04\",\"CreatedDate\":\"09/08/2020 01:13:47\",\"TestResult\":\"Pass\",\"APIVersion\":\"1.5\",\"Tests\":[{\"TestID\":\"48\",\"TestCaseName\":\"Bash History\",\"Description\":\"Bash history files should be cleared before creating the VM image.\",\"Result\":\"Passed\",\"ActualValue\":\"No file Exist\",\"RequiredValue\":\"1024\"},{\"TestID\":\"39\",\"TestCaseName\":\"Linux Agent Version\",\"Description\":\"Azure Linux Agent Version 2.2.41 and above should be installed.\",\"Result\":\"Passed\",\"ActualValue\":\"2.2.49\",\"RequiredValue\":\"2.2.41\"},{\"TestID\":\"40\",\"TestCaseName\":\"Required Kernel Parameters\",\"Description\":\"Verifies the following kernel parameters are set console=ttyS0, earlyprintk=ttyS0, rootdelay=300\",\"Result\":\"Warning\",\"ActualValue\":\"Missing Parameter: rootdelay=300\\r\\nMatched Parameter: console=ttyS0,earlyprintk=ttyS0\",\"RequiredValue\":\"console=ttyS0#earlyprintk=ttyS0#rootdelay=300\"},{\"TestID\":\"41\",\"TestCaseName\":\"Swap Partition on OS Disk\",\"Description\":\"Verifies that no Swap partitions are created on the OS disk.\",\"Result\":\"Passed\",\"ActualValue\":\"No. of Swap Partitions: 0\",\"RequiredValue\":\"swap\"},{\"TestID\":\"42\",\"TestCaseName\":\"Root Partition on OS Disk\",\"Description\":\"It is recommended that a single root partition is created for the OS disk.\",\"Result\":\"Passed\",\"ActualValue\":\"Root Partition: 1\",\"RequiredValue\":\"1\"},{\"TestID\":\"44\",\"TestCaseName\":\"OpenSSL Version\",\"Description\":\"OpenSSL Version should be >=0.9.8.\",\"Result\":\"Passed\",\"ActualValue\":\"1.1.1\",\"RequiredValue\":\"0.9.8\"},{\"TestID\":\"45\",\"TestCaseName\":\"Python Version\",\"Description\":\"Python version 2.6+ is highly recommended. \",\"Result\":\"Passed\",\"ActualValue\":\"2.7.17\",\"RequiredValue\":\"2.6\"},{\"TestID\":\"46\",\"TestCaseName\":\"Client Alive Interval\",\"Description\":\"It is recommended to set ClientAliveInterval to 180. On the application need, it can be set between 30 to 235. \\nIf you are enabling the SSH for your end users this value must be set as explained.\",\"Result\":\"Warning\",\"ActualValue\":\"120\",\"RequiredValue\":\"ClientAliveInterval 180\"},{\"TestID\":\"49\",\"TestCaseName\":\"OS Architecture\",\"Description\":\"Only 64-bit operating system should be supported.\",\"Result\":\"Passed\",\"ActualValue\":\"x86_64\\n\",\"RequiredValue\":\"x86_64,amd64\"},{\"TestID\":\"50\",\"TestCaseName\":\"Security threats\",\"Description\":\"Identifies OS with recent high profile vulnerability that might need patching.  Ignore warning if system was patched as appropriate.\",\"Result\":\"Passed\",\"ActualValue\":\"Ubuntu 18.04\",\"RequiredValue\":\"OS impacted by GHOSTS\"},{\"TestID\":\"51\",\"TestCaseName\":\"Auto Update\",\"Description\":\"Identifies if Linux Agent Auto Update is enabled or not.\",\"Result\":\"Passed\",\"ActualValue\":\"# AutoUpdate.Enabled=y\\n\",\"RequiredValue\":\"Yes\"},{\"TestID\":\"52\",\"TestCaseName\":\"SACK Vulnerability patch verification\",\"Description\":\"Checks if the running Kernel Version has SACK vulnerability patch.\",\"Result\":\"Passed\",\"ActualValue\":\"Ubuntu 18.04.5 LTS,Linux version 5.4.0-1023-azure (buildd@lgw01-amd64-053) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #23~18.04.1-Ubuntu SMP Thu Aug 20 14:46:48 UTC 2020\",\"RequiredValue\":\"Yes\"}]}"
    }