Aracılığıyla paylaş


Azure Instance Metadata Service

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Windows VM'leri ✔️ Esnek ölçek kümeleri

Azure Örnek Meta Veri Hizmeti (IMDS), güncel çalışan sanal makine örnekleri hakkında bilgi sağlar. Sanal makinelerinizi yönetmek ve yapılandırmak için bunu kullanabilirsiniz. Bu bilgiler, SKU, depolama, ağ yapılandırmaları ve yaklaşan bakım olaylarını içerir. Kullanılabilir verilerin tam listesi için, bkz. Uç Nokta Kategorileri Özeti.

IMDS, sanal makinelerin (VM) ve ölçek kümesi örneklerinin çalıştırılması için kullanılabilir. Tüm uç noktalar, Azure Resource Manager kullanılarak oluşturulan ve yönetilen VM'leri destekler. Örnek kategorisinin yalnızca Test edilen kategorisi ve Ağ bölümü, klasik dağıtım modeli kullanılarak oluşturulan VM'leri destekler. Test edilen uç nokta bunu yalnızca sınırlı bir ölçüde yapar.

IMDS, iyi bilinen, yönlendirilemeyen bir IP adresinde (169.254.169.254) kullanılabilen bir REST API'dir. Yalnızca VM'nin içinden erişebilirsiniz. VM ile IMDS arasındaki iletişim hiçbir zaman konağı terk etmez. HTTP istemcilerinizin IMDS'yi sorgularken VM içindeki web proxy'lerini atlamasına ve ile aynı şekilde 168.63.129.16davranmasını 169.254.169.254 sağlayın.

Kullanım

Azure Örnek Meta Veri Hizmeti'ne erişme

IMDS'ye erişmek için Azure Resource Manager'dan veya Azure portalından bir VM oluşturun ve aşağıdaki örnekleri kullanın. Daha fazla örnek için bkz . Azure Örneği Meta Veri Örnekleri.

Bir örneğin tüm meta verilerini almak için örnek kod aşağıda verilmiştır. Belirli bir veri kaynağına erişmek için tüm kullanılabilir özelliklere genel bakış için bkz . Uç Nokta Kategorileri .

İste

Önemli

Bu örnek proxy'leri atlar. IMDS'yi sorgularken proxy'leri atlamanız gerekir . Ek bilgi için bkz . Proxy'ler .

Not

IMDS istekleri VM'nin birincil NIC'sini ve birincil IP'sini kullanarak gönderilmeli ve DHCP etkinleştirilmelidir.

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance?api-version=2021-02-01" | ConvertTo-Json -Depth 64

-NoProxy PowerShell V6 veya üzerini gerektirir. Daha eski PowerShell sürümlerine sahip örnekler için örnek depomuza bakın.

Yanıtla

Not

Yanıt bir JSON dizesidir. Okunabilirlik için aşağıdaki örnek yanıt oldukça yazdırılmıştır.

{
    "compute": {
        "azEnvironment": "AZUREPUBLICCLOUD",
        "additionalCapabilities": {
            "hibernationEnabled": "true"
        },
        "hostGroup": {
          "id": "testHostGroupId"
        }, 
        "extendedLocation": {
            "type": "edgeZone",
            "name": "microsoftlosangeles"
        },
        "evictionPolicy": "",
        "isHostCompatibilityLayerVm": "true",
        "licenseType":  "Windows_Client",
        "location": "westus",
        "name": "examplevmname",
        "offer": "WindowsServer",
        "osProfile": {
            "adminUsername": "admin",
            "computerName": "examplevmname",
            "disablePasswordAuthentication": "true"
        },
        "osType": "Windows",
        "placementGroupId": "f67c14ab-e92c-408c-ae2d-da15866ec79a",
        "plan": {
            "name": "planName",
            "product": "planProduct",
            "publisher": "planPublisher"
        },
        "platformFaultDomain": "36",
        "platformSubFaultDomain": "",        
        "platformUpdateDomain": "42",
        "priority": "Regular",
        "publicKeys": [{
                "keyData": "ssh-rsa 0",
                "path": "/home/user/.ssh/authorized_keys0"
            },
            {
                "keyData": "ssh-rsa 1",
                "path": "/home/user/.ssh/authorized_keys1"
            }
        ],
        "publisher": "RDFE-Test-Microsoft-Windows-Server-Group",
        "resourceGroupName": "macikgo-test-may-23",
        "resourceId": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/virtualMachines/examplevmname",
        "securityProfile": {
            "secureBootEnabled": "true",
            "virtualTpmEnabled": "false",
            "encryptionAtHost": "true",
            "securityType": "TrustedLaunch"
        },
        "sku": "2019-Datacenter",
        "storageProfile": {
            "dataDisks": [{
                "bytesPerSecondThrottle": "979202048",
                "caching": "None",
                "createOption": "Empty",
                "diskCapacityBytes": "274877906944",
                "diskSizeGB": "1024",
                "image": {
                  "uri": ""
                },
                "isSharedDisk": "false",
                "isUltraDisk": "true",
                "lun": "0",
                "managedDisk": {
                  "id": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/disks/exampledatadiskname",
                  "storageAccountType": "StandardSSD_LRS"
                },
                "name": "exampledatadiskname",
                "opsPerSecondThrottle": "65280",
                "vhd": {
                  "uri": ""
                },
                "writeAcceleratorEnabled": "false"
            }],
            "imageReference": {
                "id": "",
                "offer": "WindowsServer",
                "publisher": "MicrosoftWindowsServer",
                "sku": "2019-Datacenter",
                "version": "latest",
                "communityGalleryImageId": "/CommunityGalleries/testgallery/Images/1804Gen2/Versions/latest",
                "sharedGalleryImageId": "/SharedGalleries/1P/Images/gen2/Versions/latest",
                "exactVersion": "1.1686127202.30113"
            },
            "osDisk": {
                "caching": "ReadWrite",
                "createOption": "FromImage",
                "diskSizeGB": "30",
                "diffDiskSettings": {
                    "option": "Local"
                },
                "encryptionSettings": {
                  "enabled": "false",
                  "diskEncryptionKey": {
                    "sourceVault": {
                      "id": "/subscriptions/test-source-guid/resourceGroups/testrg/providers/Microsoft.KeyVault/vaults/test-kv"
                    },
                    "secretUrl": "https://test-disk.vault.azure.net/secrets/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
                  },
                  "keyEncryptionKey": {
                    "sourceVault": {
                      "id": "/subscriptions/test-key-guid/resourceGroups/testrg/providers/Microsoft.KeyVault/vaults/test-kv"
                    },
                    "keyUrl": "https://test-key.vault.azure.net/secrets/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
                  }
                },
                "image": {
                    "uri": ""
                },
                "managedDisk": {
                    "id": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/disks/exampleosdiskname",
                    "storageAccountType": "StandardSSD_LRS"
                },
                "name": "exampleosdiskname",
                "osType": "Windows",
                "vhd": {
                    "uri": ""
                },
                "writeAcceleratorEnabled": "false"
            },
            "resourceDisk": {
                "size": "4096"
            }
        },
        "subscriptionId": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
        "tags": "baz:bash;foo:bar",
        "userData": "Zm9vYmFy",
        "version": "15.05.22",
        "virtualMachineScaleSet": {
            "id": "/subscriptions/xxxxxxxx-xxxxx-xxx-xxx-xxxx/resourceGroups/resource-group-name/providers/Microsoft.Compute/virtualMachineScaleSets/virtual-machine-scale-set-name"
        },
        "vmId": "02aab8a4-74ef-476e-8182-f6d2ba4166a6",
        "vmScaleSetName": "crpteste9vflji9",
        "vmSize": "Standard_A3",
        "zone": ""
    },
    "network": {
        "interface": [{
            "ipv4": {
               "ipAddress": [{
                    "privateIpAddress": "10.144.133.132",
                    "publicIpAddress": ""
                }],
                "subnet": [{
                    "address": "10.144.133.128",
                    "prefix": "26"
                }]
            },
            "ipv6": {
                "ipAddress": [
                 ]
            },
            "macAddress": "0011AAFFBB22"
        }]
    }
}

Güvenlik ve kimlik doğrulaması

Örnek Meta Veri Hizmeti'ne yalnızca yönlendirilemeyen bir IP adresinde çalışan bir sanal makine örneğinden erişilebilir. VM'ler yalnızca kendi meta verileri/işlevleriyle etkileşimde bulunabilir. API yalnızca HTTP'dir ve konakta hiçbir zaman ayrılmaz.

