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.16
davranması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çermelidir
Metadata: 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 text
de 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 string
olur 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 |
Ağ
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 , sku
nonce
, , 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:
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 specified
alı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.
- IMDS, üst bilginin
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 Gone
hatası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.
- 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
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.
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) ...
için
169.254.169.254
bir yol olduğunu doğrulayın ve ilgili ağ arabirimini (örneğin,172.16.69.7
) not edin.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) ...
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
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:
Yönetici ayrıcalıklarına sahip bir komut istemi açın.
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ğ Hedefi
0.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