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.

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 stringen 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-07-01 wordt nog steeds geïmplementeerd. Het is mogelijk niet beschikbaar in sommige regio's.

  • 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 Optionele* 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
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 platformFaultDomainplatformUpdateDomain 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",
    "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": ""
}

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

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 vmIdhet document , sku, nonce, subscriptionIdtimeStamp 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:

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

Fouten en foutopsporing

Als er geen gegevenselement is gevonden of als er een onjuiste aanvraag is, retourneert de instantiemetagegevensservice standaard HTTP-fouten. Voorbeeld:

HTTP-statuscode Reden
200 OK De aanvraag is geslaagd.
400 Bad Request Ontbrekende Metadata: true header- of ontbrekende parameter format=json bij het uitvoeren van query's op een leaf-knooppunt
404 Not Found Het aangevraagde element bestaat niet
405 Method Not Allowed De HTTP-methode (werkwoord) wordt niet ondersteund op het eindpunt.
410 Gone Probeer het na enige tijd opnieuw voor een maximum van 70 seconden
429 Too Many Requests API-frequentielimieten zijn overschreden
500 Service Error Probeer het na enige tijd opnieuw

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.
  • 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 of 410 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 .
  • 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.

      1. 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) ...
        
      2. Controleer of er een route bestaat voor 169.254.169.254en noteer de bijbehorende netwerkinterface (bijvoorbeeld 172.16.69.7).

      3. 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) ...
        
      4. 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
        
      5. 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:

      1. Open een opdrachtprompt met beheerdersbevoegdheden.

      2. 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 >

Volgende stappen