İsteklerin doğrudan IMDS'ye yönelik olduğundan emin olmak ve isteklerin istenmeyen veya istenmeyen yeniden yönlendirilmesini önlemek için, istekler:

  • Üst bilgiyi içermelidirMetadata: true
  • Üst bilgi içermemelidir X-Forwarded-For

Bu gereksinimlerin ikisini de karşılamayan istekler hizmet tarafından reddedilir.

Önemli

IMDS, hassas veriler için bir kanal değildir . API kimliği doğrulanmamıştır ve VM'de tüm işlemlere açıktır. Bu hizmet aracılığıyla kullanıma sunulan bilgiler, VM içinde çalışan tüm uygulamalar için paylaşılan bilgiler olarak değerlendirilmelidir.

VM'de her işlemin IMDS uç noktasına erişmesi gerekli değilse, erişimi sınırlamak için yerel güvenlik duvarı kuralları ayarlayabilirsiniz. Örneğin, yalnızca bilinen bir sistem hizmetinin örnek meta veri hizmetine erişmesi gerekiyorsa, IMDS uç noktasında yalnızca belirli işlemlerin erişmesine izin veren veya geri kalan işlemler için erişimi reddeden bir güvenlik duvarı kuralı ayarlayabilirsiniz.

Proxy'ler

IMDS bir ara sunucu arkasında kullanılmak üzere tasarlanmamıştır ve bunu yapmak desteklenmez. Çoğu HTTP istemcisi, isteklerinizde proxy'leri devre dışı bırakmanız için bir seçenek sağlar ve bu işlevsellik IMDS ile iletişim kurarken kullanılmalıdır. Ayrıntılar için müşterinizin belgelerine bakın.

Önemli

Ortamınızda herhangi bir ara sunucu yapılandırması bilmeseniz bile, varsayılan istemci proxy ayarlarını geçersiz kılmanız gerekir. Ara sunucu yapılandırmaları otomatik olarak bulunabilir ve bu yapılandırmaların atlanmaması, gelecekte makinenin yapılandırmasının değiştirilmesi halinde kesinti risklerine maruz kalmanıza neden olur.

Hız sınırlaması

Genel olarak, IMDS istekleri saniyede 5 istekle sınırlıdır (VM temelinde). Bu eşiği aşan istekler 429 yanıtıyla reddedilir. Yönetilen Kimlik kategorisine yönelik istekler saniyede 20 istek ve 5 eşzamanlı istekle (VM temelinde) sınırlıdır.

HTTP fiilleri

Şu anda aşağıdaki HTTP fiilleri desteklenmektedir:

Fiil Açıklama
GET İstenen kaynağı alma

Parametreler

Uç noktalar gerekli ve/veya isteğe bağlı parametreleri destekleyemeyebilir. Ayrıntılar için şema ve söz konusu uç noktanın belgelerine bakın.

Sorgu parametreleri

IMDS uç noktaları HTTP sorgu dizesi parametrelerini destekler. Örneğin:

http://169.254.169.254/metadata/instance/compute?api-version=2021-01-01&format=json

Parametreleri belirtir:

Veri Akışı Adı Değer
api-version 2021-01-01
format json

Yinelenen sorgu parametresi adlarına sahip istekler reddedilir.

Yönlendirme parametreleri

Daha büyük json blobları döndüren bazı uç noktalar için, yanıtın bir alt kümesine filtre uygulamak için istek uç noktasına yol parametrelerinin eklenmesini destekliyoruz:

http://169.254.169.254/metadata/<endpoint>/[<filter parameter>/...]?<query parameters>

Parametreler, ayrıştırılmış bir gösterimle etkileşimde bulunurken json nesnesine gitmek için kullanılacak dizinlere/anahtarlara karşılık gelir.

Örneğin, /metadata/instance json nesnesini döndürür:

{
    "compute": { ... },
    "network": {
        "interface": [
            {
                "ipv4": {
                   "ipAddress": [{
                        "privateIpAddress": "10.144.133.132",
                        "publicIpAddress": ""
                    }],
                    "subnet": [{
                        "address": "10.144.133.128",
                        "prefix": "26"
                    }]
                },
                "ipv6": {
                    "ipAddress": [
                     ]
                },
                "macAddress": "0011AAFFBB22"
            },
            ...
        ]
    }
}

Yanıtı yalnızca işlem özelliğine göre filtrelemek istiyorsak isteği göndeririz:

http://169.254.169.254/metadata/instance/compute?api-version=<version>

Benzer şekilde, iç içe bir özelliğe veya belirli bir dizi öğesine filtre uygulamak istiyorsak anahtarları eklemeye devam ederiz:

http://169.254.169.254/metadata/instance/network/interface/0?api-version=<version>

özelliğinden Network.interface ilk öğeye filtreleyip şunu döndürür:

{
    "ipv4": {
       "ipAddress": [{
            "privateIpAddress": "10.144.133.132",
            "publicIpAddress": ""
        }],
        "subnet": [{
            "address": "10.144.133.128",
            "prefix": "26"
        }]
    },
    "ipv6": {
        "ipAddress": [
         ]
    },
    "macAddress": "0011AAFFBB22"
}

Not

Yaprak düğüme format=json filtre uygulanırken çalışmaz. Varsayılan biçim json olduğundan bu sorguların format=text açıkça belirtilmesi gerekir.

Şema

Veri biçimi

Varsayılan olarak, IMDS verileri JSON biçiminde (Content-Type: application/json ) döndürür. Ancak, yanıt filtrelemeyi destekleyen uç noktalar (bkz . Yol Parametreleri) biçimini textde destekler.

Varsayılan olmayan bir yanıt biçimine erişmek için, istenen biçimi istekte sorgu dizesi parametresi olarak belirtin. Örneğin:

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance?api-version=2017-08-01&format=text"

JSON yanıtlarında, tüm temel öğeler türünde stringolur ve eksik veya uygulanabilir olmayan değerler her zaman dahil edilir ancak boş bir dizeye ayarlanır.

Sürüm oluşturma

IMDS sürümü oluşturulur ve HTTP isteğinde API sürümünün belirtilmesi zorunludur. Bu gereksinimin tek istisnası , kullanılabilir API sürümlerini dinamik olarak almak için kullanılabilen sürümler uç noktasıdır.

Daha yeni sürümler eklendikçe, betiklerinizin belirli veri biçimlerine bağımlılıkları varsa eski sürümlere uyumluluk için yine erişilebilir.

Sürüm belirtmediğinizde, desteklenen en yeni sürümlerin listesiyle ilgili bir hata alırsınız:

{
    "error": "Bad request. api-version was not specified in the request. For more information refer to aka.ms/azureimds",
    "newest-versions": [
        "2020-10-01",
        "2020-09-01",
        "2020-07-15"
    ]
}

Desteklenen API sürümleri

Not

Sürüm 2023-11-15 kullanıma sunulmaya devam ediyor, bazı bölgelerde kullanılamayabilir.

  • 2023-11-15
  • 2023-07-01
  • 2021-12-13
  • 2021-11-15
  • 2021-11-01
  • 2021-10-01
  • 2021-08-01
  • 2021-05-01
  • 2021-03-01
  • 2021-02-01
  • 2021-01-01
  • 2020-12-01
  • 2020-10-01
  • 2020-09-01
  • 2020-07-15
  • 2020-06-01
  • 2019-11-01
  • 2019-08-15
  • 2019-08-01
  • 2019-06-04
  • 01.06.2019
  • 2019-04-30
  • 2019-03-11
  • 2019-02-01
  • 2018-10-01
  • 2018-04-02
  • 2018-02-01
  • 2017-12-01
  • 2017-10-01
  • 2017-08-01
  • 2017-04-02
  • 2017-03-01

Swagger

IMDS için tam Swagger tanımına şu konumdan ulaşabilirsiniz: https://github.com/Azure/azure-rest-api-specs/blob/main/specification/imds/data-plane/readme.md

Bölgesel kullanılabilirlik

Hizmet genel olarak tüm Azure bulutlarında kullanılabilir .

Kök uç nokta

Kök uç nokta şudur: http://169.254.169.254/metadata.

Uç nokta kategorileri

IMDS API'sinde, her biri bir veya daha fazla uç nokta içeren farklı veri kaynaklarını temsil eden birden çok uç nokta kategorisi bulunur. Ayrıntılar için her kategoriye bakın.

