Azire Instance Metadata Service
Van toepassing op: ✔️ Virtuele Linux-machines voor Windows-VM's ✔️ ✔️ Flexibele schaalsets
De Azure Instance Metadata Service (IMDS) biedt info over momenteel actieve exemplaren van virtuele machines. U kunt dit gebruiken om uw virtuele machines te beheren en te configureren. Deze info omvat de SKU, opslag, netwerkconfiguraties en toekomstige onderhoudsevenementen. Bekijk de samenvatting eindpuntcategorieën voor een volledige lijst met beschikbare gegevens.
IMDS is beschikbaar voor het uitvoeren van exemplaren van virtuele machines (VM's) en schaalsetexemplaren. Alle eindpunten ondersteunen VM's die zijn gemaakt en beheerd met behulp van Azure Resource Manager. Alleen het geteste categorie- en netwerkgedeelte van de categorie Exemplaar ondersteunen VM's die zijn gemaakt met behulp van het klassieke implementatiemodel. Het geteste eindpunt doet dit slechts in beperkte mate.
IMDS is een REST API die beschikbaar is op een bekend, niet-routeerbaar IP-adres (169.254.169.254
). U kunt dit alleen openen vanuit de virtuele machine. Communicatie tussen VM en IMDS verlaat de host nooit.
Laat uw HTTP-clients webproxy's binnen de VIRTUELE machine omzeilen bij het uitvoeren van query's op IMDS en hetzelfde behandelen 169.254.169.254
als 168.63.129.16
.
Gebruik
Toegang tot Azure Instance Metadata Service
Als u toegang wilt krijgen tot IMDS, maakt u een VIRTUELE machine vanuit Azure Resource Manager of Azure Portal en gebruikt u de volgende voorbeelden. Zie Voorbeelden van metagegevens van Azure Instance voor meer voorbeelden.
Hier volgt voorbeeldcode voor het ophalen van alle metagegevens voor een exemplaar. Zie Eindpuntcategorieën voor een overzicht van alle beschikbare functies voor toegang tot een specifieke gegevensbron.
Aanvragen
Belangrijk
In dit voorbeeld worden proxy's overgeslagen. U moet proxy's overslaan bij het uitvoeren van een query op IMDS. Zie Proxy's voor meer informatie.
Notitie
IMDS-aanvragen moeten worden verzonden met behulp van de primaire NIC en het primaire IP-adres van de VM, en DHCP moet zijn ingeschakeld.
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
Hiervoor is PowerShell V6 of hoger vereist. Bekijk onze opslagplaats met voorbeelden met oudere PowerShell-versies.
Respons
Notitie
Het antwoord is een JSON-tekenreeks. Het volgende voorbeeldantwoord is mooi afgedrukt voor leesbaarheid.
{
"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"
}]
}
}
Verificatie en beveiliging
De Instance Metadata Service is alleen toegankelijk vanuit een actief exemplaar van een virtuele machine op een niet-routeerbaar IP-adres. VM's kunnen alleen communiceren met hun eigen metagegevens/functionaliteit. De API is alleen HTTP en verlaat de host nooit.
Om ervoor te zorgen dat aanvragen rechtstreeks zijn bedoeld voor IMDS en onbedoelde of ongewenste omleiding van aanvragen voorkomen, aanvragen:
- Moet de koptekst bevatten
Metadata: true
- Mag geen koptekst bevatten
X-Forwarded-For
Elke aanvraag die niet aan beide vereisten voldoet, wordt geweigerd door de service.
Belangrijk
IMDS is geen kanaal voor gevoelige gegevens. De API is niet-geverifieerd en is geopend voor alle processen op de VIRTUELE machine. Informatie die via deze service wordt weergegeven, moet worden beschouwd als gedeelde informatie voor alle toepassingen die op de VM worden uitgevoerd.
Als het niet nodig is voor elk proces op de vm voor toegang tot het IMDS-eindpunt, kunt u lokale firewallregels instellen om de toegang te beperken. Als bijvoorbeeld alleen een bekende systeemservice toegang nodig heeft tot de metagegevensservice van het exemplaar, kunt u een firewallregel instellen op het IMDS-eindpunt, zodat alleen de specifieke processen toegang hebben tot of de toegang voor de rest van de processen wordt geweigerd.
Proxy's
IMDS is niet bedoeld om achter een proxy te worden gebruikt en dit wordt niet ondersteund. De meeste HTTP-clients bieden een optie voor het uitschakelen van proxy's voor uw aanvragen. Deze functionaliteit moet worden gebruikt bij het communiceren met IMDS. Raadpleeg de documentatie van uw klant voor meer informatie.
Belangrijk
Zelfs als u geen proxyconfiguratie in uw omgeving kent, moet u de standaardproxy-instellingen van de client negeren. Proxyconfiguraties kunnen automatisch worden gedetecteerd en dergelijke configuraties kunnen niet worden overgeslagen, zodat u risico's voor storingen krijgt als de configuratie van de machine in de toekomst wordt gewijzigd.
Snelheidsbeperking
Over het algemeen zijn aanvragen voor IMDS beperkt tot 5 aanvragen per seconde (per VM). Aanvragen die deze drempelwaarde overschrijden, worden geweigerd met 429 antwoorden. Aanvragen voor de categorie Beheerde identiteit zijn beperkt tot 20 aanvragen per seconde en 5 gelijktijdige aanvragen (per VM).
HTTP-woorden
De volgende HTTP-woorden worden momenteel ondersteund:
Term | Beschrijving |
---|---|
GET |
De aangevraagde resource ophalen |
Parameters
Eindpunten ondersteunen mogelijk vereiste en/of optionele parameters. Zie Schema en de documentatie voor het betreffende eindpunt voor meer informatie.
Queryparameters
IMDS-eindpunten ondersteunen http-queryreeksparameters. Voorbeeld:
http://169.254.169.254/metadata/instance/compute?api-version=2021-01-01&format=json
Hiermee geeft u de parameters:
Naam | Weergegeven als |
---|---|
api-version |
2021-01-01 |
format |
json |
Aanvragen met dubbele namen van queryparameters worden geweigerd.
Routeparameters
Voor sommige eindpunten die grotere json-blobs retourneren, ondersteunen we het toevoegen van routeparameters aan het aanvraageindpunt om te filteren op een subset van het antwoord:
http://169.254.169.254/metadata/<endpoint>/[<filter parameter>/...]?<query parameters>
De parameters komen overeen met de indexen/sleutels die zouden worden gebruikt om het json-object te doorlopen wanneer u interactie hebt met een geparseerde weergave.
Retourneert bijvoorbeeld /metadata/instance
het json-object:
{
"compute": { ... },
"network": {
"interface": [
{
"ipv4": {
"ipAddress": [{
"privateIpAddress": "10.144.133.132",
"publicIpAddress": ""
}],
"subnet": [{
"address": "10.144.133.128",
"prefix": "26"
}]
},
"ipv6": {
"ipAddress": [
]
},
"macAddress": "0011AAFFBB22"
},
...
]
}
}
Als we het antwoord willen filteren op alleen de rekeneigenschap, verzenden we de aanvraag:
http://169.254.169.254/metadata/instance/compute?api-version=<version>
Als we op dezelfde manier willen filteren op een geneste eigenschap of specifiek matrixelement, blijven we sleutels toevoegen:
http://169.254.169.254/metadata/instance/network/interface/0?api-version=<version>
filtert op het eerste element uit de Network.interface
eigenschap en retourneert:
{
"ipv4": {
"ipAddress": [{
"privateIpAddress": "10.144.133.132",
"publicIpAddress": ""
}],
"subnet": [{
"address": "10.144.133.128",
"prefix": "26"
}]
},
"ipv6": {
"ipAddress": [
]
},
"macAddress": "0011AAFFBB22"
}
Notitie
Wanneer u filtert naar een leaf-knooppunt, format=json
werkt dit niet. Voor deze query's format=text
moet expliciet worden opgegeven omdat de standaardindeling json is.
Schema
Gegevensopmaak
STANDAARD retourneert IMDS gegevens in JSON-indeling (Content-Type: application/json
). Eindpunten die ondersteuning bieden voor antwoordfiltering (zie Routeparameters) ondersteunen echter ook de indeling text
.
Als u toegang wilt krijgen tot een niet-standaardantwoordindeling, geeft u de aangevraagde indeling op als een querytekenreeksparameter in de aanvraag. Voorbeeld:
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance?api-version=2017-08-01&format=text"
In json-antwoorden zijn alle primitieven van het type string
en ontbrekende of niet-toe te passen waarden worden altijd opgenomen, maar worden ingesteld op een lege tekenreeks.
Versiebeheer
IMDS is versiebeheer en het opgeven van de API-versie in de HTTP-aanvraag is verplicht. De enige uitzondering op deze vereiste is het versie-eindpunt , dat kan worden gebruikt om de beschikbare API-versies dynamisch op te halen.
Als er nieuwere versies worden toegevoegd, kunnen oudere versies nog steeds worden geopend voor compatibiliteit als uw scripts afhankelijk zijn van specifieke gegevensindelingen.
Wanneer u geen versie opgeeft, krijgt u een foutmelding met een lijst met de nieuwste ondersteunde versies:
{
"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"
]
}
Ondersteunde API-versies
Notitie
Versie 2023-11-15 wordt nog steeds geïmplementeerd. Het is mogelijk niet beschikbaar in sommige regio's.
- 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
- 01-10-2020
- 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
Er is een volledige Swagger-definitie voor IMDS beschikbaar op: https://github.com/Azure/azure-rest-api-specs/blob/main/specification/imds/data-plane/readme.md
Regionale beschikbaarheid
De service is algemeen beschikbaar in alle Azure-clouds.
Hoofdeindpunt
Het hoofdeindpunt is http://169.254.169.254/metadata
.
Eindpuntcategorieën
De IMDS-API bevat meerdere eindpuntcategorieën die verschillende gegevensbronnen vertegenwoordigen, die elk een of meer eindpunten bevatten. Zie elke categorie voor meer informatie.
Hoofdmap van categorie | Beschrijving | Versie geïntroduceerd |
---|---|---|
/metadata/attested |
Geteste gegevens bekijken | 2018-10-01 |
/metadata/identity |
Beheerde identiteit bekijken via IMDS | 2018-02-01 |
/metadata/instance |
Exemplaarmetagegevens bekijken | 2017-04-02 |
/metadata/loadbalancer |
Zie Load Balancer-metagegevens ophalen via IMDS | 01-10-2020 |
/metadata/scheduledevents |
Geplande gebeurtenissen bekijken via IMDS | 2017-08-01 |
/metadata/versions |
Versies bekijken | N.v.t. |
Versies
API-versies weergeven
Retourneert de set ondersteunde API-versies.
GET /metadata/versions
Parameters
Geen (dit eindpunt is niet-geversied).
Respons
{
"apiVersions": [
"2017-03-01",
"2017-04-02",
...
]
}
Exemplaarmetagegevens
VM-metagegevens ophalen
Toont de belangrijke metagegevens voor het VM-exemplaar, waaronder berekening, netwerk en opslag.
GET /metadata/instance
Parameters
Naam | Vereist/Optioneel | Description |
---|---|---|
api-version |
Vereist | De versie die wordt gebruikt om de aanvraag te verwerken. |
format |
Facultatief* | De notatie (json of text ) van het antwoord. *Opmerking: mogelijk vereist bij het gebruik van aanvraagparameters |
Dit eindpunt ondersteunt het filteren van antwoorden via routeparameters.
Respons
{
"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"
}]
}
}
Schema-uitsplitsing:
Compute
'Gegevens | Beschrijving | Versie geïntroduceerd |
---|---|---|
azEnvironment |
Azure-omgeving waarin de VM wordt uitgevoerd | 2018-10-01 |
additionalCapabilities.hibernationEnabled |
Hiermee wordt aangegeven of de sluimerstand is ingeschakeld op de VM | 2021-11-01 |
customData |
Deze functie is afgeschaft en uitgeschakeld in IMDS. Het is vervangen door userData |
2019-02-01 |
evictionPolicy |
Hiermee stelt u in hoe een spot-VM wordt verwijderd. | 2020-12-01 |
extendedLocation.type |
Type van de uitgebreide locatie van de virtuele machine. | 2021-03-01 |
extendedLocation.name |
Naam van de uitgebreide locatie van de VIRTUELE machine | 2021-03-01 |
host.id |
Naam van de host van de virtuele machine. Houd er rekening mee dat een VIRTUELE machine een host of een hostGroup heeft, maar niet beide. | 2021-11-15 |
hostGroup.id |
Naam van de hostGroup van de VIRTUELE machine. Houd er rekening mee dat een VIRTUELE machine een host of een hostGroup heeft, maar niet beide. | 2021-11-15 |
isHostCompatibilityLayerVm |
Identificeert of de VM wordt uitgevoerd op de hostcompatibiliteitslaag | 2020-06-01 |
licenseType |
Type licentie voor Azure Hybrid Benefit. Dit is alleen aanwezig voor VM's met AHB-functionaliteit | 2020-09-01 |
location |
Azure-regio waarin de VM wordt uitgevoerd | 2017-04-02 |
name |
Naam van de VIRTUELE machine | 2017-04-02 |
offer |
Aanbiedingsinformatie voor de VM-installatiekopie en is alleen aanwezig voor installatiekopieën die zijn geïmplementeerd vanuit de Azure-installatiekopiegalerie | 2017-04-02 |
osProfile.adminUsername |
Hiermee geeft u de naam van het beheerdersaccount | 2020-07-15 |
osProfile.computerName |
Hiermee geeft u de naam van de computer | 2020-07-15 |
osProfile.disablePasswordAuthentication |
Hiermee geeft u op of wachtwoordverificatie is uitgeschakeld. Dit is alleen aanwezig voor Virtuele Linux-machines | 01-10-2020 |
osType |
Linux of Windows | 2017-04-02 |
physicalZone |
Fysieke zone van de VIRTUELE machine | 2023-11-15 |
placementGroupId |
Plaatsingsgroep van uw schaalset | 2017-08-01 |
plan |
Plan met de naam, het product en de uitgever van een VIRTUELE machine als het een Azure Marketplace-installatiekopie is | 2018-04-02 |
platformUpdateDomain |
Domein bijwerken waarin de VM wordt uitgevoerd | 2017-04-02 |
platformFaultDomain |
Foutdomein waarin de VM wordt uitgevoerd | 2017-04-02 |
platformSubFaultDomain |
Subfoutdomein waarin de VIRTUELE machine wordt uitgevoerd, indien van toepassing. | 2021-10-01 |
priority |
Prioriteit van de VIRTUELE machine. Raadpleeg spot-VM's voor meer informatie | 2020-12-01 |
provider |
Provider van de VM | 2018-10-01 |
publicKeys |
Verzameling openbare sleutels die zijn toegewezen aan de VIRTUELE machine en paden | 2018-04-02 |
publisher |
Uitgever van de VM-installatiekopieën | 2017-04-02 |
resourceGroupName |
Resourcegroep voor uw virtuele machine | 2017-08-01 |
resourceId |
De volledig gekwalificeerde id van de resource | 2019-03-11 |
sku |
Specifieke SKU voor de VM-installatiekopieën | 2017-04-02 |
securityProfile.secureBootEnabled |
Hiermee wordt aangegeven of beveiligd opstarten van UEFI is ingeschakeld op de VIRTUELE machine | 2020-06-01 |
securityProfile.virtualTpmEnabled |
Hiermee wordt aangegeven of de virtuele Trusted Platform Module (TPM) is ingeschakeld op de VIRTUELE machine | 2020-06-01 |
securityProfile.encryptionAtHost |
Identificeert of versleuteling op host is ingeschakeld op de VM | 2021-11-01 |
securityProfile.securityType |
Hiermee wordt aangegeven of de VIRTUELE machine een vertrouwde VM of een vertrouwelijke VM is | 2021-12-13 |
storageProfile |
Zie hieronder het opslagprofiel | 01-06-2019 |
subscriptionId |
Azure-abonnement voor de virtuele machine | 2017-08-01 |
tags |
Tags voor uw virtuele machine | 2017-08-01 |
tagsList |
Tags die zijn opgemaakt als een JSON-matrix voor eenvoudigere programmatische parsering | 2019-06-04 |
userData |
De set gegevens die zijn opgegeven toen de VIRTUELE machine werd gemaakt voor gebruik tijdens of na het inrichten (Base64 gecodeerd) | 2021-01-01 |
version |
Versie van de VM-installatiekopieën | 2017-04-02 |
virtualMachineScaleSet.id |
De id van de virtuele-machineschaalset die is gemaakt met flexibele indeling waarvan de virtuele machine deel uitmaakt. Dit veld is niet beschikbaar voor virtuele-machineschaalsets die zijn gemaakt met uniforme indeling. | 2021-03-01 |
vmId |
Unieke id voor de virtuele machine. In de blog wordt alleen verwezen naar VM's met SMBIOS < 2.6. Voor VM's met SMBIOS >= 2.6 wordt de UUID van DMI weergegeven in little-endian-indeling, dus is er geen vereiste om van bytes te wisselen. | 2017-04-02 |
vmScaleSetName |
Naam van virtuele-machineschaalset van uw schaalset | 2017-12-01 |
vmSize |
VM-grootte | 2017-04-02 |
zone |
Beschikbaarheidszone van uw virtuele machine | 2017-12-01 |
† Deze versie is nog niet volledig beschikbaar en wordt mogelijk niet ondersteund in alle regio's.
Opslagprofiel
Het opslagprofiel van een virtuele machine is onderverdeeld in drie categorieën: installatiekopieënverwijzing, besturingssysteemschijf en gegevensschijven, plus een extra object voor de lokale tijdelijke schijf.
Het referentieobject voor afbeeldingen bevat de volgende informatie over de installatiekopieën van het besturingssysteem. Houd er rekening mee dat een installatiekopieën afkomstig kunnen zijn van het platform, de marketplace, de communitygalerie of de directe gedeelde galerie, maar niet beide:
'Gegevens | Beschrijving | Versie geïntroduceerd |
---|---|---|
id |
Resource-id | 01-06-2019 |
offer |
Aanbieding van het platform of de marketplace-installatiekopieën | 01-06-2019 |
publisher |
Uitgever van de platform- of marketplace-installatiekopieën | 01-06-2019 |
sku |
SKU van het platform of de marketplace-installatiekopieën | 01-06-2019 |
version |
Versie van de installatiekopieën | 01-06-2019 |
communityGalleryImageId |
Resource-id van de community-installatiekopieën, leeg anders | 2023-07-01 |
sharedGalleryImageId |
Resource-id o directe gedeelde installatiekopieën, leeg, anders | 2023-07-01 |
exactVersion |
Versie van de community of directe gedeelde installatiekopieën | 2023-07-01 |
Het besturingssysteemschijfobject bevat de volgende informatie over de besturingssysteemschijf die door de VIRTUELE machine wordt gebruikt:
'Gegevens | Beschrijving |
---|---|
caching |
Cachevereisten |
createOption |
Informatie over hoe de virtuele machine is gemaakt |
diffDiskSettings |
Tijdelijke schijfinstellingen |
diskSizeGB |
Grootte van schijf in GB |
image |
Virtuele harde schijf van brongebruiker |
managedDisk |
Parameters voor beheerde schijven |
name |
Naam van schijf |
vhd |
Virtuele harde schijf |
writeAcceleratorEnabled |
Of writeAccelerator al dan niet is ingeschakeld op de schijf |
De matrix met gegevensschijven bevat een lijst met gegevensschijven die zijn gekoppeld aan de virtuele machine. Elk gegevensschijfobject bevat de volgende informatie:
'Gegevens | Beschrijving | Versie geïntroduceerd |
---|---|---|
bytesPerSecondThrottle * |
Quotum voor lezen/schrijven van schijf in bytes | 2021-05-01 |
caching |
Cachevereisten | 01-06-2019 |
createOption |
Informatie over hoe de virtuele machine is gemaakt | 01-06-2019 |
diffDiskSettings |
Tijdelijke schijfinstellingen | 01-06-2019 |
diskCapacityBytes * |
Grootte van schijf in bytes | 2021-05-01 |
diskSizeGB |
Grootte van schijf in GB | 01-06-2019 |
encryptionSettings |
Versleutelingsinstellingen voor de schijf | 01-06-2019 |
image |
Virtuele harde schijf van brongebruiker | 01-06-2019 |
isSharedDisk * |
Hiermee wordt aangegeven of de schijf wordt gedeeld tussen resources | 2021-05-01 |
isUltraDisk |
Identificeert of de gegevensschijf een Ultra Disk is | 2021-05-01 |
lun |
Het nummer van de logische eenheid van de schijf | 01-06-2019 |
managedDisk |
Parameters voor beheerde schijven | 01-06-2019 |
name |
Naam van schijf | 01-06-2019 |
opsPerSecondThrottle * |
Quotum voor lezen/schrijven van schijf in IOPS | 2021-05-01 |
osType |
Type besturingssysteem dat is opgenomen in de schijf | 01-06-2019 |
vhd |
Virtuele harde schijf | 01-06-2019 |
writeAcceleratorEnabled |
Of writeAccelerator al dan niet is ingeschakeld op de schijf | 01-06-2019 |
*Deze velden worden alleen ingevuld voor Ultra Disks; ze zijn lege tekenreeksen van niet-Ultra Disks.
De blob voor versleutelingsinstellingen bevat gegevens over hoe de schijf wordt versleuteld (als deze is versleuteld):
'Gegevens | Beschrijving | Versie geïntroduceerd |
---|---|---|
diskEncryptionKey.sourceVault.id |
De locatie van de schijfversleutelingssleutel | 2021-11-01 |
diskEncryptionKey.secretUrl |
De locatie van het geheim | 2021-11-01 |
keyEncryptionKey.sourceVault.id |
De locatie van de sleutelversleutelingssleutel | 2021-11-01 |
keyEncryptionKey.keyUrl |
De locatie van de sleutel | 2021-11-01 |
Het resourceschijfobject bevat de grootte van de lokale tijdelijke schijf die is gekoppeld aan de virtuele machine, als het er een heeft, in kilobytes. Als er geen lokale tijdelijke schijf voor de virtuele machine is, is deze waarde 0.
'Gegevens | Beschrijving | Versie geïntroduceerd |
---|---|---|
resourceDisk.size |
Grootte van de lokale tijdelijke schijf voor de virtuele machine (in kB) | 2021-02-01 |
Netwerk
'Gegevens | Beschrijving | Versie geïntroduceerd |
---|---|---|
ipv4.privateIpAddress |
Lokaal IPv4-adres van de VIRTUELE machine | 2017-04-02 |
ipv4.publicIpAddress |
Openbaar IPv4-adres van de VIRTUELE machine | 2017-04-02 |
subnet.address |
Subnetadres van de VIRTUELE machine | 2017-04-02 |
subnet.prefix |
Subnetvoorvoegsel, voorbeeld 24 | 2017-04-02 |
ipv6.ipAddress |
Lokaal IPv6-adres van de VM | 2017-04-02 |
macAddress |
Mac-adres van VM | 2017-04-02 |
Notitie
De nic's die door de netwerkaanroep worden geretourneerd, zijn niet gegarandeerd in volgorde.
Gebruikersgegevens ophalen
Wanneer u een nieuwe VIRTUELE machine maakt, kunt u een set gegevens opgeven die moet worden gebruikt tijdens of na de VM-inrichting en deze ophalen via IMDS. Controleer hier de ervaring met end-to-user-gegevens.
Als u gebruikersgegevens wilt instellen, gebruikt u de quickstart-sjabloon hier. In het onderstaande voorbeeld ziet u hoe u deze gegevens ophaalt via IMDS. Deze functie wordt uitgebracht met versie 2021-01-01
en hoger.
Notitie
Beveiligingsmelding: IMDS is open voor alle toepassingen op de VIRTUELE machine, gevoelige gegevens mogen niet in de gebruikersgegevens worden geplaatst.
$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))
Voorbeeld 1: VM bijhouden die wordt uitgevoerd in Azure
Als serviceprovider moet u mogelijk het aantal VM's bijhouden waarop uw software wordt uitgevoerd of agents hebben die de uniekheid van de VIRTUELE machine moeten bijhouden. Als u een unieke id voor een VIRTUELE machine wilt ophalen, gebruikt u het vmId
veld van Instance Metadata Service.
Aanvragen
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"
Respons
5c08b38e-4d57-4c23-ac45-aca61037f084
Voorbeeld 2: Plaatsing van verschillende gegevensreplica's
Voor bepaalde scenario's is het plaatsen van verschillende gegevensreplica's van cruciaal belang. Voor de plaatsing van HDFS-replica's of containerplaatsing via een orchestrator moet u bijvoorbeeld weten waar en platformFaultDomain
platformUpdateDomain
waarop de VIRTUELE machine wordt uitgevoerd.
U kunt ook Beschikbaarheidszones voor de instanties gebruiken om deze beslissingen te nemen.
U kunt deze gegevens rechtstreeks opvragen via IMDS.
Aanvragen
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"
Respons
0
Voorbeeld 3: VM-tags ophalen
VM-tags worden opgenomen in de exemplaar-API onder het eindpunt instance/compute/tags. Tags zijn mogelijk toegepast op uw Azure-VM om ze logisch te ordenen in een taxonomie. De tags die aan een virtuele machine zijn toegewezen, kunnen worden opgehaald met behulp van de onderstaande aanvraag.
Aanvragen
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"
Respons
Department:IT;ReferenceNumber:123456;TestStatus:Pending
Het tags
veld is een tekenreeks met de tags gescheiden door puntkomma's. Deze uitvoer kan een probleem zijn als puntkomma's worden gebruikt in de tags zelf. Als een parser is geschreven om de tags programmatisch te extraheren, moet u vertrouwen op het tagsList
veld. Het tagsList
veld is een JSON-matrix zonder scheidingstekens en is daarom gemakkelijker te parseren. De tagsList die is toegewezen aan een virtuele machine, kan worden opgehaald met behulp van de onderstaande aanvraag.
Aanvragen
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
Respons
{
"value": [
{
"name": "Department",
"value": "IT"
},
{
"name": "ReferenceNumber",
"value": "123456"
},
{
"name": "TestStatus",
"value": "Pending"
}
],
"Count": 3
}
Voorbeeld 4: Meer informatie over de VM tijdens de ondersteuningsaanvraag
Als serviceprovider krijgt u mogelijk een ondersteuningsgesprek waarin u meer informatie over de virtuele machine wilt weten. De klant vragen de rekenmetagegevens te delen, kan basisinformatie bieden voor de ondersteuningsprofessional om te weten te komen over het soort VIRTUELE machine in Azure.
Aanvragen
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
Respons
Notitie
Het antwoord is een JSON-tekenreeks. Het volgende voorbeeldantwoord is mooi afgedrukt voor leesbaarheid.
{
"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"
}
Voorbeeld 5: De Azure-omgeving ophalen waarop de VM wordt uitgevoerd
Azure heeft verschillende onafhankelijke clouds, zoals Azure Government. Soms hebt u de Azure-omgeving nodig om enkele runtimebeslissingen te nemen. In het volgende voorbeeld ziet u hoe u dit gedrag kunt bereiken.
Aanvragen
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"
Respons
AzurePublicCloud
De cloud en de waarden van de Azure-omgeving worden hier vermeld.
Cloud | Azure-omgeving |
---|---|
Alle algemeen beschikbare globale Azure-regio's | AzurePublicCloud |
Azure Government | AzureUSGovernmentCloud |
Microsoft Azure beheerd door 21Vianet | AzureChinaCloud |
Azure Duitsland | AzureGermanCloud |
Voorbeeld 6: netwerkgegevens ophalen
Aanvragen
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
Respons
{
"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"
}
]
}
Voorbeeld 7: Openbaar IP-adres ophalen
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"
Notitie
- Als u IMDS-informatie wilt ophalen voor het openbare IP-adres van standard-SKU , raadpleegt u de Load Balancer Metadata-API voor meer informatie.
Geteste gegevens
Geteste gegevens ophalen
IMDS helpt om garanties te bieden dat de verstrekte gegevens afkomstig zijn van Azure. Microsoft ondertekent een deel van deze informatie, zodat u kunt bevestigen dat een installatiekopieën in Azure Marketplace het exemplaar is dat u uitvoert in Azure.
GET /metadata/attested/document
Parameters
Naam | Vereist/Optioneel | Description |
---|---|---|
api-version |
Vereist | De versie die wordt gebruikt om de aanvraag te verwerken. |
nonce |
Optioneel | Een tekenreeks van 10 cijfers die fungeert als cryptografische nonce. Als er geen waarde wordt opgegeven, gebruikt IMDS de huidige UTC-tijdstempel. |
Respons
{
"encoding":"pkcs7",
"signature":"MIIEEgYJKoZIhvcNAQcCoIIEAzCCA/8CAQExDzANBgkqhkiG9w0BAQsFADCBugYJKoZIhvcNAQcBoIGsBIGpeyJub25jZSI6IjEyMzQ1NjY3NjYiLCJwbGFuIjp7Im5hbWUiOiIiLCJwcm9kdWN0IjoiIiwicHVibGlzaGVyIjoiIn0sInRpbWVTdGFtcCI6eyJjcmVhdGVkT24iOiIxMS8yMC8xOCAyMjowNzozOSAtMDAwMCIsImV4cGlyZXNPbiI6IjExLzIwLzE4IDIyOjA4OjI0IC0wMDAwIn0sInZtSWQiOiIifaCCAj8wggI7MIIBpKADAgECAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBBAUAMCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tMB4XDTE4MTEyMDIxNTc1N1oXDTE4MTIyMDIxNTc1NlowKzEpMCcGA1UEAxMgdGVzdHN1YmRvbWFpbi5tZXRhZGF0YS5henVyZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAML/tBo86ENWPzmXZ0kPkX5dY5QZ150mA8lommszE71x2sCLonzv4/UWk4H+jMMWRRwIea2CuQ5RhdWAHvKq6if4okKNt66fxm+YTVz9z0CTfCLmLT+nsdfOAsG1xZppEapC0Cd9vD6NCKyE8aYI1pliaeOnFjG0WvMY04uWz2MdAgMBAAGjYDBeMFwGA1UdAQRVMFOAENnYkHLa04Ut4Mpt7TkJFfyhLTArMSkwJwYDVQQDEyB0ZXN0c3ViZG9tYWluLm1ldGFkYXRhLmF6dXJlLmNvbYIQZ8VuSofHbJRAQNBNpiASdDANBgkqhkiG9w0BAQQFAAOBgQCLSM6aX5Bs1KHCJp4VQtxZPzXF71rVKCocHy3N9PTJQ9Fpnd+bYw2vSpQHg/AiG82WuDFpPReJvr7Pa938mZqW9HUOGjQKK2FYDTg6fXD8pkPdyghlX5boGWAMMrf7bFkup+lsT+n2tRw2wbNknO1tQ0wICtqy2VqzWwLi45RBwTGB6DCB5QIBATA/MCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBCwUAMA0GCSqGSIb3DQEBAQUABIGAld1BM/yYIqqv8SDE4kjQo3Ul/IKAVR8ETKcve5BAdGSNkTUooUGVniTXeuvDj5NkmazOaKZp9fEtByqqPOyw/nlXaZgOO44HDGiPUJ90xVYmfeK6p9RpJBu6kiKhnnYTelUk5u75phe5ZbMZfBhuPhXmYAdjc7Nmw97nx8NnprQ="
}
De handtekeningblob is een pkcs7-ondertekende versie van het document. Het bevat het certificaat dat wordt gebruikt voor ondertekening, samen met bepaalde VM-specifieke details.
Voor VM's die zijn gemaakt met Behulp van Azure Resource Manager, bevat vmId
het document , sku
, nonce
, subscriptionId
timeStamp
voor het maken en verlopen van het document en de plangegevens over de installatiekopie. De plangegevens worden alleen ingevuld voor Azure Marketplace-installatiekopieën.
Voor VM's die zijn gemaakt met het klassieke implementatiemodel, worden alleen de vmId
vm's ingevuld die subscriptionId
gegarandeerd worden ingevuld. U kunt het certificaat uit het antwoord extraheren en gebruiken om te bevestigen dat het antwoord geldig is en afkomstig is van Azure.
Het gedecodeerde document bevat de volgende velden:
'Gegevens | Beschrijving | Versie geïntroduceerd |
---|---|---|
licenseType |
Type licentie voor Azure Hybrid Benefit. Dit is alleen aanwezig voor VM's met AHB-functionaliteit. | 2020-09-01 |
nonce |
Een tekenreeks die optioneel bij de aanvraag kan worden geleverd. Als er geen is nonce opgegeven, wordt de huidige tijdstempel van Coordinated Universal Time gebruikt. |
2018-10-01 |
plan |
Het Azure Marketplace-installatiekopieënplan. Bevat de abonnements-id (naam), productafbeelding of aanbieding (product) en uitgever-id (uitgever). | 2018-10-01 |
timestamp.createdOn |
De UTC-tijdstempel voor het moment waarop het ondertekende document is gemaakt | 2018-20-01 |
timestamp.expiresOn |
De UTC-tijdstempel voor wanneer het ondertekende document verloopt | 2018-10-01 |
vmId |
Unieke id voor de VIRTUELE machine | 2018-10-01 |
subscriptionId |
Azure-abonnement voor de virtuele machine | 2019-04-30 |
sku |
Specifieke SKU voor de VM-installatiekopieën (correleert met compute/sku de eigenschap van het eindpunt van de instantiemetagegevens [/metadata/instance ]) |
2019-11-01 |
Notitie
Voor klassieke (niet-Azure Resource Manager)-VM's wordt gegarandeerd alleen de vmId ingevuld.
Voorbeelddocument:
{
"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"
}
Richtlijnen voor handtekeningvalidatie
Wanneer u de handtekening valideert, moet u bevestigen dat de handtekening is gemaakt met een certificaat van Azure. Dit wordt gedaan door de alternatieve naam (SAN) van het certificaat te valideren.
Voorbeeld-SAN DNS Name=eastus.metadata.azure.com, DNS Name=metadata.azure.com
Notitie
Het domein voor de openbare cloud en elke onafhankelijke cloud is anders.
Cloud | Domein in SAN |
---|---|
Alle algemeen beschikbare globale Azure-regio's | *.metadata.azure.com |
Azure Government | *.metadata.azure.us |
Azure beheerd door 21Vianet | *.metadata.azure.cn |
Azure Duitsland | *.metadata.microsoftazure.de |
Notitie
De certificaten hebben mogelijk geen exacte overeenkomst voor het domein. Daarom moet de certificeringsvalidatie elk subdomein accepteren (bijvoorbeeld in regio's voor algemene beschikbaarheid van openbare clouds).*.metadata.azure.com
Het wordt afgeraden om certificaten vast te maken voor tussenliggende certificaten. Zie Certificaatpinning - Certificaatpinning en Azure-services voor meer informatie. Houd er rekening mee dat de Azure Instance Metadata Service geen meldingen biedt voor toekomstige wijzigingen in de certificeringsinstantie. In plaats daarvan moet u het gecentraliseerde artikel over Azure Certificate Authority-details volgen voor alle toekomstige updates.
Voorbeeld 1: Controleren of de VM wordt uitgevoerd in Azure
Leveranciers in Azure Marketplace willen ervoor zorgen dat hun software alleen in Azure mag worden uitgevoerd. Als iemand de VHD naar een on-premises omgeving kopieert, moet de leverancier dat kunnen detecteren. Via IMDS kunnen deze leveranciers ondertekende gegevens ophalen die alleen reacties van Azure garanderen.
Notitie
Voor dit voorbeeld moet het jq-hulpprogramma zijn geïnstalleerd.
Validatie
# 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)
Controleer of de handtekening afkomstig is van Microsoft Azure en controleert de certificaatketen op fouten.
# 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
Het nonce
ondertekende document kan worden vergeleken als u een nonce
parameter hebt opgegeven in de eerste aanvraag.
Beheerde identiteit
Een beheerde identiteit, toegewezen door het systeem, kan worden ingeschakeld op de virtuele machine. U kunt ook een of meer door de gebruiker toegewezen beheerde identiteiten toewijzen aan de virtuele machine. Vervolgens kunt u tokens aanvragen voor beheerde identiteiten van IMDS. Gebruik deze tokens om te verifiëren met andere Azure-services, zoals Azure Key Vault.
Zie Een toegangstoken verkrijgen voor gedetailleerde stappen om deze functie in te schakelen.
Load Balancer-metagegevens
Wanneer u exemplaren van virtuele machines of virtuele machines achter een Azure Standard Load Balancer plaatst, kunt u IMDS gebruiken om metagegevens op te halen die betrekking hebben op de load balancer en de exemplaren. Zie Load Balancer-informatie ophalen voor meer informatie.
Geplande gebeurtenissen
U kunt de status van de geplande gebeurtenissen verkrijgen met behulp van IMDS. Vervolgens kan de gebruiker een set acties opgeven die op deze gebeurtenissen moeten worden uitgevoerd. Zie Geplande gebeurtenissen voor Linux of Geplande gebeurtenissen voor Windows voor meer informatie.
Voorbeeldcode in verschillende talen
De volgende tabel bevat voorbeelden van het aanroepen van IMDS met behulp van verschillende talen in de VIRTUELE machine:
Fouten en foutopsporing
Als er geen gegevenselement is gevonden of als er een onjuiste aanvraag is, retourneert de instantiemetagegevensservice standaard HTTP-fouten. Voorbeeld:
Veelgestelde vragen
Ik krijg de fout
400 Bad Request, Required metadata header not specified
. Wat betekent dit?- VOOR IMDS moet de header
Metadata: true
worden doorgegeven in de aanvraag. Door deze header in de REST-aanroep door te geven, heeft u toegang tot IMDS.
- VOOR IMDS moet de header
Waarom krijg ik geen rekengegevens voor mijn VM?
- Op dit moment ondersteunt IMDS alleen exemplaren die zijn gemaakt met Azure Resource Manager.
Ik heb mijn VM een tijd geleden gemaakt via Azure Resource Manager. Waarom zie ik geen informatie over de rekenmetagegevens?
- Als u uw VIRTUELE machine na september 2016 hebt gemaakt, voegt u een tag toe om te beginnen met het bekijken van de rekenmetagegevens. Als u vóór september 2016 uw virtuele machine hebt gemaakt, voegt u extensies of gegevensschijven toe aan het VM-exemplaar of verwijdert u deze om metagegevens te vernieuwen.
Zijn gebruikersgegevens hetzelfde als aangepaste gegevens?
- Gebruikersgegevens bieden dezelfde functionaliteit als aangepaste gegevens, zodat u uw eigen metagegevens kunt doorgeven aan het VM-exemplaar. Het verschil is dat gebruikersgegevens worden opgehaald via IMDS en gedurende de levensduur van het VM-exemplaar permanent zijn. De bestaande functie voor aangepaste gegevens blijft werken zoals beschreven in dit artikel. U kunt echter alleen aangepaste gegevens ophalen via de lokale systeemmap, niet via IMDS.
Waarom zie ik niet alle gegevens die zijn ingevuld voor een nieuwe versie?
- Als u uw VIRTUELE machine na september 2016 hebt gemaakt, voegt u een tag toe om te beginnen met het bekijken van de rekenmetagegevens. Als u vóór september 2016 uw virtuele machine hebt gemaakt, voegt u extensies of gegevensschijven toe aan het VM-exemplaar of verwijdert u deze om metagegevens te vernieuwen.
Waarom krijg ik de foutmelding
500 Internal Server Error
of410 Resource Gone
?- Probeer het opnieuw. Zie Tijdelijke foutafhandeling voor meer informatie. Als het probleem zich blijft voordoen, maakt u een ondersteuningsprobleem in Azure Portal voor de VM.
Werkt dit voor schaalsetexemplaren?
- Ja, IMDS is beschikbaar voor schaalsetexemplaren.
Ik heb mijn tags in mijn schaalsets bijgewerkt, maar deze worden niet weergegeven in de exemplaren (in tegenstelling tot VM's met één exemplaar). Doe ik iets verkeerds?
- Momenteel worden tags voor schaalsets alleen weergegeven op de virtuele machine bij opnieuw opstarten, opnieuw installatiekopie of schijfwijziging naar het exemplaar.
Waarom zie ik de SKU-gegevens voor mijn VM niet in
instance/compute
detail?- Voor aangepaste installatiekopieën die zijn gemaakt op basis van Azure Marketplace, behoudt het Azure-platform de SKU-gegevens voor de aangepaste installatiekopieën en de details voor vm's die zijn gemaakt op basis van de aangepaste installatiekopieën. Dit is standaard en wordt daarom niet weergegeven in de details van de VIRTUELE machine
instance/compute
.
- Voor aangepaste installatiekopieën die zijn gemaakt op basis van Azure Marketplace, behoudt het Azure-platform de SKU-gegevens voor de aangepaste installatiekopieën en de details voor vm's die zijn gemaakt op basis van de aangepaste installatiekopieën. Dit is standaard en wordt daarom niet weergegeven in de details van de VIRTUELE machine
Waarom treedt er een time-out op voor mijn aanvraag (of kan geen verbinding worden gemaakt) voor mijn aanroep naar de service?
Aanroepen van metagegevens moeten worden gedaan vanaf het primaire IP-adres dat is toegewezen aan de primaire netwerkkaart van de virtuele machine. Als u uw routes hebt gewijzigd, moet er bovendien een route zijn voor het adres 169.254.169.254/32 in de lokale routeringstabel van uw VM.
Dump uw lokale routeringstabel en zoek naar de IMDS-vermelding. Voorbeeld:
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) ...
Controleer of er een route bestaat voor
169.254.169.254
en noteer de bijbehorende netwerkinterface (bijvoorbeeld172.16.69.7
).Dump de interfaceconfiguratie en zoek de interface die overeenkomt met de interface waarnaar wordt verwezen in de routeringstabel, waarbij het MAC-adres (fysiek) wordt vermeld.
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) ...
Controleer of de interface overeenkomt met de primaire NIC en het primaire IP-adres van de virtuele machine. U vindt de primaire NIC en HET IP-adres door de netwerkconfiguratie in Azure Portal te bekijken of door deze op te zoeken met de Azure CLI. Noteer de privé-IP-adressen (en het MAC-adres als u de CLI gebruikt). Hier volgt een PowerShell CLI-voorbeeld:
$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
Als deze niet overeenkomen, werkt u de routeringstabel bij zodat de primaire NIC en het IP-adres zijn gericht.
Failoverclustering in Windows Server
Wanneer u een query uitvoert op IMDS met failoverclustering, is het soms nodig om een route toe te voegen aan de routeringstabel. U doet dit als volgt:
Open een opdrachtprompt met beheerdersbevoegdheden.
Voer de volgende opdracht uit en noteer het adres van de interface voor netwerkbestemming (
0.0.0.0
) in de IPv4-routetabel.
route print
Notitie
De volgende voorbeelduitvoer is afkomstig van een Windows Server-VM waarvoor failovercluster is ingeschakeld. Ter vereenvoudiging bevat de uitvoer alleen de IPv4-routetabel.
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
Voer de volgende opdracht uit en gebruik het adres van de interface voor netwerkbestemming (
0.0.0.0
). Dit is (10.0.1.10
) in dit voorbeeld.route add 169.254.169.254/32 10.0.1.10 metric 1 -p
Ondersteuning
Als u na meerdere pogingen geen antwoord op metagegevens kunt krijgen, kunt u een ondersteuningsprobleem maken in Azure Portal.
Feedback over product
U kunt hier productfeedback en ideeën geven aan ons feedbackkanaal voor gebruikers onder Service voor metagegevens van virtual machines >