Azure Instance Metadata Service
Gäller för: ✔️ Virtuella Linux-datorer ✔️ med virtuella Windows-datorer ✔️ – flexibla skalningsuppsättningar
Azure Instance Metadata Service (IMDS) innehåller information om instanser av virtuella datorer som körs just nu. Du kan använda den till att hantera och konfigurera dina virtuella datorer. Den här informationen omfattar SKU, lagring, nätverkskonfigurationer och kommande underhållshändelser. En fullständig lista över tillgängliga data finns i Sammanfattning av slutpunktskategorier.
IMDS är tillgängligt för att köra instanser av virtuella datorer (VM) och skalningsuppsättningsinstanser. Alla slutpunkter stöder virtuella datorer som skapats och hanteras med hjälp av Azure Resource Manager. Endast kategorin Attested och nätverksdelen i kategorin Instans stöder virtuella datorer som skapats med hjälp av den klassiska distributionsmodellen. Den attesterade slutpunkten gör det endast i begränsad utsträckning.
IMDS är ett REST-API som är tillgängligt på en välkänd, icke-dirigerbar IP-adress (169.254.169.254
). Du kan bara komma åt den från den virtuella datorn. Kommunikationen mellan den virtuella datorn och IMDS lämnar aldrig värden.
Låt dina HTTP-klienter kringgå webbproxys i den virtuella datorn när du frågar IMDS och behandla 169.254.169.254
samma som 168.63.129.16
.
Förbrukning
Åtkomst till Azure Instance Metadata Service
Om du vill komma åt IMDS skapar du en virtuell dator från Azure Resource Manager eller Azure Portal och använder följande exempel. Fler exempel finns i Exempel på Azure-instansmetadata.
Här är exempelkoden för att hämta alla metadata för en instans. Information om hur du kommer åt en specifik datakälla finns i Slutpunktskategorier för en översikt över alla tillgängliga funktioner.
Begär
Viktigt!
Det här exemplet kringgår proxyservrar. Du måste kringgå proxyservrar när du kör frågor mot IMDS. Mer information finns i Proxyservrar .
Kommentar
IMDS-begäranden måste skickas med den virtuella datorns primära nätverkskort och primära IP-adress och DHCP måste vara aktiverat.
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
kräver PowerShell V6 eller senare. Se vår exempellagringsplats för exempel med äldre PowerShell-versioner.
Svar
Kommentar
Svaret är en JSON-sträng. Följande exempelsvar är ganska skrivet för läsbarhet.
{
"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"
}]
}
}
Säkerhet och autentisering
Instansmetadatatjänsten är endast tillgänglig från en virtuell datorinstans som körs på en ip-adress som inte kan dirigeras. Virtuella datorer kan bara interagera med sina egna metadata/funktioner. API:et är endast HTTP och lämnar aldrig värden.
För att säkerställa att begäranden är direkt avsedda för IMDS och förhindra oavsiktlig eller oönskad omdirigering av begäranden:
- Måste innehålla rubriken
Metadata: true
- Får inte innehålla ett
X-Forwarded-For
huvud
Alla begäranden som inte uppfyller båda dessa krav avvisas av tjänsten.
Viktigt!
IMDS är inte en kanal för känsliga data. API:et är oautentiserat och öppet för alla processer på den virtuella datorn. Information som exponeras via den här tjänsten bör betraktas som delad information till alla program som körs i den virtuella datorn.
Om det inte är nödvändigt för varje process på den virtuella datorn att få åtkomst till IMDS-slutpunkten kan du ange lokala brandväggsregler för att begränsa åtkomsten. Om till exempel bara en känd systemtjänst behöver komma åt instansmetadatatjänsten kan du ange en brandväggsregel på IMDS-slutpunkten, endast tillåta att den specifika processen(es) får åtkomst eller neka åtkomst för resten av processerna.
Proxyservrar
IMDS är inte avsett att användas bakom en proxy och det stöds inte. De flesta HTTP-klienter erbjuder ett alternativ för att inaktivera proxyservrar för dina begäranden, och den här funktionen måste användas när du kommunicerar med IMDS. Mer information finns i klientens dokumentation.
Viktigt!
Även om du inte känner till någon proxykonfiguration i din miljö måste du fortfarande åsidosätta alla standardinställningar för klientproxy. Proxykonfigurationer kan identifieras automatiskt och om du inte kringgår sådana konfigurationer utsätts du för avbrottsrisker om datorns konfiguration ändras i framtiden.
Frekvensbegränsning
I allmänhet är begäranden till IMDS begränsade till 5 begäranden per sekund (per virtuell dator). Begäranden som överskrider det här tröskelvärdet avvisas med 429-svar. Begäranden till kategorin Hanterad identitet är begränsade till 20 begäranden per sekund och 5 samtidiga begäranden (per virtuell dator).
HTTP-verb
Följande HTTP-verb stöds för närvarande:
Verb | beskrivning |
---|---|
GET |
Hämta den begärda resursen |
Parametrar
Slutpunkter kan ha stöd för obligatoriska och/eller valfria parametrar. Mer information finns i Schema och dokumentationen för den aktuella slutpunkten.
Frågeparametrar
IMDS-slutpunkter stöder HTTP-frågesträngsparametrar. Till exempel:
http://169.254.169.254/metadata/instance/compute?api-version=2021-01-01&format=json
Anger parametrarna:
Name | Värde |
---|---|
api-version |
2021-01-01 |
format |
json |
Begäranden med duplicerade frågeparameternamn avvisas.
Routningsparametrar
För vissa slutpunkter som returnerar större json-blobar har vi stöd för att lägga till vägparametrar till begärandeslutpunkten för att filtrera ned till en delmängd av svaret:
http://169.254.169.254/metadata/<endpoint>/[<filter parameter>/...]?<query parameters>
Parametrarna motsvarar de index/nycklar som skulle användas för att gå nedåt i json-objektet om du interagerade med en parsad representation.
Returnerar till exempel /metadata/instance
json-objektet:
{
"compute": { ... },
"network": {
"interface": [
{
"ipv4": {
"ipAddress": [{
"privateIpAddress": "10.144.133.132",
"publicIpAddress": ""
}],
"subnet": [{
"address": "10.144.133.128",
"prefix": "26"
}]
},
"ipv6": {
"ipAddress": [
]
},
"macAddress": "0011AAFFBB22"
},
...
]
}
}
Om vi vill filtrera ned svaret till bara beräkningsegenskapen skickar vi begäran:
http://169.254.169.254/metadata/instance/compute?api-version=<version>
På samma sätt, om vi vill filtrera till en kapslad egenskap eller ett specifikt matriselement fortsätter vi att lägga till nycklar:
http://169.254.169.254/metadata/instance/network/interface/0?api-version=<version>
skulle filtrera till det första elementet Network.interface
från egenskapen och returnera:
{
"ipv4": {
"ipAddress": [{
"privateIpAddress": "10.144.133.132",
"publicIpAddress": ""
}],
"subnet": [{
"address": "10.144.133.128",
"prefix": "26"
}]
},
"ipv6": {
"ipAddress": [
]
},
"macAddress": "0011AAFFBB22"
}
Kommentar
När du filtrerar till en lövnod format=json
fungerar det inte. För dessa frågor format=text
måste anges uttryckligen eftersom standardformatet är json.
Schema
Dataformat
Som standard returnerar IMDS data i JSON-format (Content-Type: application/json
). Slutpunkter som stöder svarsfiltrering (se Routningsparametrar) stöder dock också formatet text
.
Om du vill komma åt ett svarsformat som inte är standard anger du det begärda formatet som en frågesträngsparameter i begäran. Till exempel:
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance?api-version=2017-08-01&format=text"
I json-svar kommer alla primitiver att vara av typen string
, och saknade eller inapplicerbara värden inkluderas alltid men anges till en tom sträng.
Versionshantering
IMDS är versionshanterad och det är obligatoriskt att ange API-versionen i HTTP-begäran. Det enda undantaget till det här kravet är versionsslutpunkten , som kan användas för att dynamiskt hämta tillgängliga API-versioner.
När nyare versioner läggs till kan äldre versioner fortfarande nås för kompatibilitet om skripten har beroenden för specifika dataformat.
När du inte anger en version får du ett fel med en lista över de senaste versioner som stöds:
{
"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"
]
}
API-versioner som stöds
Kommentar
Version 2023-11-15 distribueras fortfarande, den kanske inte är tillgänglig i vissa regioner.
- 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
- 2019-06-01
- 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
En fullständig Swagger-definition för IMDS finns på: https://github.com/Azure/azure-rest-api-specs/blob/main/specification/imds/data-plane/readme.md
Regional tillgänglighet
Tjänsten är allmänt tillgänglig i alla Azure-moln.
Rotslutpunkt
Rotslutpunkten är http://169.254.169.254/metadata
.
Slutpunktskategorier
IMDS-API:et innehåller flera slutpunktskategorier som representerar olika datakällor, som var och en innehåller en eller flera slutpunkter. Mer information finns i varje kategori.
Kategorirot | beskrivning | Version introducerad |
---|---|---|
/metadata/attested |
Se Attesterade data | 2018-10-01 |
/metadata/identity |
Se Hanterad identitet via IMDS | 2018-02-01 |
/metadata/instance |
Se Instansmetadata | 2017-04-02 |
/metadata/loadbalancer |
Se Hämta Load Balancer-metadata via IMDS | 2020-10-01 |
/metadata/scheduledevents |
Se Schemalagda händelser via IMDS | 2017-08-01 |
/metadata/versions |
Se versioner | Ej tillämpligt |
Versioner
Lista API-versioner
Returnerar uppsättningen api-versioner som stöds.
GET /metadata/versions
Parametrar
Ingen (den här slutpunkten är oversionerad).
Response
{
"apiVersions": [
"2017-03-01",
"2017-04-02",
...
]
}
Instansmetadata
Hämta vm-metadata
Exponerar viktiga metadata för den virtuella datorinstansen, inklusive beräkning, nätverk och lagring.
GET /metadata/instance
Parameters
Name | Obligatoriskt/valfritt | beskrivning |
---|---|---|
api-version |
Obligatoriskt | Den version som används för att hantera begäran. |
format |
Valfri* | Formatet (json eller text ) för svaret. *Obs! Kan krävas när du använder parametrar för begäran |
Den här slutpunkten stöder svarsfiltrering via routningsparametrar.
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"
}]
}
}
Schemauppdelning:
Beräkning
Data | beskrivning | Version introducerad |
---|---|---|
azEnvironment |
Azure Environment där den virtuella datorn körs i | 2018-10-01 |
additionalCapabilities.hibernationEnabled |
Identifierar om viloläge är aktiverat på den virtuella datorn | 2021-11-01 |
customData |
Den här funktionen är inaktuell och inaktiverad i IMDS. Den har ersatts av userData |
2019-02-01 |
evictionPolicy |
Anger hur en virtuell dator med oanvänd kapacitet ska avlägsnas. | 2020-12-01 |
extendedLocation.type |
Typ av den utökade platsen för den virtuella datorn. | 2021-03-01 |
extendedLocation.name |
Namn på den utökade platsen för den virtuella datorn | 2021-03-01 |
host.id |
Namnet på den virtuella datorns värd. Observera att en virtuell dator antingen har en värd eller en hostGroup, men inte båda. | 2021-11-15 |
hostGroup.id |
Namnet på den virtuella datorns värdgrupp. Observera att en virtuell dator antingen har en värd eller en hostGroup, men inte båda. | 2021-11-15 |
isHostCompatibilityLayerVm |
Identifierar om den virtuella datorn körs på värdkompatibilitetsskiktet | 2020-06-01 |
licenseType |
Typ av licens för Azure Hybrid-förmån. Detta finns bara för AHB-aktiverade virtuella datorer | 2020-09-01 |
location |
Azure-region som den virtuella datorn körs i | 2017-04-02 |
name |
Namn på den virtuella datorn | 2017-04-02 |
offer |
Erbjudandeinformation för vm-avbildningen och finns endast för avbildningar som distribuerats från Azure-avbildningsgalleriet | 2017-04-02 |
osProfile.adminUsername |
Anger namnet på administratörskontot | 2020-07-15 |
osProfile.computerName |
Anger namnet på datorn | 2020-07-15 |
osProfile.disablePasswordAuthentication |
Anger om lösenordsautentisering är inaktiverat. Detta finns bara för virtuella Linux-datorer | 2020-10-01 |
osType |
Linux eller Windows | 2017-04-02 |
physicalZone |
Fysisk zon för den virtuella datorn | 2023-11-15 |
placementGroupId |
Placeringsgrupp för din skalningsuppsättning | 2017-08-01 |
plan |
Planera innehållande namn, produkt och utgivare för en virtuell dator om det är en Azure Marketplace-avbildning | 2018-04-02 |
platformUpdateDomain |
Uppdatera domänen som den virtuella datorn körs i | 2017-04-02 |
platformFaultDomain |
Feldomän som den virtuella datorn körs i | 2017-04-02 |
platformSubFaultDomain |
Underfeldomän som den virtuella datorn körs i, om tillämpligt. | 2021-10-01 |
priority |
Prioritet för den virtuella datorn. Mer information finns i Virtuella datorer med oanvänd kapacitet | 2020-12-01 |
provider |
Provider för den virtuella datorn | 2018-10-01 |
publicKeys |
Samling offentliga nycklar som tilldelats den virtuella datorn och sökvägar | 2018-04-02 |
publisher |
Utgivare av VM-avbildningen | 2017-04-02 |
resourceGroupName |
Resursgrupp för den virtuella datorn | 2017-08-01 |
resourceId |
Resursens fullständigt kvalificerade ID | 2019-03-11 |
sku |
Specifik SKU för VM-avbildningen | 2017-04-02 |
securityProfile.secureBootEnabled |
Identifierar om säker UEFI-start är aktiverad på den virtuella datorn | 2020-06-01 |
securityProfile.virtualTpmEnabled |
Identifierar om den virtuella betrodda plattformsmodulen (TPM) är aktiverad på den virtuella datorn | 2020-06-01 |
securityProfile.encryptionAtHost |
Identifierar om kryptering på värden är aktiverat på den virtuella datorn | 2021-11-01 |
securityProfile.securityType |
Identifierar om den virtuella datorn är en betrodd virtuell dator eller en konfidentiell virtuell dator | 2021-12-13 |
storageProfile |
Se Lagringsprofil nedan | 2019-06-01 |
subscriptionId |
Azure-prenumeration för den virtuella datorn | 2017-08-01 |
tags |
Taggar för den virtuella datorn | 2017-08-01 |
tagsList |
Taggar som är formaterade som en JSON-matris för enklare programmatisk parsning | 2019-06-04 |
userData |
Den uppsättning data som angavs när den virtuella datorn skapades för användning under eller efter etableringen (Base64-kodad) | 2021-01-01 |
version |
Version av VM-avbildningen | 2017-04-02 |
virtualMachineScaleSet.id |
ID för vm-skalningsuppsättningen som skapats med flexibel orkestrering som den virtuella datorn ingår i. Det här fältet är inte tillgängligt för vm-skalningsuppsättningar som skapats med enhetlig orkestrering. | 2021-03-01 |
vmId |
Unik identifierare för den virtuella datorn. Bloggen refererade endast till passar för virtuella datorer som har SMBIOS < 2.6. För virtuella datorer som har SMBIOS >= 2.6 visas UUID från DMI i lite endianskt format, vilket innebär att det inte finns något krav på att växla byte. | 2017-04-02 |
vmScaleSetName |
Vm-skalningsuppsättningens namn på din skalningsuppsättning | 2017-12-01 |
vmSize |
Storlek på virtuell dator | 2017-04-02 |
zone |
Tillgänglighetszon för den virtuella datorn | 2017-12-01 |
† Den här versionen är inte helt tillgänglig än och stöds kanske inte i alla regioner.
Lagringsprofil
Lagringsprofilen för en virtuell dator är uppdelad i tre kategorier: avbildningsreferens, OS-disk och datadiskar, plus ytterligare ett objekt för den lokala temporära disken.
Bildreferensobjektet innehåller följande information om OS-avbildningen. Observera att en bild kan komma antingen från plattformen, marknadsplatsen, communitygalleriet eller det direkt delade galleriet, men inte båda:
Data | beskrivning | Version introducerad |
---|---|---|
id |
Resurs-ID | 2019-06-01 |
offer |
Erbjudande för plattforms- eller marketplace-avbildningen | 2019-06-01 |
publisher |
Utgivare av plattforms- eller marketplace-avbildningen | 2019-06-01 |
sku |
SKU för plattforms- eller marketplace-avbildningen | 2019-06-01 |
version |
Version av avbildningen | 2019-06-01 |
communityGalleryImageId |
Resurs-ID för community-avbildningen, tomt annars | 2023-07-01 |
sharedGalleryImageId |
Resurs-ID o direkt delad avbildning, tomt annars | 2023-07-01 |
exactVersion |
Version av communityn eller direkt delad avbildning | 2023-07-01 |
OS-diskobjektet innehåller följande information om os-disken som används av den virtuella datorn:
Data | beskrivning |
---|---|
caching |
Krav för cachelagring |
createOption |
Information om hur den virtuella datorn skapades |
diffDiskSettings |
Tillfälliga diskinställningar |
diskSizeGB |
Storlek på disken i GB |
image |
Virtuell hårddisk för källanvändare |
managedDisk |
Hanterade diskparametrar |
name |
Disknamn |
vhd |
Virtuell hårddisk |
writeAcceleratorEnabled |
Om writeAccelerator är aktiverat på disken eller inte |
Matrisen datadiskar innehåller en lista över datadiskar som är anslutna till den virtuella datorn. Varje datadiskobjekt innehåller följande information:
Data | beskrivning | Version introducerad |
---|---|---|
bytesPerSecondThrottle * |
Diskläsnings-/skrivkvot i byte | 2021-05-01 |
caching |
Krav för cachelagring | 2019-06-01 |
createOption |
Information om hur den virtuella datorn skapades | 2019-06-01 |
diffDiskSettings |
Tillfälliga diskinställningar | 2019-06-01 |
diskCapacityBytes * |
Storleken på disken i byte | 2021-05-01 |
diskSizeGB |
Storlek på disken i GB | 2019-06-01 |
encryptionSettings |
Krypteringsinställningar för disken | 2019-06-01 |
image |
Virtuell hårddisk för källanvändare | 2019-06-01 |
isSharedDisk * |
Identifierar om disken delas mellan resurser | 2021-05-01 |
isUltraDisk |
Identifierar om datadisken är en Ultra Disk | 2021-05-01 |
lun |
Diskens logiska enhetsnummer | 2019-06-01 |
managedDisk |
Hanterade diskparametrar | 2019-06-01 |
name |
Disknamn | 2019-06-01 |
opsPerSecondThrottle * |
Diskläsnings-/skrivkvot i IOPS | 2021-05-01 |
osType |
Typ av operativsystem som ingår i disken | 2019-06-01 |
vhd |
Virtuell hårddisk | 2019-06-01 |
writeAcceleratorEnabled |
Om writeAccelerator är aktiverat på disken eller inte | 2019-06-01 |
*De här fälten fylls bara i för Ultra Disks. de är tomma strängar från icke-Ultra Disks.
Krypteringsinställningsbloben innehåller data om hur disken krypteras (om den är krypterad):
Data | beskrivning | Version introducerad |
---|---|---|
diskEncryptionKey.sourceVault.id |
Platsen för diskkrypteringsnyckeln | 2021-11-01 |
diskEncryptionKey.secretUrl |
Platsen för hemligheten | 2021-11-01 |
keyEncryptionKey.sourceVault.id |
Platsen för nyckelkrypteringsnyckeln | 2021-11-01 |
keyEncryptionKey.keyUrl |
Platsen för nyckeln | 2021-11-01 |
Resursdiskobjektet innehåller storleken på den lokala tempdisken som är ansluten till den virtuella datorn, om den har en, i kilobyte. Om det inte finns någon lokal temporär disk för den virtuella datorn är det här värdet 0.
Data | beskrivning | Version introducerad |
---|---|---|
resourceDisk.size |
Storleken på den lokala temporära disken för den virtuella datorn (i kB) | 2021-02-01 |
Nätverk
Data | beskrivning | Version introducerad |
---|---|---|
ipv4.privateIpAddress |
Lokal IPv4-adress för den virtuella datorn | 2017-04-02 |
ipv4.publicIpAddress |
Offentlig IPv4-adress för den virtuella datorn | 2017-04-02 |
subnet.address |
Undernätsadress för den virtuella datorn | 2017-04-02 |
subnet.prefix |
Undernätsprefix, exempel 24 | 2017-04-02 |
ipv6.ipAddress |
Lokal IPv6-adress för den virtuella datorn | 2017-04-02 |
macAddress |
Mac-adress för virtuell dator | 2017-04-02 |
Kommentar
Nätverkskorten som returneras av nätverksanropet är inte garanterade att vara i ordning.
Hämta användardata
När du skapar en ny virtuell dator kan du ange en uppsättning data som ska användas under eller efter etableringen av den virtuella datorn och hämta dem via IMDS. Kontrollera användardataupplevelsen från slutpunkt till slutpunkt här.
Om du vill konfigurera användardata använder du snabbstartsmallen här. Exemplet nedan visar hur du hämtar dessa data via IMDS. Den här funktionen släpps med version 2021-01-01
och senare.
Kommentar
Säkerhetsmeddelande: IMDS är öppet för alla program på den virtuella datorn, känsliga data ska inte placeras i användardata.
$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))
Exempel 1: Spåra virtuella datorer som körs i Azure
Som tjänstleverantör kan du behöva spåra antalet virtuella datorer som kör programvaran eller ha agenter som behöver spåra unikhet för den virtuella datorn. Om du vill kunna hämta ett unikt ID för en virtuell dator använder du fältet vmId
från Instance Metadata Service.
Begär
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
Exempel 2: Placering av olika datarepliker
För vissa scenarier är placeringen av olika datarepliker av största vikt. Till exempel kan HDFS-replikplacering eller containerplacering via en orkestrerare kräva att du känner platformFaultDomain
till och platformUpdateDomain
att den virtuella datorn körs på.
Du kan också använda Tillgänglighetszoner för instanserna för att fatta dessa beslut.
Du kan köra frågor mot dessa data direkt via IMDS.
Begär
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
Exempel 3: Hämta VM-taggar
VM-taggar ingår i instans-API:et under slutpunkten för instans/beräkning/taggar. Taggar kan ha tillämpats på den virtuella Azure-datorn för att logiskt organisera dem i en taxonomi. Taggarna som tilldelats till en virtuell dator kan hämtas med hjälp av begäran nedan.
Begär
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
Fältet tags
är en sträng med taggarna avgränsade med semikolon. Det här utdata kan vara ett problem om semikolon används i själva taggarna. Om en parser skrivs för att programmatiskt extrahera taggarna bör du förlita dig på fältet tagsList
. Fältet tagsList
är en JSON-matris utan avgränsare och därmed enklare att parsa. Den tagsList som tilldelats till en virtuell dator kan hämtas med hjälp av begäran nedan.
Begär
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
}
Exempel 4: Få mer information om den virtuella datorn under supportärende
Som tjänstleverantör kan du få ett supportsamtal där du vill veta mer om den virtuella datorn. Att be kunden att dela beräkningsmetadata kan ge grundläggande information till supportpersonalen om vilken typ av virtuell dator som finns i Azure.
Begär
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
Svar
Kommentar
Svaret är en JSON-sträng. Följande exempelsvar är ganska skrivet för läsbarhet.
{
"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"
}
Exempel 5: Hämta Azure-miljön där den virtuella datorn körs
Azure har olika nationella moln som Azure Government. Ibland behöver du Azure Environment för att fatta vissa körningsbeslut. Följande exempel visar hur du kan uppnå det här beteendet.
Begär
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
Molnet och värdena för Azure-miljön visas här.
Moln | Azure-miljö |
---|---|
Alla allmänt tillgängliga globala Azure-regioner | AzurePublicCloud |
Azure Government | AzureUSGovernmentCloud |
Microsoft Azure drivs av 21Vianet | AzureChinaCloud |
Azure Tyskland | AzureGermanCloud |
Exempel 6: Hämta nätverksinformation
Begär
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"
}
]
}
Exempel 7: Hämta offentlig IP-adress
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"
Kommentar
- Om du vill hämta IMDS-information för offentlig IP-adress för Standard SKU läser du Metadata-API för lastbalanserare för mer information.
Attesterade data
Hämta attesterade data
IMDS hjälper till att ge garantier för att de data som tillhandahålls kommer från Azure. Microsoft signerar en del av den här informationen så att du kan bekräfta att en avbildning på Azure Marketplace är den som du kör i Azure.
GET /metadata/attested/document
Parameters
Name | Obligatoriskt/valfritt | beskrivning |
---|---|---|
api-version |
Obligatoriskt | Den version som används för att hantera begäran. |
nonce |
Valfritt | En tiosiffrig sträng som fungerar som en kryptografisk nonce. Om inget värde anges använder IMDS den aktuella UTC-tidsstämpeln. |
Response
{
"encoding":"pkcs7",
"signature":"MIIEEgYJKoZIhvcNAQcCoIIEAzCCA/8CAQExDzANBgkqhkiG9w0BAQsFADCBugYJKoZIhvcNAQcBoIGsBIGpeyJub25jZSI6IjEyMzQ1NjY3NjYiLCJwbGFuIjp7Im5hbWUiOiIiLCJwcm9kdWN0IjoiIiwicHVibGlzaGVyIjoiIn0sInRpbWVTdGFtcCI6eyJjcmVhdGVkT24iOiIxMS8yMC8xOCAyMjowNzozOSAtMDAwMCIsImV4cGlyZXNPbiI6IjExLzIwLzE4IDIyOjA4OjI0IC0wMDAwIn0sInZtSWQiOiIifaCCAj8wggI7MIIBpKADAgECAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBBAUAMCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tMB4XDTE4MTEyMDIxNTc1N1oXDTE4MTIyMDIxNTc1NlowKzEpMCcGA1UEAxMgdGVzdHN1YmRvbWFpbi5tZXRhZGF0YS5henVyZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAML/tBo86ENWPzmXZ0kPkX5dY5QZ150mA8lommszE71x2sCLonzv4/UWk4H+jMMWRRwIea2CuQ5RhdWAHvKq6if4okKNt66fxm+YTVz9z0CTfCLmLT+nsdfOAsG1xZppEapC0Cd9vD6NCKyE8aYI1pliaeOnFjG0WvMY04uWz2MdAgMBAAGjYDBeMFwGA1UdAQRVMFOAENnYkHLa04Ut4Mpt7TkJFfyhLTArMSkwJwYDVQQDEyB0ZXN0c3ViZG9tYWluLm1ldGFkYXRhLmF6dXJlLmNvbYIQZ8VuSofHbJRAQNBNpiASdDANBgkqhkiG9w0BAQQFAAOBgQCLSM6aX5Bs1KHCJp4VQtxZPzXF71rVKCocHy3N9PTJQ9Fpnd+bYw2vSpQHg/AiG82WuDFpPReJvr7Pa938mZqW9HUOGjQKK2FYDTg6fXD8pkPdyghlX5boGWAMMrf7bFkup+lsT+n2tRw2wbNknO1tQ0wICtqy2VqzWwLi45RBwTGB6DCB5QIBATA/MCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBCwUAMA0GCSqGSIb3DQEBAQUABIGAld1BM/yYIqqv8SDE4kjQo3Ul/IKAVR8ETKcve5BAdGSNkTUooUGVniTXeuvDj5NkmazOaKZp9fEtByqqPOyw/nlXaZgOO44HDGiPUJ90xVYmfeK6p9RpJBu6kiKhnnYTelUk5u75phe5ZbMZfBhuPhXmYAdjc7Nmw97nx8NnprQ="
}
Signaturbloben är en pkcs7-signerad version av dokumentet. Den innehåller certifikatet som används för signering tillsammans med viss VM-specifik information.
För virtuella datorer som skapats med hjälp av Azure Resource Manager innehåller vmId
dokumentet , sku
, nonce
, , subscriptionId
timeStamp
för skapande och förfallodatum för dokumentet och planinformationen om avbildningen. Planinformationen fylls bara i för Azure Marketplace-avbildningar.
För virtuella datorer som skapats med hjälp av den klassiska distributionsmodellen är det bara och vmId
subscriptionId
som garanterat fylls i. Du kan extrahera certifikatet från svaret och använda det för att bekräfta att svaret är giltigt och kommer från Azure.
Det avkodade dokumentet innehåller följande fält:
Data | beskrivning | Version introducerad |
---|---|---|
licenseType |
Typ av licens för Azure Hybrid-förmån. Detta finns bara för AHB-aktiverade virtuella datorer. | 2020-09-01 |
nonce |
En sträng som kan tillhandahållas med begäran. Om inget nonce angavs används den aktuella tidsstämpeln för koordinerad universell tid. |
2018-10-01 |
plan |
Azure Marketplace Image-planen. Innehåller plan-ID (namn), produktbild eller erbjudande (produkt) och utgivar-ID (utgivare). | 2018-10-01 |
timestamp.createdOn |
UTC-tidsstämpeln för när det signerade dokumentet skapades | 2018-20-01 |
timestamp.expiresOn |
UTC-tidsstämpeln för när det signerade dokumentet upphör att gälla | 2018-10-01 |
vmId |
Unik identifierare för den virtuella datorn | 2018-10-01 |
subscriptionId |
Azure-prenumeration för den virtuella datorn | 2019-04-30 |
sku |
Specifik SKU för VM-avbildningen (korrelerar med compute/sku egenskapen från slutpunkten för instansmetadata [/metadata/instance ]) |
2019-11-01 |
Kommentar
För klassiska (icke-Azure Resource Manager) virtuella datorer är det bara vmId som garanterat fylls i.
Exempeldokument:
{
"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"
}
Vägledning för signaturverifiering
När du verifierar signaturen bör du bekräfta att signaturen har skapats med ett certifikat från Azure. Detta görs genom att verifiera certifikatmottagarens alternativa namn (SAN).
Exempel på SAN DNS Name=eastus.metadata.azure.com, DNS Name=metadata.azure.com
Kommentar
Domänen för det offentliga molnet och varje nationellt moln kommer att vara olika.
Moln | Domän i SAN |
---|---|
Alla allmänt tillgängliga globala Azure-regioner | *.metadata.azure.com |
Azure Government | *.metadata.azure.us |
Azure drivs av 21Vianet | *.metadata.azure.cn |
Azure Tyskland | *.metadata.microsoftazure.de |
Kommentar
Certifikaten kanske inte har någon exakt matchning för domänen. Därför bör certifieringsverifieringen godkänna alla underdomäner (till exempel i offentliga moln accepterar *.metadata.azure.com
allmänna tillgänglighetsregioner ).
Vi rekommenderar inte att certifikat fästs för mellanliggande certifikat. Mer information finns i Fäst certifikat – Pinning av certifikat och Azure-tjänster. Observera att Azure Instance Metadata Service INTE kommer att erbjuda meddelanden för framtida ändringar av certifikatutfärdare. I stället måste du följa artikeln om centraliserad Azure Certificate Authority-information för alla framtida uppdateringar.
Exempel 1: Verifiera att den virtuella datorn körs i Azure
Leverantörer på Azure Marketplace vill se till att deras programvara endast är licensierad att köras i Azure. Om någon kopierar den virtuella hårddisken till en lokal miljö måste leverantören kunna identifiera den. Via IMDS kan dessa leverantörer få signerade data som endast garanterar svar från Azure.
Kommentar
Det här exemplet kräver att jq-verktyget installeras.
Validering
# 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)
Kontrollera att signaturen kommer från Microsoft Azure och kontrollerar om det finns fel i certifikatkedjan.
# 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
I nonce
det signerade dokumentet kan jämföras om du angav en nonce
parameter i den första begäran.
Hanterad identitet
En hanterad identitet, tilldelad av systemet, kan aktiveras på den virtuella datorn. Du kan också tilldela en eller flera användartilldelade hanterade identiteter till den virtuella datorn. Du kan sedan begära token för hanterade identiteter från IMDS. Använd dessa token för att autentisera med andra Azure-tjänster, till exempel Azure Key Vault.
Detaljerade steg för att aktivera den här funktionen finns i Hämta en åtkomsttoken.
Load Balancer Metadata
När du placerar virtuella datorer eller virtuella datoruppsättningsinstanser bakom en Azure Standard Load Balancer kan du använda IMDS för att hämta metadata relaterade till lastbalanseraren och instanserna. Mer information finns i Hämta information om lastbalanserare.
Schemalagda händelser
Du kan hämta status för de schemalagda händelserna med hjälp av IMDS. Sedan kan användaren ange en uppsättning åtgärder som ska köras vid dessa händelser. Mer information finns i Schemalagda händelser för Linux eller Schemalagda händelser för Windows.
Exempelkod på olika språk
I följande tabell visas exempel på hur du anropar IMDS med hjälp av olika språk på den virtuella datorn:
Fel och felsökning
Om det inte går att hitta ett dataelement eller en felaktig begäran returnerar Instansmetadatatjänsten standard-HTTP-fel. Till exempel:
HTTP-statuskod | Anledning |
---|---|
200 OK |
Begäran lyckades. |
400 Bad Request |
Rubrik Metadata: true saknas eller parameter saknas format=json när du kör frågor mot en lövnod |
404 Not Found |
Det begärda elementet finns inte |
405 Method Not Allowed |
HTTP-metoden (verb) stöds inte på slutpunkten. |
410 Gone |
Försök igen efter en tid i högst 70 sekunder |
429 Too Many Requests |
API: s hastighetsgränser har överskridits |
500 Service Error |
Försök igen efter en stund |
Vanliga frågor och svar
Jag får felet
400 Bad Request, Required metadata header not specified
. Vad betyder det?- IMDS kräver att rubriken
Metadata: true
skickas i begäran. Om du skickar det här huvudet i REST-anropet får du åtkomst till IMDS.
- IMDS kräver att rubriken
Varför får jag inte beräkningsinformation för min virtuella dator?
- För närvarande stöder IMDS endast instanser som skapats med Azure Resource Manager.
Jag skapade min virtuella dator via Azure Resource Manager för en tid sedan. Varför visas inte information om beräkningsmetadata?
- Om du skapade den virtuella datorn efter september 2016 lägger du till en tagg för att börja se beräkningsmetadata. Om du skapade den virtuella datorn före september 2016 lägger du till eller tar bort tillägg eller datadiskar i den virtuella datorinstansen för att uppdatera metadata.
Är användardata samma som anpassade data?
- Användardata erbjuder liknande funktioner som anpassade data, så att du kan skicka dina egna metadata till den virtuella datorinstansen. Skillnaden är att användardata hämtas via IMDS och är beständiga under den virtuella datorinstansens livslängd. Den befintliga funktionen för anpassade data fortsätter att fungera enligt beskrivningen i den här artikeln. Du kan dock bara hämta anpassade data via den lokala systemmappen, inte via IMDS.
Varför visas inte alla data ifyllda för en ny version?
- Om du skapade den virtuella datorn efter september 2016 lägger du till en tagg för att börja se beräkningsmetadata. Om du skapade den virtuella datorn före september 2016 lägger du till eller tar bort tillägg eller datadiskar i den virtuella datorinstansen för att uppdatera metadata.
Varför får jag felet
500 Internal Server Error
eller410 Resource Gone
?- Gör om begäran. Mer information finns i Tillfällig felhantering. Om problemet kvarstår skapar du ett supportproblem i Azure Portal för den virtuella datorn.
Skulle detta fungera för skalningsuppsättningsinstanser?
- Ja, IMDS är tillgängligt för skalningsuppsättningsinstanser.
Jag har uppdaterat mina taggar i mina skalningsuppsättningar, men de visas inte i instanserna (till skillnad från virtuella datorer med en enda instans). Gör jag något fel?
- För närvarande visas taggar för skalningsuppsättningar endast för den virtuella datorn vid omstart, omimering eller diskändring till instansen.
Varför ser jag inte SKU-informationen för min virtuella dator i
instance/compute
detalj?- För anpassade avbildningar som skapats från Azure Marketplace behåller Inte Azure-plattformen SKU-informationen för den anpassade avbildningen och information om virtuella datorer som skapats från den anpassade avbildningen. Detta är avsiktligt och visas därför inte i vm-informationen
instance/compute
.
- För anpassade avbildningar som skapats från Azure Marketplace behåller Inte Azure-plattformen SKU-informationen för den anpassade avbildningen och information om virtuella datorer som skapats från den anpassade avbildningen. Detta är avsiktligt och visas därför inte i vm-informationen
Varför överskrids tidsgränsen för min begäran (eller misslyckades att ansluta) för mitt samtal till tjänsten?
Metadataanrop måste göras från den primära IP-adressen som tilldelats den virtuella datorns primära nätverkskort. Om du har ändrat dina vägar måste det dessutom finnas en väg för adressen 169.254.169.254/32 i den virtuella datorns lokala routningstabell.
Dumpa din lokala routningstabell och leta efter POSTEN IMDS. Till exempel:
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) ...
Kontrollera att det finns en väg för
169.254.169.254
och notera motsvarande nätverksgränssnitt (till exempel172.16.69.7
).Dumpa gränssnittskonfigurationen och hitta det gränssnitt som motsvarar det som refereras i routningstabellen och notera MAC-adressen (fysisk).
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) ...
Bekräfta att gränssnittet motsvarar den virtuella datorns primära nätverkskort och primära IP-adress. Du hittar det primära nätverkskortet och IP-adressen genom att titta på nätverkskonfigurationen i Azure Portal eller genom att leta upp det med Azure CLI. Observera de privata IP-adresserna (och MAC-adressen om du använder CLI). Här är ett PowerShell CLI-exempel:
$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
Om de inte matchar uppdaterar du routningstabellen så att det primära nätverkskortet och IP-adressen är riktade.
Redundansklustring i Windows Server
När du kör frågor mot IMDS med redundanskluster är det ibland nödvändigt att lägga till en väg i routningstabellen. Så här gör du:
Öppna en kommandotolk med administratörsbehörighet.
Kör följande kommando och notera adressen till Gränssnittet för nätverksmål (
0.0.0.0
) i IPv4-routningstabellen.
route print
Kommentar
Följande exempelutdata kommer från en virtuell Windows Server-dator med redundanskluster aktiverat. För enkelhetens skull innehåller utdata endast IPv4-routningstabellen.
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
Kör följande kommando och använd adressen till Gränssnittet för nätverksmål (
0.0.0.0
), som är (10.0.1.10
) i det här exemplet.route add 169.254.169.254/32 10.0.1.10 metric 1 -p
Support
Om du inte kan få ett metadatasvar efter flera försök kan du skapa ett supportproblem i Azure Portal.
Produktfeedback
Du kan ge produktfeedback och idéer till vår kanal för användarfeedback under Virtual Machines > Instance Metadata Service här