Kategori kökü Açıklama Sürüm kullanıma sunulmuştur
/metadata/attested Bkz . Kanıtlanan Veriler 2018-10-01
/metadata/identity Bkz. IMDS aracılığıyla Yönetilen Kimlik 2018-02-01
/metadata/instance Bkz. Örnek Meta Verileri 2017-04-02
/metadata/loadbalancer Bkz . IMDS aracılığıyla Load Balancer meta verilerini alma 2020-10-01
/metadata/scheduledevents Bkz. IMDS aracılığıyla Zamanlanmış Olaylar 2017-08-01
/metadata/versions Bkz. Sürümler Yok

Sürümler

API sürümlerini listeleme

Desteklenen API sürümleri kümesini döndürür.

GET /metadata/versions

Parametreler

Hiçbiri (bu uç nokta tersine çevrilmemiş).

Response

{
  "apiVersions": [
    "2017-03-01",
    "2017-04-02",
    ...
  ]
}

Örnek meta verileri

VM meta verilerini alma

İşlem, ağ ve depolama dahil olmak üzere VM örneği için önemli meta verileri kullanıma sunar.

GET /metadata/instance

Parametreler

Veri Akışı Adı Gerekli/isteğe bağlı Açıklama
api-version Gerekli İsteğe hizmet vermek için kullanılan sürüm.
format Opsiyonel* Yanıtın biçimi (json veya text). *Not: İstek parametreleri kullanılırken gerekli olabilir

Bu uç nokta, yol parametreleri aracılığıyla yanıt filtrelemeyi destekler.

Response

{
    "compute": {
        "azEnvironment": "AZUREPUBLICCLOUD",
        "additionalCapabilities": {
            "hibernationEnabled": "true"
        },
        "hostGroup": {
          "id": "testHostGroupId"
        }, 
        "extendedLocation": {
            "type": "edgeZone",
            "name": "microsoftlosangeles"
        },
        "evictionPolicy": "",
        "isHostCompatibilityLayerVm": "true",
        "licenseType":  "Windows_Client",
        "location": "westus",
        "name": "examplevmname",
        "offer": "WindowsServer",
        "osProfile": {
            "adminUsername": "admin",
            "computerName": "examplevmname",
            "disablePasswordAuthentication": "true"
        },
        "osType": "Windows",
        "placementGroupId": "f67c14ab-e92c-408c-ae2d-da15866ec79a",
        "plan": {
            "name": "planName",
            "product": "planProduct",
            "publisher": "planPublisher"
        },
        "platformFaultDomain": "36",
        "platformSubFaultDomain": "",        
        "platformUpdateDomain": "42",
        "priority": "Regular",
        "publicKeys": [{
                "keyData": "ssh-rsa 0",
                "path": "/home/user/.ssh/authorized_keys0"
            },
            {
                "keyData": "ssh-rsa 1",
                "path": "/home/user/.ssh/authorized_keys1"
            }
        ],
        "publisher": "RDFE-Test-Microsoft-Windows-Server-Group",
        "resourceGroupName": "macikgo-test-may-23",
        "resourceId": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/virtualMachines/examplevmname",
        "securityProfile": {
            "secureBootEnabled": "true",
            "virtualTpmEnabled": "false",
            "encryptionAtHost": "true",
            "securityType": "TrustedLaunch"
        },
        "sku": "2019-Datacenter",
        "storageProfile": {
            "dataDisks": [{
                "bytesPerSecondThrottle": "979202048",
                "caching": "None",
                "createOption": "Empty",
                "diskCapacityBytes": "274877906944",
                "diskSizeGB": "1024",
                "image": {
                  "uri": ""
                },
                "isSharedDisk": "false",
                "isUltraDisk": "true",
                "lun": "0",
                "managedDisk": {
                  "id": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/disks/exampledatadiskname",
                  "storageAccountType": "StandardSSD_LRS"
                },
                "name": "exampledatadiskname",
                "opsPerSecondThrottle": "65280",
                "vhd": {
                  "uri": ""
                },
                "writeAcceleratorEnabled": "false"
            }],
            "imageReference": {
                "id": "",
                "offer": "WindowsServer",
                "publisher": "MicrosoftWindowsServer",
                "sku": "2019-Datacenter",
                "version": "latest",
                "communityGalleryImageId": "/CommunityGalleries/testgallery/Images/1804Gen2/Versions/latest",
                "sharedGalleryImageId": "/SharedGalleries/1P/Images/gen2/Versions/latest",
                "exactVersion": "1.1686127202.30113"
            },
            "osDisk": {
                "caching": "ReadWrite",
                "createOption": "FromImage",
                "diskSizeGB": "30",
                "diffDiskSettings": {
                    "option": "Local"
                },
                "encryptionSettings": {
                  "enabled": "false",
                  "diskEncryptionKey": {
                    "sourceVault": {
                      "id": "/subscriptions/test-source-guid/resourceGroups/testrg/providers/Microsoft.KeyVault/vaults/test-kv"
                    },
                    "secretUrl": "https://test-disk.vault.azure.net/secrets/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
                  },
                  "keyEncryptionKey": {
                    "sourceVault": {
                      "id": "/subscriptions/test-key-guid/resourceGroups/testrg/providers/Microsoft.KeyVault/vaults/test-kv"
                    },
                    "keyUrl": "https://test-key.vault.azure.net/secrets/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
                  }
                },
                "image": {
                    "uri": ""
                },
                "managedDisk": {
                    "id": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/disks/exampleosdiskname",
                    "storageAccountType": "StandardSSD_LRS"
                },
                "name": "exampleosdiskname",
                "osType": "Windows",
                "vhd": {
                    "uri": ""
                },
                "writeAcceleratorEnabled": "false"
            },
            "resourceDisk": {
                "size": "4096"
            }
        },
        "subscriptionId": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
        "tags": "baz:bash;foo:bar",
        "userData": "Zm9vYmFy",
        "version": "15.05.22",
        "virtualMachineScaleSet": {
            "id": "/subscriptions/xxxxxxxx-xxxxx-xxx-xxx-xxxx/resourceGroups/resource-group-name/providers/Microsoft.Compute/virtualMachineScaleSets/virtual-machine-scale-set-name"
        },
        "vmId": "02aab8a4-74ef-476e-8182-f6d2ba4166a6",
        "vmScaleSetName": "crpteste9vflji9",
        "vmSize": "Standard_A3",
        "zone": ""
    },
    "network": {
        "interface": [{
            "ipv4": {
               "ipAddress": [{
                    "privateIpAddress": "10.144.133.132",
                    "publicIpAddress": ""
                }],
                "subnet": [{
                    "address": "10.144.133.128",
                    "prefix": "26"
                }]
            },
            "ipv6": {
                "ipAddress": [
                 ]
            },
            "macAddress": "0011AAFFBB22"
        }]
    }
}

Şema dökümü:

İşlem

Veriler Açıklama Sürüm kullanıma sunulmuştur
azEnvironment VM'nin çalıştığı Azure Ortamı 2018-10-01
additionalCapabilities.hibernationEnabled SANAL makinede hazırda bekletmenin etkinleştirilip etkinleştirilmediğini tanımlar 2021-11-01
customData Bu özellik IMDS'de kullanım dışıdır ve devre dışıdır. Yerini alan userData 2019-02-01
evictionPolicy Spot VM'nin nasıl çıkarılacağını ayarlar. 2020-12-01
extendedLocation.type VM'nin genişletilmiş konumunun türü. 2021-03-01
extendedLocation.name VM'nin genişletilmiş konumunun adı 2021-03-01
host.id VM'nin konağı adı. Bir VM'nin bir konağı veya hostGroup'u olacağını ancak ikisini birden sahip olmadığını unutmayın. 2021-11-15
hostGroup.id VM'nin hostGroup adı. Bir VM'nin bir konağı veya hostGroup'u olacağını ancak ikisini birden sahip olmadığını unutmayın. 2021-11-15
isHostCompatibilityLayerVm VM'nin Konak Uyumluluk Katmanı'nda çalışıp çalışmadiğini belirler 2020-06-01
licenseType Azure Hibrit Avantajı için lisans türü. Bu yalnızca AHB özellikli VM'ler için geçerlidir 2020-09-01
location VM'nin çalıştığı Azure Bölgesi 2017-04-02
name VM'nin adı 2017-04-02
offer VM görüntüsü için bilgi sunma ve yalnızca Azure görüntü galerisinden dağıtılan görüntüler için mevcut olması 2017-04-02
osProfile.adminUsername Yönetici hesabının adını belirtir 2020-07-15
osProfile.computerName Bilgisayarın adını belirtir 2020-07-15
osProfile.disablePasswordAuthentication Parola kimlik doğrulamasının devre dışı bırakılıp bırakılmadiğini belirtir. Bu yalnızca Linux VM'leri için geçerlidir 2020-10-01
osType Linux veya Windows 2017-04-02
physicalZone VM'nin fiziksel bölgesi 2023-11-15
placementGroupId Ölçek kümenizin Yerleştirme Grubu 2017-08-01
plan Azure Market Görüntüsüyse vm için ad, ürün ve yayımcı içeren plan 2018-04-02
platformUpdateDomain VM'nin çalıştığı etki alanını güncelleştirme 2017-04-02
platformFaultDomain VM'nin çalıştığı hata etki alanı 2017-04-02
platformSubFaultDomain Varsa, VM'nin çalıştığı alt hata etki alanı. 2021-10-01
priority VM'nin önceliği. Daha fazla bilgi için Spot VM'lere bakın 2020-12-01
provider VM sağlayıcısı 2018-10-01
publicKeys VM'ye ve yollara atanan Ortak Anahtarlar Koleksiyonu 2018-04-02
publisher VM görüntüsünün yayımcısı 2017-04-02
resourceGroupName Sanal Makineniz için kaynak grubu 2017-08-01
resourceId Kaynağın tam kimliği 2019-03-11
sku VM görüntüsü için belirli SKU 2017-04-02
securityProfile.secureBootEnabled VM'de UEFI güvenli önyüklemesinin etkinleştirilip etkinleştirilmediğini tanımlar 2020-06-01
securityProfile.virtualTpmEnabled SANAL makinede sanal Güvenilen Platform Modülü'nin (TPM) etkinleştirilip etkinleştirilmediğini tanımlar 2020-06-01
securityProfile.encryptionAtHost Vm'de Konakta Şifreleme'nin etkinleştirilip etkinleştirilmediğini tanımlar 2021-11-01
securityProfile.securityType VM'nin Güvenilir VM mi yoksa Gizli VM mi olduğunu tanımlar 2021-12-13
storageProfile Aşağıdaki Depolama Profiline bakın 01.06.2019
subscriptionId Sanal Makine için Azure aboneliği 2017-08-01
tags Sanal Makineniz için etiketler 2017-08-01
tagsList Daha kolay programlı ayrıştırma için JSON dizisi olarak biçimlendirilmiş etiketler 2019-06-04
userData Vm sağlama sırasında veya sonrasında kullanılmak üzere oluşturulduğunda belirtilen veri kümesi (Base64 kodlanmış) 2021-01-01
version VM görüntüsünün sürümü 2017-04-02
virtualMachineScaleSet.id Sanal Makinenin parçası olduğu esnek düzenleme ile oluşturulan Sanal Makine Ölçek Kümesinin kimliği. Bu alan, tekdüzen düzenlemeyle oluşturulan Sanal Makine Ölçek Kümeleri kullanılamaz. 2021-03-01
vmId VM için benzersiz tanımlayıcı . Blogda yalnızca SMBIOS < 2.6 bulunan VM'ler için uygundur. SMBIOS >= 2.6 olan VM'ler için DMI'den UUID küçük endian biçiminde görüntülenir, bu nedenle bayt değiştirme gereksinimi yoktur. 2017-04-02
vmScaleSetName Ölçek kümenizin Sanal Makine Ölçek Kümesi Adı 2017-12-01
vmSize VM boyutu 2017-04-02
zone Sanal makinenizin Kullanılabilirlik Alanı 2017-12-01

† Bu sürüm henüz tam olarak kullanılamamaktadır ve tüm bölgelerde desteklenmeyebilir.

Depolama profili

Bir VM'nin depolama profili üç kategoriye ayrılır: görüntü başvurusu, işletim sistemi diski ve veri disklerinin yanı sıra yerel geçici disk için ek bir nesne.

Görüntü başvuru nesnesi işletim sistemi görüntüsüyle ilgili aşağıdaki bilgileri içerir; lütfen bir görüntünün platformdan, marketten, topluluk galerisinden veya doğrudan paylaşılan galeriden gelebileceğini ancak her ikisini birden gelemediğini unutmayın:

Veriler Açıklama Sürüm kullanıma sunulmuştur
id Kaynak Kimliği 01.06.2019
offer Platform veya market görüntüsü teklifi 01.06.2019
publisher Platform veya market görüntüsünün yayımcısı 01.06.2019
sku Platform veya market görüntüsünün SKU'su 01.06.2019
version Görüntünün sürümü 01.06.2019
communityGalleryImageId Topluluk görüntüsünün kaynak kimliği, aksi takdirde boş 2023-07-01
sharedGalleryImageId Kaynak kimliği o doğrudan paylaşılan görüntü, aksi takdirde boş 2023-07-01
exactVersion Topluluğun sürümü veya doğrudan paylaşılan görüntü 2023-07-01

İşletim sistemi diski nesnesi, VM tarafından kullanılan işletim sistemi diski hakkında aşağıdaki bilgileri içerir:

Veriler Açıklama
caching Önbelleğe alma gereksinimleri
createOption VM'nin nasıl oluşturulduğu hakkında bilgi
diffDiskSettings Kısa ömürlü disk ayarları
diskSizeGB GB cinsinden disk boyutu
image Kaynak kullanıcı görüntüsü sanal sabit diski
managedDisk Yönetilen disk parametreleri
name Disk adı
vhd Sanal sabit disk
writeAcceleratorEnabled diskte writeAccelerator'ın etkinleştirilip etkinleştirilmediği

Veri diskleri dizisi, VM'ye bağlı veri disklerinin listesini içerir. Her veri diski nesnesi aşağıdaki bilgileri içerir:

Veriler Açıklama Sürüm kullanıma sunulmuştur
bytesPerSecondThrottle* Bayt cinsinden disk okuma/yazma kotası 2021-05-01
caching Önbelleğe alma gereksinimleri 01.06.2019
createOption VM'nin nasıl oluşturulduğu hakkında bilgi 01.06.2019
diffDiskSettings Kısa ömürlü disk ayarları 01.06.2019
diskCapacityBytes* Diskin bayt cinsinden boyutu 2021-05-01
diskSizeGB GB cinsinden disk boyutu 01.06.2019
encryptionSettings Disk için şifreleme ayarları 01.06.2019
image Kaynak kullanıcı görüntüsü sanal sabit diski 01.06.2019
isSharedDisk* Diskin kaynaklar arasında paylaşılıp paylaşılmadığını tanımlar 2021-05-01
isUltraDisk Veri diskinin ultra disk olup olmadığını tanımlar 2021-05-01
lun Diskin mantıksal birim numarası 01.06.2019
managedDisk Yönetilen disk parametreleri 01.06.2019
name Disk adı 01.06.2019
opsPerSecondThrottle* IOPS'de disk okuma/yazma kotası 2021-05-01
osType Diske dahil edilen işletim sistemi türü 01.06.2019
vhd Sanal sabit disk 01.06.2019
writeAcceleratorEnabled diskte writeAccelerator'ın etkinleştirilip etkinleştirilmediği 01.06.2019

*Bu alanlar yalnızca Ultra Diskler için doldurulur; Bunlar Ultra olmayan Disklerden gelen boş dizelerdir.

Şifreleme ayarları blobu, diskin nasıl şifrelendiğinden (şifrelenmişse) ilgili verileri içerir:

Veriler Açıklama Sürüm kullanıma sunulmuştur
diskEncryptionKey.sourceVault.id Disk şifreleme anahtarının konumu 2021-11-01
diskEncryptionKey.secretUrl Gizli dizinin konumu 2021-11-01
keyEncryptionKey.sourceVault.id Anahtar şifreleme anahtarının konumu 2021-11-01
keyEncryptionKey.keyUrl Anahtarın konumu 2021-11-01

Kaynak disk nesnesi, vm'ye bağlı Yerel Geçici Disk'in boyutunu (varsa, kilobayt cinsinden) içerir. VM için yerel geçici disk yoksa, bu değer 0'dır.

Veriler Açıklama Sürüm kullanıma sunulmuştur
resourceDisk.size VM için yerel geçici diskin boyutu (kB cinsinden) 2021-02-01

Veriler Açıklama Sürüm kullanıma sunulmuştur
ipv4.privateIpAddress VM'nin yerel IPv4 adresi 2017-04-02
ipv4.publicIpAddress VM'nin genel IPv4 adresi 2017-04-02
subnet.address VM'nin alt ağ adresi 2017-04-02
subnet.prefix Alt ağ ön eki, örnek 24 2017-04-02
ipv6.ipAddress VM'nin yerel IPv6 adresi 2017-04-02
macAddress VM mac adresi 2017-04-02

Not

Ağ çağrısı tarafından döndürülen nic'lerin sıralı olması garanti edilmemektedir.

Kullanıcı verilerini alma

Yeni bir VM oluştururken, VM sağlama sırasında veya sonrasında kullanılacak bir veri kümesi belirtebilir ve IMDS aracılığıyla alabilirsiniz. Burada uçtan uca kullanıcı veri deneyimini gözden geçirin.

Kullanıcı verilerini ayarlamak için buradaki hızlı başlangıç şablonunu kullanın. Aşağıdaki örnekte bu verilerin IMDS aracılığıyla nasıl alınıyor olduğu gösterilmektedir. Bu özellik sürüm 2021-01-01 ve üzeri sürümlerle yayınlanır.

Not

Güvenlik bildirimi: IMDS, VM'deki tüm uygulamalara açıktır, hassas veriler kullanıcı verilerine yerleştirilmemelidir.

$userData = Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/compute/userData?api-version=2021-01-01&format=text"
[System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($userData))

Örnek 1: Azure'da çalışan VM'leri izleme

Hizmet sağlayıcısı olarak, yazılımınızı çalıştıran vm sayısını izlemeniz veya VM'nin benzersizliğini izlemesi gereken aracılarınız olması gerekebilir. Vm için benzersiz bir kimlik alabilmek için Örnek Meta Veri Hizmeti'nden alanını kullanın vmId .

İste

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/compute/vmId?api-version=2017-08-01&format=text"

Response

5c08b38e-4d57-4c23-ac45-aca61037f084

Örnek 2: Farklı veri çoğaltmalarının yerleştirilmesi

Belirli senaryolarda, farklı veri çoğaltmalarının yerleştirilmesi birincil öneme neden olabilir. Örneğin, bir düzenleyici aracılığıyla HDFS çoğaltma yerleşimi veya kapsayıcı yerleşimi, vm'nin platformUpdateDomain platformFaultDomain çalıştığını bilmenizi gerektirebilir. Bu kararları almak için örneklerin Kullanılabilirlik Alanları de kullanabilirsiniz. Bu verileri doğrudan IMDS aracılığıyla sorgulayabilirsiniz.

İste

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/compute/platformFaultDomain?api-version=2017-08-01&format=text"

Response

0

Örnek 3: VM etiketlerini alma

VM etiketleri örnek API'sini instance/compute/tags uç noktası altına ekler. Etiketleri mantıksal olarak bir taksonomi olarak düzenlemek için Azure VM'nize uygulanmış olabilir. Vm'ye atanan etiketler aşağıdaki istek kullanılarak alınabilir.

İste

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/compute/tags?api-version=2017-08-01&format=text"

Response

Department:IT;ReferenceNumber:123456;TestStatus:Pending

alanı tags , etiketleri noktalı virgülle ayrılmış bir dizedir. Etiketlerde noktalı virgüller kullanılıyorsa bu çıkış sorun olabilir. Etiketleri program aracılığıyla ayıklamak için ayrıştırıcı yazılmışsa, alanına güvenmeniz tagsList gerekir. Alanı tagsList , sınırlayıcı içermeyen ve sonuç olarak ayrıştırmak daha kolay olan bir JSON dizisidir. Vm'ye atanan tagsList aşağıdaki istek kullanılarak alınabilir.

İste

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/compute/tagsList?api-version=2019-06-04" | ConvertTo-Json -Depth 64

Response

{
    "value":  [
                  {
                      "name":  "Department",
                      "value":  "IT"
                  },
                  {
                      "name":  "ReferenceNumber",
                      "value":  "123456"
                  },
                  {
                      "name":  "TestStatus",
                      "value":  "Pending"
                  }
              ],
    "Count":  3
}

Örnek 4: Destek olayı sırasında VM hakkında daha fazla bilgi edinin

Hizmet sağlayıcısı olarak, VM hakkında daha fazla bilgi edinmek istediğiniz bir destek çağrısı alabilirsiniz. Müşteriden işlem meta verilerini paylaşmasını istemek, destek uzmanının Azure'da vm türü hakkında bilgi edinebileceği temel bilgiler sağlayabilir.

İste

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/compute?api-version=2020-09-01" | ConvertTo-Json -Depth 64

Yanıtla

Not

Yanıt bir JSON dizesidir. Okunabilirlik için aşağıdaki örnek yanıt oldukça yazdırılmıştır.

{
    "azEnvironment": "AZUREPUBLICCLOUD",
    "extendedLocation": {
      "type": "edgeZone",
      "name": "microsoftlosangeles"
    },
    "evictionPolicy": "",
    "additionalCapabilities": {
        "hibernationEnabled": "false"
    },
    "hostGroup": {
      "id": "testHostGroupId"
    },
    "isHostCompatibilityLayerVm": "true",
    "licenseType":  "Windows_Client",
    "location": "westus",
    "name": "examplevmname",
    "offer": "WindowsServer",
    "osProfile": {
        "adminUsername": "admin",
        "computerName": "examplevmname",
        "disablePasswordAuthentication": "true"
    },
    "osType": "Windows",
    "placementGroupId": "f67c14ab-e92c-408c-ae2d-da15866ec79a",
    "plan": {
        "name": "planName",
        "product": "planProduct",
        "publisher": "planPublisher"
    },
    "platformFaultDomain": "36",
    "platformUpdateDomain": "42",
    "priority": "Regular",
    "publicKeys": [{
            "keyData": "ssh-rsa 0",
            "path": "/home/user/.ssh/authorized_keys0"
        },
        {
            "keyData": "ssh-rsa 1",
            "path": "/home/user/.ssh/authorized_keys1"
        }
    ],
    "publisher": "RDFE-Test-Microsoft-Windows-Server-Group",
    "physicalZone": "useast-AZ01",
    "resourceGroupName": "macikgo-test-may-23",
    "resourceId": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/virtualMachines/examplevmname",
    "securityProfile": {
        "secureBootEnabled": "true",
        "virtualTpmEnabled": "false",
        "encryptionAtHost": "true",
        "securityType": "TrustedLaunch"
    },
    "sku": "2019-Datacenter",
    "storageProfile": {
        "dataDisks": [{
            "bytesPerSecondThrottle": "979202048",
            "caching": "None",
            "createOption": "Empty",
            "diskCapacityBytes": "274877906944",
            "diskSizeGB": "1024",
            "image": {
              "uri": ""
            },
            "isSharedDisk": "false",
            "isUltraDisk": "true",
            "lun": "0",
            "managedDisk": {
              "id": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/MicrosoftCompute/disks/exampledatadiskname",
              "storageAccountType": "StandardSSD_LRS"
            },
            "name": "exampledatadiskname",
            "opsPerSecondThrottle": "65280",
            "vhd": {
              "uri": ""
            },
            "writeAcceleratorEnabled": "false"
        }],
        "imageReference": {
            "id": "",
            "offer": "WindowsServer",
            "publisher": "MicrosoftWindowsServer",
            "sku": "2019-Datacenter",
            "version": "latest",
            "communityGalleryImageId": "/CommunityGalleries/testgallery/Images/1804Gen2/Versions/latest",
            "sharedGalleryImageId": "/SharedGalleries/1P/Images/gen2/Versions/latest",
            "exactVersion": "1.1686127202.30113"
        },
        "osDisk": {
            "caching": "ReadWrite",
            "createOption": "FromImage",
            "diskSizeGB": "30",
            "diffDiskSettings": {
                "option": "Local"
            },
            "encryptionSettings": {
              "enabled": "false",
              "diskEncryptionKey": {
                "sourceVault": {
                  "id": "/subscriptions/test-source-guid/resourceGroups/testrg/providers/Microsoft.KeyVault/vaults/test-kv"
                },
                "secretUrl": "https://test-disk.vault.azure.net/secrets/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
              },
              "keyEncryptionKey": {
                "sourceVault": {
                  "id": "/subscriptions/test-key-guid/resourceGroups/testrg/providers/Microsoft.KeyVault/vaults/test-kv"
                },
                "keyUrl": "https://test-key.vault.azure.net/secrets/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
              }
            },
            "image": {
                "uri": ""
            },
            "managedDisk": {
                "id": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/disks/exampleosdiskname",
                "storageAccountType": "StandardSSD_LRS"
            },
            "name": "exampleosdiskname",
            "osType": "Windows",
            "vhd": {
                "uri": ""
            },
            "writeAcceleratorEnabled": "false"
        },
        "resourceDisk": {
            "size": "4096"
        }
    },
    "subscriptionId": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
    "tags": "baz:bash;foo:bar",
    "version": "15.05.22",
    "virtualMachineScaleSet": {
      "id": "/subscriptions/xxxxxxxx-xxxxx-xxx-xxx-xxxx/resourceGroups/resource-group-name/providers/Microsoft.Compute/virtualMachineScaleSets/virtual-machine-scale-set-name"
    },
    "vmId": "02aab8a4-74ef-476e-8182-f6d2ba4166a6",
    "vmScaleSetName": "crpteste9vflji9",
    "vmSize": "Standard_A3",
    "zone": "3"
}

Örnek 5: VM'nin çalıştığı Azure Ortamını alma

Azure'da Azure Kamu gibi çeşitli bağımsız bulutlar vardır. Bazen bazı çalışma zamanı kararları almak için Azure Ortamı'na ihtiyacınız vardır. Aşağıdaki örnekte bu davranışı nasıl gerçekleştirebileceğiniz gösterilmektedir.

İste

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/compute/azEnvironment?api-version=2018-10-01&format=text"

Response

AzurePublicCloud

Bulut ve Azure ortamının değerleri burada listelenmiştir.

Bulut Azure ortamı
Genel kullanıma sunulan tüm genel Azure bölgeleri AzurePublicCloud
Azure Devlet Kurumları AzureUSGovernmentCloud
21Vianet tarafından sağlanan Microsoft Azure AzureChinaCloud
Azure Almanya AzureGermanCloud

Örnek 6: Ağ bilgilerini alma

İste

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/network?api-version=2017-08-01" | ConvertTo-Json  -Depth 64

Response

{
  "interface": [
    {
      "ipv4": {
        "ipAddress": [
          {
            "privateIpAddress": "10.1.0.4",
            "publicIpAddress": "X.X.X.X"
          }
        ],
        "subnet": [
          {
            "address": "10.1.0.0",
            "prefix": "24"
          }
        ]
      },
      "ipv6": {
        "ipAddress": []
      },
      "macAddress": "000D3AF806EC"
    }
  ]
}

Örnek 7: Genel IP adresini alma

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/network/interface/0/ipv4/ipAddress/0/publicIpAddress?api-version=2017-08-01&format=text"

Not

  • Standart SKU Genel IP adresi için IMDS bilgilerini almak istiyorsanız daha fazla bilgi için Load Balancer Meta Veri API'sini gözden geçirin.

Kanıtlanan veriler

Test edilen verileri alma

IMDS, sağlanan verilerin Azure'dan geldiğini garanti etmeye yardımcı olur. Microsoft bu bilgilerin bir bölümünü imzalar, böylece Azure Market'daki bir görüntünün Azure'da çalıştırdığınız görüntü olduğunu onaylayabilirsiniz.

GET /metadata/attested/document

Parametreler

Veri Akışı Adı Gerekli/isteğe bağlı Açıklama
api-version Gerekli İsteğe hizmet vermek için kullanılan sürüm.
nonce İsteğe bağlı Şifreleme nonce işlevi görecek 10 basamaklı bir dize. Değer sağlanmazsa, IMDS geçerli UTC zaman damgasını kullanır.

Response

{
    "encoding":"pkcs7",
    "signature":"MIIEEgYJKoZIhvcNAQcCoIIEAzCCA/8CAQExDzANBgkqhkiG9w0BAQsFADCBugYJKoZIhvcNAQcBoIGsBIGpeyJub25jZSI6IjEyMzQ1NjY3NjYiLCJwbGFuIjp7Im5hbWUiOiIiLCJwcm9kdWN0IjoiIiwicHVibGlzaGVyIjoiIn0sInRpbWVTdGFtcCI6eyJjcmVhdGVkT24iOiIxMS8yMC8xOCAyMjowNzozOSAtMDAwMCIsImV4cGlyZXNPbiI6IjExLzIwLzE4IDIyOjA4OjI0IC0wMDAwIn0sInZtSWQiOiIifaCCAj8wggI7MIIBpKADAgECAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBBAUAMCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tMB4XDTE4MTEyMDIxNTc1N1oXDTE4MTIyMDIxNTc1NlowKzEpMCcGA1UEAxMgdGVzdHN1YmRvbWFpbi5tZXRhZGF0YS5henVyZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAML/tBo86ENWPzmXZ0kPkX5dY5QZ150mA8lommszE71x2sCLonzv4/UWk4H+jMMWRRwIea2CuQ5RhdWAHvKq6if4okKNt66fxm+YTVz9z0CTfCLmLT+nsdfOAsG1xZppEapC0Cd9vD6NCKyE8aYI1pliaeOnFjG0WvMY04uWz2MdAgMBAAGjYDBeMFwGA1UdAQRVMFOAENnYkHLa04Ut4Mpt7TkJFfyhLTArMSkwJwYDVQQDEyB0ZXN0c3ViZG9tYWluLm1ldGFkYXRhLmF6dXJlLmNvbYIQZ8VuSofHbJRAQNBNpiASdDANBgkqhkiG9w0BAQQFAAOBgQCLSM6aX5Bs1KHCJp4VQtxZPzXF71rVKCocHy3N9PTJQ9Fpnd+bYw2vSpQHg/AiG82WuDFpPReJvr7Pa938mZqW9HUOGjQKK2FYDTg6fXD8pkPdyghlX5boGWAMMrf7bFkup+lsT+n2tRw2wbNknO1tQ0wICtqy2VqzWwLi45RBwTGB6DCB5QIBATA/MCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBCwUAMA0GCSqGSIb3DQEBAQUABIGAld1BM/yYIqqv8SDE4kjQo3Ul/IKAVR8ETKcve5BAdGSNkTUooUGVniTXeuvDj5NkmazOaKZp9fEtByqqPOyw/nlXaZgOO44HDGiPUJ90xVYmfeK6p9RpJBu6kiKhnnYTelUk5u75phe5ZbMZfBhuPhXmYAdjc7Nmw97nx8NnprQ="
}

İmza blobu, belgenin pkcs7 imzalı bir sürümüdür. Vm'ye özgü bazı ayrıntılarla birlikte imzalamak için kullanılan sertifikayı içerir.

Azure Resource Manager kullanılarak oluşturulan VM'ler için belgede, belgenin oluşturulması ve süresinin dolması için , skunonce, , subscriptionId, timeStamp ve ile resimle ilgili plan bilgileri bulunurvmId. Plan bilgileri yalnızca Azure Market görüntüler için doldurulur.

Klasik dağıtım modeli kullanılarak oluşturulan VM'ler için yalnızca ve subscriptionId değerlerinin vmId doldurulması garanti edilir. Sertifikayı yanıttan ayıklayabilir ve yanıtın geçerli olduğunu ve Azure'dan geldiğini onaylamak için kullanabilirsiniz.

Kodu çözülen belge aşağıdaki alanları içerir:

Veriler Açıklama Sürüm kullanıma sunulmuştur
licenseType Azure Hibrit Avantajı için lisans türü. Bu yalnızca AHB özellikli VM'ler için geçerlidir. 2020-09-01
nonce İsteğe bağlı olarak istekle birlikte sağlanabilir bir dize. Sağlanmadıysa nonce , geçerli Eşgüdümlü Evrensel Saat zaman damgası kullanılır. 2018-10-01
plan Azure Market Görüntü planı. Plan kimliğini (ad), ürün görüntüsünü veya teklifini (ürün) ve yayımcı kimliğini (yayımcı) içerir. 2018-10-01
timestamp.createdOn İmzalanan belgenin ne zaman oluşturulduğuna ilişkin UTC zaman damgası 2018-20-01
timestamp.expiresOn İmzalanan belgenin süresinin dolmasına ilişkin UTC zaman damgası 2018-10-01
vmId VM için benzersiz tanımlayıcı 2018-10-01
subscriptionId Sanal Makine için Azure aboneliği 2019-04-30
sku VM görüntüsü için belirli SKU (Örnek Meta Verileri uç noktasındaki/metadata/instance []) özelliğiyle bağıntılı compute/sku 2019-11-01

Not

Klasik (Azure Resource Manager olmayan) VM'ler için yalnızca vmId değerinin doldurulması garanti edilir.

Örnek belge:

{
   "nonce":"20201130-211924",
   "plan":{
      "name":"planName",
      "product":"planProduct",
      "publisher":"planPublisher"
   },
   "sku":"Windows-Server-2012-R2-Datacenter",
   "subscriptionId":"8d10da13-8125-4ba9-a717-bf7490507b3d",
   "timeStamp":{
      "createdOn":"11/30/20 21:19:19 -0000",
      "expiresOn":"11/30/20 21:19:24 -0000"
   },
   "vmId":"02aab8a4-74ef-476e-8182-f6d2ba4166a6"
}

İmza Doğrulama Kılavuzu

İmzayı doğrularken, imzanın Azure'dan bir sertifikayla oluşturulduğunu onaylamanız gerekir. Bu, sertifika Konu Diğer Adı (SAN) doğrulanarak yapılır.

Örnek SAN DNS Name=eastus.metadata.azure.com, DNS Name=metadata.azure.com

Not

Genel bulut ve her bağımsız bulut için etki alanı farklı olacaktır.

Bulut SAN'da etki alanı
Genel kullanıma sunulan tüm genel Azure bölgeleri *.metadata.azure.com
Azure Devlet Kurumları *.metadata.azure.us
21Vianet tarafından sağlanan Azure *.metadata.azure.cn
Azure Almanya *.metadata.microsoftazure.de

Not

Sertifikaların etki alanıyla tam eşleşmesi olmayabilir. Bu nedenle, sertifika doğrulaması herhangi bir alt etki alanını kabul etmelidir (örneğin, genel bulut genel kullanılabilirlik bölgelerinde kabul edilir *.metadata.azure.com).

Ara sertifikalar için sertifika sabitlemeyi önermiyoruz. Daha fazla kılavuz için bkz . Sertifika sabitleme - Sertifika sabitleme ve Azure hizmetleri. Azure Örnek Meta Veri Hizmeti'nin gelecekteki Sertifika Yetkilisi değişiklikleri için bildirim sunmadığını lütfen unutmayın. Bunun yerine, gelecekteki tüm güncelleştirmeler için merkezi Azure Sertifika Yetkilisi ayrıntıları makalesini izlemeniz gerekir.

Örnek 1: VM'nin Azure'da çalıştığını doğrulama

Azure Market'deki satıcılar, yazılımlarının yalnızca Azure'da çalıştırılacak şekilde lisanslandığından emin olmak istiyor. Birisi VHD'yi şirket içi bir ortama kopyalarsa, satıcının bunu algılayabilmesi gerekir. Bu satıcılar, IMDS aracılığıyla yalnızca Azure'dan yanıt almayı garanti eden imzalı veriler alabilir.

Not

Bu örnek, jq yardımcı programının yüklenmesini gerektirir.

Doğrulama

# Get the signature
$attestedDoc = Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri http://169.254.169.254/metadata/attested/document?api-version=2020-09-01
# Decode the signature
$signature = [System.Convert]::FromBase64String($attestedDoc.signature)

İmzanın Microsoft Azure'dan geldiğini doğrulayın ve sertifika zincirinde hatalar olup olmadığını denetler.

# Get certificate chain
$cert = [System.Security.Cryptography.X509Certificates.X509Certificate2]($signature)
$chain = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Chain
$chain.Build($cert)
# Print the Subject of each certificate in the chain
foreach($element in $chain.ChainElements)
{
    Write-Host $element.Certificate.Subject
}

# Get the content of the signed document
Add-Type -AssemblyName System.Security
$signedCms = New-Object -TypeName System.Security.Cryptography.Pkcs.SignedCms
$signedCms.Decode($signature);
$content = [System.Text.Encoding]::UTF8.GetString($signedCms.ContentInfo.Content)
Write-Host "Attested data: " $content
$json = $content | ConvertFrom-Json
# Do additional validation here

nonce İlk istekte bir nonce parametre sağladıysanız, imzalanan belgedeki ile karşılaştırılabilir.

Yönetilen kimlik

Sistem tarafından atanan yönetilen kimlik VM'de etkinleştirilebilir. Vm'ye kullanıcı tarafından atanan bir veya daha fazla yönetilen kimlik de atayabilirsiniz. Ardından IMDS'den yönetilen kimlikler için belirteç isteyebilirsiniz. Azure Key Vault gibi diğer Azure hizmetleriyle kimlik doğrulaması yapmak için bu belirteçleri kullanın.

Bu özelliği etkinleştirmeye yönelik ayrıntılı adımlar için bkz . Erişim belirteci alma.

Load Balancer Meta Verileri

Bir Azure Standart Load Balancer arkasına sanal makine veya sanal makine kümesi örnekleri yerleştirdiğinizde, yük dengeleyici ve örneklerle ilgili meta verileri almak için IMDS'yi kullanabilirsiniz. Daha fazla bilgi için bkz . Yük dengeleyici bilgilerini alma.

Zamanlanmış olaylar

Zamanlanan olayların durumunu IMDS kullanarak alabilirsiniz. Daha sonra kullanıcı bu olaylar üzerinde çalıştırılacak bir eylem kümesi belirtebilir. Daha fazla bilgi için bkz . Linux için zamanlanmış olaylar veya Windows için zamanlanmış olaylar.

Farklı dillerde örnek kod

Aşağıdaki tabloda, VM'nin içinde farklı diller kullanarak IMDS çağırma örnekleri listelanmıştır:

Dil Örnek
Bash https://github.com/Microsoft/azureimds/blob/master/IMDSSample.sh
C# https://github.com/Microsoft/azureimds/blob/master/IMDSSample.cs
Git https://github.com/Microsoft/azureimds/blob/master/imdssample.go
Java https://github.com/Microsoft/azureimds/blob/master/imdssample.java
NodeJS https://github.com/Microsoft/azureimds/blob/master/IMDSSample.js
Perl https://github.com/Microsoft/azureimds/blob/master/IMDSSample.pl
PowerShell https://github.com/Microsoft/azureimds/blob/master/IMDSSample.ps1
Puppet https://github.com/keirans/azuremetadata
Python https://github.com/Microsoft/azureimds/blob/master/IMDSSample.py
Ruby https://github.com/Microsoft/azureimds/blob/master/IMDSSample.rb

Hatalar ve hata ayıklama

Veri öğesi bulunamadıysa veya hatalı biçimlendirilmiş bir istek varsa, Örnek Meta Veri Hizmeti standart HTTP hataları döndürür. Örneğin:

HTTP durum kodu Nedeni
200 OK İstek başarılı oldu.
400 Bad Request Metadata: true Yaprak düğüm sorgulanırken üst bilgi eksik veya eksik parametre format=json
404 Not Found İstenen öğe yok
405 Method Not Allowed HTTP yöntemi (fiil) uç noktada desteklenmez.
410 Gone En fazla 70 saniye boyunca bir süre sonra yeniden deneyin
429 Too Many Requests API Hız Sınırları aşıldı
500 Service Error Bir süre sonra yeniden deneyin

Sık sorulan sorular

  • hatasını 400 Bad Request, Required metadata header not specifiedalıyorum. Bu ne anlama geliyor?

    • IMDS, üst bilginin Metadata: true istekte geçirilmesini gerektirir. Bu üst bilgiyi REST çağrısına geçirmek IMDS'ye erişim sağlar.
  • Vm'm için neden işlem bilgilerini alamıyorum?

    • Şu anda IMDS yalnızca Azure Resource Manager ile oluşturulan örnekleri destekler.
  • Vm'mi bir süre önce Azure Resource Manager aracılığıyla oluşturdum. İşlem meta verileri bilgilerini neden göremiyorum?

    • Vm'nizi Eylül 2016'da oluşturduysanız işlem meta verilerini görmeye başlamak için bir etiket ekleyin. VM'nizi Eylül 2016'ya kadar oluşturduysanız, meta verileri yenilemek için VM örneğine uzantılar veya veri diskleri ekleyin veya kaldırın.
  • Kullanıcı verileri özel veriyle aynı mı?

    • Kullanıcı verileri, özel verilere benzer işlevler seçerek vm örneğine kendi meta verilerinizi geçirmenizi sağlar. Aradaki fark, kullanıcı verilerinin IMDS aracılığıyla alınması ve VM örneğinin ömrü boyunca kalıcı olmasıdır. Mevcut özel veri özelliği bu makalede açıklandığı gibi çalışmaya devam edecektir. Ancak özel verileri IMDS aracılığıyla değil yalnızca yerel sistem klasörü aracılığıyla alabilirsiniz.
  • Neden yeni sürüm için tüm verilerin doldurulmadığını görüyorum?

    • Vm'nizi Eylül 2016'da oluşturduysanız işlem meta verilerini görmeye başlamak için bir etiket ekleyin. VM'nizi Eylül 2016'ya kadar oluşturduysanız, meta verileri yenilemek için VM örneğine uzantılar veya veri diskleri ekleyin veya kaldırın.
  • Neden veya 410 Resource Gonehatasını 500 Internal Server Error alıyorum?

    • İsteğinizi tekrar deneyin. Daha fazla bilgi için bkz . Geçici hata işleme. Sorun devam ederse, VM için Azure portalında bir destek sorunu oluşturun.
  • Bu, ölçek kümesi örnekleri için çalışır mı?

    • Evet, ölçek kümesi örnekleri için IMDS kullanılabilir.
  • Ölçek kümelerimdeki etiketlerimi güncelleştirdim, ancak bunlar örneklerde görünmüyor (tek örnekli VM'lerin aksine). Yanlış bir şey mi yapıyorum?

    • Şu anda ölçek kümeleri için etiketler yalnızca yeniden başlatma, yeniden kullanım veya örnek disk değişikliğinde VM'de gösterilir.
  • Vm'm için instance/compute SKU bilgilerini neden ayrıntılı olarak göremiyorum?

    • azure platformu, Azure Market oluşturulan özel görüntüler için özel görüntüye ilişkin SKU bilgilerini ve özel görüntüden oluşturulan vm'lerin ayrıntılarını korumaz. Bu tasarım gereğidir ve bu nedenle VM instance/compute ayrıntılarında gösterilmez.
  • Hizmete çağrım için isteğim neden zaman aşımına uğradı (veya bağlanamadı).

    • Meta veri çağrıları, VM'nin birincil ağ kartına atanan birincil IP adresinden yapılmalıdır. Ayrıca, yollarınızı değiştirdiyseniz, VM'nizin yerel yönlendirme tablosunda 169.254.169.254/32 adresi için bir yol olmalıdır.

      1. Yerel yönlendirme tablonuzun dökümünü alın ve IMDS girdisini arayın. Örneğin:

        route print
        
        IPv4 Route Table
        ===========================================================================
        Active Routes:
        Network Destination        Netmask          Gateway       Interface  Metric
                0.0.0.0          0.0.0.0      172.16.69.1      172.16.69.7     10
                127.0.0.0        255.0.0.0         On-link         127.0.0.1    331
                127.0.0.1  255.255.255.255         On-link         127.0.0.1    331
        127.255.255.255  255.255.255.255         On-link         127.0.0.1    331
            168.63.129.16  255.255.255.255      172.16.69.1      172.16.69.7     11
        169.254.169.254  255.255.255.255      172.16.69.1      172.16.69.7     11
        ... (continues) ...
        
      2. için 169.254.169.254bir yol olduğunu doğrulayın ve ilgili ağ arabirimini (örneğin, 172.16.69.7) not edin.

      3. Arabirim yapılandırmasının dökümünü alın ve MAC (fiziksel) adresine dikkat ederek yönlendirme tablosunda başvurulan arabirime karşılık gelen arabirimi bulun.

        ipconfig /all
        
        ... (continues) ...
        Ethernet adapter Ethernet:
        
        Connection-specific DNS Suffix  . : xic3mnxjiefupcwr1mcs1rjiqa.cx.internal.cloudapp.net
        Description . . . . . . . . . . . : Microsoft Hyper-V Network Adapter
        Physical Address. . . . . . . . . : 00-0D-3A-E5-1C-C0
        DHCP Enabled. . . . . . . . . . . : Yes
        Autoconfiguration Enabled . . . . : Yes
        Link-local IPv6 Address . . . . . : fe80::3166:ce5a:2bd5:a6d1%3(Preferred)
        IPv4 Address. . . . . . . . . . . : 172.16.69.7(Preferred)
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        ... (continues) ...
        
      4. Arabirimin VM'nin birincil NIC'sine ve birincil IP'sine karşılık geldiğini onaylayın. Birincil NIC ve IP'yi, Azure portalındaki ağ yapılandırmasına bakarak veya Azure CLI ile arayarak bulabilirsiniz. CLI kullanıyorsanız özel IP'leri (ve MAC adresini) not edin. PowerShell CLI örneği aşağıda verilmiştir:

        $ResourceGroup = '<Resource_Group>'
        $VmName = '<VM_Name>'
        $NicNames = az vm nic list --resource-group $ResourceGroup --vm-name $VmName | ConvertFrom-Json | Foreach-Object { $_.id.Split('/')[-1] }
        foreach($NicName in $NicNames)
        {
            $Nic = az vm nic show --resource-group $ResourceGroup --vm-name $VmName --nic $NicName | ConvertFrom-Json
            Write-Host $NicName, $Nic.primary, $Nic.macAddress
        }
        
        wintest767 True 00-0D-3A-E5-1C-C0
        
      5. Eşleşmiyorsa, birincil NIC ve IP'nin hedeflenmesi için yönlendirme tablosunu güncelleştirin.


  • Windows Server'da kümelemede yük devretme

    • Yük devretme kümelemesi ile IMDS'yi sorgularken, bazen yönlendirme tablosuna bir yol eklemek gerekir. Şunu yapabilirsiniz:

      1. Yönetici ayrıcalıklarına sahip bir komut istemi açın.

      2. Aşağıdaki komutu çalıştırın ve IPv4 Yol Tablosu'ndaki Ağ Hedefi arabiriminin (0.0.0.0) adresini not edin.

      route print
      

      Not

      Aşağıdaki örnek çıktı, yük devretme kümesi etkinleştirilmiş bir Windows Server VM'sinden alınmaktadır. Kolaylık olması için çıkışta yalnızca IPv4 Yol Tablosu bulunur.

      IPv4 Route Table
      ===========================================================================
      Active Routes:
      Network Destination        Netmask          Gateway       Interface  Metric
              0.0.0.0          0.0.0.0         10.0.1.1        10.0.1.10    266
              10.0.1.0  255.255.255.192         On-link         10.0.1.10    266
              10.0.1.10  255.255.255.255         On-link         10.0.1.10    266
              10.0.1.15  255.255.255.255         On-link         10.0.1.10    266
              10.0.1.63  255.255.255.255         On-link         10.0.1.10    266
              127.0.0.0        255.0.0.0         On-link         127.0.0.1    331
              127.0.0.1  255.255.255.255         On-link         127.0.0.1    331
      127.255.255.255  255.255.255.255         On-link         127.0.0.1    331
          169.254.0.0      255.255.0.0         On-link     169.254.1.156    271
          169.254.1.156  255.255.255.255         On-link     169.254.1.156    271
      169.254.255.255  255.255.255.255         On-link     169.254.1.156    271
              224.0.0.0        240.0.0.0         On-link         127.0.0.1    331
              224.0.0.0        240.0.0.0         On-link     169.254.1.156    271
      255.255.255.255  255.255.255.255         On-link         127.0.0.1    331
      255.255.255.255  255.255.255.255         On-link     169.254.1.156    271
      255.255.255.255  255.255.255.255         On-link         10.0.1.10    266
      

      Aşağıdaki komutu çalıştırın ve Bu örnekte () olan Ağ Hedefi0.0.0.0 arabiriminin (10.0.1.10 ) adresini kullanın.

      route add 169.254.169.254/32 10.0.1.10 metric 1 -p
      

Destek

Birden çok denemeden sonra meta veri yanıtı alamıyorsanız Azure portalında bir destek sorunu oluşturabilirsiniz.

Ürün geri bildirimi

Kullanıcı geri bildirim kanalımıza ürün geri bildirimi ve fikirleri buradan Sanal Makineler > Örnek Meta Veri Hizmeti altında sağlayabilirsiniz

Sonraki adımlar