Sdílet prostřednictvím


Azure Instance Metadata Service

Platí pro: ✔️ Flexibilní škálovací sady virtuálních ✔️ počítačů s Windows virtuálních počítačů s Linuxem ✔️

Služba IMDS (Azure Instance Metadata Service) poskytuje informace o aktuálně spuštěných instancích virtuálních počítačů. Můžete ji použít ke správě a konfiguraci virtuálních počítačů. Tyto informace zahrnují skladovou položku, paměť, konfiguraci sítě a nadcházející události údržby. Úplný seznam dostupných dat najdete v souhrnu kategorií koncových bodů.

IMDS je k dispozici pro spouštění instancí virtuálních počítačů a instancí škálovací sady. Všechny koncové body podporují virtuální počítače vytvořené a spravované pomocí Azure Resource Manageru. Virtuální počítače vytvořené pomocí modelu nasazení Classic podporují pouze kategorii Atestované kategorie a část Síť v kategorii Instance. Testovaný koncový bod to dělá pouze v omezeném rozsahu.

IMDS je rozhraní REST API, které je k dispozici na dobře známé nesměrovatelné IP adrese (169.254.169.254). Můžete k ní přistupovat jenom z virtuálního počítače. Komunikace mezi virtuálním počítačem a IMDS nikdy neopustí hostitele. Požádejte klienty HTTP, aby při dotazování IMDS obejily webové proxy servery v rámci virtuálního počítače a zacházejte se 169.254.169.254 stejným způsobem jako 168.63.129.16s .

Využití

Přístup ke službě Azure Instance Metadata Service

Pokud chcete získat přístup k IMDS, vytvořte virtuální počítač z Azure Resource Manageru nebo webu Azure Portal a použijte následující ukázky. Další příklady najdete v ukázkách metadat služby Azure Instance.

Tady je ukázkový kód, který načte všechna metadata instance. Pokud chcete získat přístup ke konkrétnímu zdroji dat, podívejte se na kategorie koncových bodů, kde najdete přehled všech dostupných funkcí.

Požádat

Důležité

Tento příklad obchází proxy servery. Při dotazování IMDS musíte obejít proxy servery. Další informace najdete v tématu Proxy servery .

Poznámka:

Požadavky IMDS se musí odesílat pomocí primární síťové karty a primární IP adresy virtuálního počítače a musí být povolen protokol DHCP.

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 vyžaduje PowerShell V6 nebo vyšší. Příklady se staršími verzemi PowerShellu najdete v našem úložišti ukázek.

Odpověď respondenta

Poznámka:

Odpověď je řetězec JSON. Následující příklad odpovědi je poměrně vytištěna pro čitelnost.

{
    "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"
        }]
    }
}

Zabezpečení a ověřování

Služba metadat instance je přístupná pouze ze spuštěné instance virtuálního počítače na nesměrovatelné IP adrese. Virtuální počítače můžou pracovat jenom s vlastními metadaty a funkcemi. Rozhraní API je pouze HTTP a hostitele nikdy neopustí.

Aby se zajistilo, že požadavky jsou přímo určené pro IMDS a zabrání neúmyslnému nebo nežádoucímu přesměrování požadavků, požadavky:

  • Musí obsahovat záhlaví. Metadata: true
  • Nesmí obsahovat X-Forwarded-For záhlaví.

Každá žádost, která nesplňuje obě tyto požadavky, služba odmítne.

Důležité

IMDS není kanál pro citlivá data. Rozhraní API je neověřené a otevřené pro všechny procesy na virtuálním počítači. Informace zveřejněné prostřednictvím této služby by se měly považovat za sdílené informace pro všechny aplikace spuštěné v rámci virtuálního počítače.

Pokud pro přístup ke koncovému bodu IMDS nepotřebujete všechny procesy na virtuálním počítači, můžete nastavit místní pravidla brány firewall tak, aby omezily přístup. Pokud například ke službě metadat instance potřebuje přístup jenom známá systémová služba, můžete pro koncový bod IMDS nastavit pravidlo brány firewall, povolit přístup pouze konkrétním procesům nebo odepřít přístup pro zbývající procesy.

Proxy

IMDS není určeno k použití za proxy serverem a není to podporováno. Většina klientů HTTP nabízí možnost zakázat proxy servery na vašich požadavcích a tato funkce se musí využít při komunikaci s IMDS. Podrobnosti najdete v dokumentaci klienta.

Důležité

I když ve svém prostředí neznáte žádnou konfiguraci proxy serveru, musíte přepsat všechna výchozí nastavení proxy serveru klienta. Konfigurace proxy serveru je možné automaticky zjistit a v budoucnu by se změna konfigurace počítače nezpřístupnila rizikům výpadku.

Omezování rychlosti

Obecně platí, že požadavky na IMDS jsou omezené na 5 požadavků za sekundu (na základě jednotlivých virtuálních počítačů). Žádosti, které tuto prahovou hodnotu překračují, budou zamítnuty s odpovědí 429. Žádosti do kategorie Spravované identity jsou omezené na 20 požadavků za sekundu a 5 souběžných požadavků (na každý virtuální počítač).

Příkazy HTTP

V současné době se podporují následující příkazy HTTP:

Verb (Příkaz) Popis
GET Načtení požadovaného prostředku

Parametry

Koncové body můžou podporovat požadované nebo volitelné parametry. Podrobnosti najdete v tématu Schéma a dokumentace ke konkrétnímu koncovému bodu.

Parametry dotazů

Koncové body IMDS podporují parametry řetězce dotazu HTTP. Příklad:

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

Určuje parametry:

Jméno Hodnota
api-version 2021-01-01
format json

Žádosti s duplicitními názvy parametrů dotazu budou odmítnuty.

Parametry trasy

U některých koncových bodů, které vracejí větší objekty blob JSON, podporujeme připojení parametrů trasy ke koncovému bodu požadavku, aby se vyfiltrují podmnožina odpovědi:

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

Parametry odpovídají indexům a klíčům, které by se použily k procházení objektu JSON, když pracujete s parsovanou reprezentací.

Například /metadata/instance vrátí objekt JSON:

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

Pokud chceme odpověď filtrovat jenom na výpočetní vlastnost, odeslali bychom požadavek:

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

Podobně pokud chceme filtrovat na vnořenou vlastnost nebo konkrétní prvek pole, udržujeme přidávací klíče:

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

vyfiltroval by první prvek z Network.interface vlastnosti a vrátil:

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

Poznámka:

Při filtrování na uzel typu list format=json nefunguje. Pro tyto dotazy format=text je potřeba explicitně zadat, protože výchozí formát je json.

Schéma

Formát dat

Ve výchozím nastavení vrátí IMDS data ve formátu JSON (Content-Type: application/json). Koncové body, které podporují filtrování odpovědí (viz Parametry trasy), však podporují také formát text.

Pokud chcete získat přístup k nestandardnímu formátu odpovědi, zadejte požadovaný formát jako parametr řetězce dotazu v požadavku. Příklad:

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

V odpovědích JSON budou všechny primitivy typu stringa chybějící nebo neaplikovatelné hodnoty jsou vždy zahrnuty, ale budou nastaveny na prázdný řetězec.

Vytváření verzí

IMDS je verze a zadání verze rozhraní API v požadavku HTTP je povinná. Jedinou výjimkou tohoto požadavku je koncový bod verzí , který lze použít k dynamickému načtení dostupných verzí rozhraní API.

Při přidání novějších verzí je stále možné získat přístup ke starším verzím kvůli kompatibilitě, pokud vaše skripty mají závislosti na konkrétních formátech dat.

Pokud nezadáte verzi, zobrazí se chyba se seznamem nejnovějších podporovaných verzí:

{
    "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"
    ]
}

Podporované verze rozhraní API

Poznámka:

Verze 2023-11-15 se stále zavádí, nemusí být v některých oblastech dostupná.

  • 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
  • 1. 10. 2020
  • 2020-09-01
  • 2020-07-15
  • 2020-06-01
  • 2019-11-01
  • 2019-08-15
  • 2019-08-01
  • 2019-06-04
  • 1. 6. 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

Úplná definice Swaggeru pro IMDS je k dispozici na adrese: https://github.com/Azure/azure-rest-api-specs/blob/main/specification/imds/data-plane/readme.md

Regionální dostupnost

Služba je obecně dostupná ve všech cloudech Azure.

Kořenový koncový bod

Kořenový koncový bod je http://169.254.169.254/metadata.

Kategorie koncových bodů

Rozhraní IMDS API obsahuje více kategorií koncových bodů představujících různé zdroje dat, z nichž každý obsahuje jeden nebo více koncových bodů. Podrobnosti najdete v jednotlivých kategoriích.

Kořen kategorie Popis Zavedená verze
/metadata/attested Zobrazit otestovaná data 2018-10-01
/metadata/identity Zobrazení spravované identity prostřednictvím IMDS 2018-02-01
/metadata/instance Viz metadata instance 2017-04-02
/metadata/loadbalancer Viz Načtení metadat Load Balanceru přes IMDS 1. 10. 2020
/metadata/scheduledevents Zobrazení plánovaných událostí prostřednictvím IMDS 2017-08-01
/metadata/versions Zobrazit verze

Verze

Výpis verzí rozhraní API

Vrátí sadu podporovaných verzí rozhraní API.

GET /metadata/versions

Parametry

Žádné (tento koncový bod není převedený).

Response

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

Metadata instance

Získání metadat virtuálního počítače

Zveřejňuje důležitá metadata pro instanci virtuálního počítače, včetně výpočetních prostředků, sítě a úložiště.

GET /metadata/instance

Parametry

Název Povinné/volitelné Popis
api-version Povinní účastníci Verze použitá ke službě požadavku.
format Volitelný* Formát odpovědi (json nebo text) *Poznámka: Při použití parametrů požadavku se může vyžadovat

Tento koncový bod podporuje filtrování odpovědí prostřednictvím parametrů trasy.

Response

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

Rozpis schématu:

Výpočetní služby

Data Popis Zavedená verze
azEnvironment Prostředí Azure, ve kterém je virtuální počítač spuštěný 2018-10-01
additionalCapabilities.hibernationEnabled Určuje, jestli je na virtuálním počítači povolená možnost hibernace. 2021-11-01
customData Tato funkce je v IMDS zastaralá a zakázaná. Nahradila ho userData 2019-02-01
evictionPolicy Nastaví způsob vyřazení spotového virtuálního počítače. 2020-12-01
extendedLocation.type Typ rozšířeného umístění virtuálního počítače 2021-03-01
extendedLocation.name Název rozšířeného umístění virtuálního počítače 2021-03-01
host.id Název hostitele virtuálního počítače Mějte na paměti, že virtuální počítač bude mít buď hostitele, nebo skupinu hostitelů, ale ne obojí. 2021-11-15
hostGroup.id Název skupiny hostitelů virtuálního počítače. Mějte na paměti, že virtuální počítač bude mít buď hostitele, nebo skupinu hostitelů, ale ne obojí. 2021-11-15
isHostCompatibilityLayerVm Určuje, jestli se virtuální počítač spouští na vrstvě kompatibility hostitele. 2020-06-01
licenseType Typ licence pro Zvýhodněné hybridní využití Azure Tato možnost je k dispozici pouze pro virtuální počítače s podporou AHB. 2020-09-01
location Oblast Azure, ve které je virtuální počítač spuštěný 2017-04-02
name Název virtuálního počítače 2017-04-02
offer Informace o nabídce pro image virtuálního počítače a jsou k dispozici pouze pro image nasazené z galerie imagí Azure. 2017-04-02
osProfile.adminUsername Určuje název účtu správce. 2020-07-15
osProfile.computerName Určuje název počítače. 2020-07-15
osProfile.disablePasswordAuthentication Určuje, jestli je zakázané ověřování heslem. Toto je k dispozici pouze pro virtuální počítače s Linuxem. 1. 10. 2020
osType Linux nebo Windows 2017-04-02
physicalZone Fyzická zóna virtuálního počítače 2023-11-15
placementGroupId Skupina umístění škálovací sady 2017-08-01
plan Plán obsahující název, produkt a vydavatele virtuálního počítače, pokud se jedná o image Azure Marketplace 2018-04-02
platformUpdateDomain Aktualizace domény, ve které je virtuální počítač spuštěný 2017-04-02
platformFaultDomain Doména selhání, ve které je virtuální počítač spuštěný 2017-04-02
platformSubFaultDomain Sub fault domain, ve které je virtuální počítač spuštěný, pokud je k dispozici. 2021-10-01
priority Priorita virtuálního počítače Další informace najdete v spotových virtuálních počítačích . 2020-12-01
provider Poskytovatel virtuálního počítače 2018-10-01
publicKeys Kolekce veřejných klíčů přiřazených k virtuálnímu počítači a cestám 2018-04-02
publisher Vydavatel image virtuálního počítače 2017-04-02
resourceGroupName Skupina prostředků pro virtuální počítač 2017-08-01
resourceId Plně kvalifikované ID prostředku 2019-03-11
sku Konkrétní skladová položka pro image virtuálního počítače 2017-04-02
securityProfile.secureBootEnabled Určuje, jestli je na virtuálním počítači povolené zabezpečené spouštění UEFI. 2020-06-01
securityProfile.virtualTpmEnabled Určuje, jestli je na virtuálním počítači povolený virtuální čip TPM (Trusted Platform Module). 2020-06-01
securityProfile.encryptionAtHost Určuje, jestli je na virtuálním počítači povolené šifrování na hostiteli . 2021-11-01
securityProfile.securityType Určuje, jestli je virtuální počítač důvěryhodným nebo důvěrným virtuálním počítačem. 2021-12-13
storageProfile Viz profil úložiště níže. 1. 6. 2019
subscriptionId Předplatné Azure pro virtuální počítač 2017-08-01
tags Značky pro virtuální počítač 2017-08-01
tagsList Značky formátované jako pole JSON pro snadnější programové analýzy 2019-06-04
userData Sada dat zadaná při vytvoření virtuálního počítače pro použití během zřizování nebo po zřízení (zakódovaná s kódováním Base64) 2021-01-01
version Verze image virtuálního počítače 2017-04-02
virtualMachineScaleSet.id ID škálovací sady virtuálních počítačů vytvořené s flexibilní orchestrací je virtuální počítač součástí. Toto pole není k dispozici pro škálovací sady virtuálních počítačů vytvořené s jednotnou orchestrací. 2021-03-01
vmId Jedinečný identifikátor virtuálního počítače Blog odkazoval pouze na virtuální počítače, které mají SMBIOS < 2.6. U virtuálních počítačů, které mají SMBIOS >= 2.6, se UUID z DMI zobrazí v malém endovém formátu, takže není nutné přepínat bajty. 2017-04-02
vmScaleSetName Název škálovací sady virtuálních počítačů vaší škálovací sady 2017-12-01
vmSize Velikost virtuálního počítače 2017-04-02
zone Zóna dostupnosti virtuálního počítače 2017-12-01

† Tato verze ještě není plně dostupná a nemusí být podporována ve všech oblastech.

Profil úložiště

Profil úložiště virtuálního počítače je rozdělený do tří kategorií: odkaz na image, disk s operačním systémem a datové disky a další objekt pro místní dočasný disk.

Referenční objekt obrázku obsahuje následující informace o imagi operačního systému, upozorňujeme, že image může pocházet z platformy, marketplace, galerie komunity nebo přímé sdílené galerie, ale ne z obou:

Data Popis Zavedená verze
id ID zdroje 1. 6. 2019
offer Nabídka image platformy nebo marketplace 1. 6. 2019
publisher Vydavatel image platformy nebo marketplace 1. 6. 2019
sku Skladová položka platformy nebo image marketplace 1. 6. 2019
version Verze image 1. 6. 2019
communityGalleryImageId ID prostředku image komunity, v opačném případě prázdné 2023-07-01
sharedGalleryImageId ID prostředku o přímé sdílené imagi, jinak prázdné 2023-07-01
exactVersion Verze komunity nebo přímá sdílená image 2023-07-01

Objekt disku s operačním systémem obsahuje následující informace o disku operačního systému používaném virtuálním počítačem:

Data Popis
caching Požadavky na ukládání do mezipaměti
createOption Informace o vytvoření virtuálního počítače
diffDiskSettings Nastavení dočasného disku
diskSizeGB Velikost disku v GB
image Virtuální pevný disk image zdrojového uživatele
managedDisk Parametry spravovaného disku
name Název disku
vhd Virtuální pevný disk
writeAcceleratorEnabled Jestli je na disku povolený nebo není povolený writeAccelerator

Pole datových disků obsahuje seznam datových disků připojených k virtuálnímu počítači. Každý objekt datového disku obsahuje následující informace:

Data Popis Zavedená verze
bytesPerSecondThrottle* Kvóta čtení a zápisu disku v bajtech 2021-05-01
caching Požadavky na ukládání do mezipaměti 1. 6. 2019
createOption Informace o vytvoření virtuálního počítače 1. 6. 2019
diffDiskSettings Nastavení dočasného disku 1. 6. 2019
diskCapacityBytes* Velikost disku v bajtech 2021-05-01
diskSizeGB Velikost disku v GB 1. 6. 2019
encryptionSettings Nastavení šifrování disku 1. 6. 2019
image Virtuální pevný disk image zdrojového uživatele 1. 6. 2019
isSharedDisk* Určuje, jestli se disk sdílí mezi prostředky. 2021-05-01
isUltraDisk Určuje, jestli je datový disk disk úrovně Ultra. 2021-05-01
lun Počet logických jednotek disku 1. 6. 2019
managedDisk Parametry spravovaného disku 1. 6. 2019
name Název disku 1. 6. 2019
opsPerSecondThrottle* Kvóta čtení a zápisu disku v IOPS 2021-05-01
osType Typ operačního systému, který je součástí disku 1. 6. 2019
vhd Virtuální pevný disk 1. 6. 2019
writeAcceleratorEnabled Jestli je na disku povolený nebo není povolený writeAccelerator 1. 6. 2019

*Tato pole jsou vyplněna pouze pro disky Úrovně Ultra; jedná se o prázdné řetězce z disků, které nejsou disky Úrovně Ultra.

Objekt blob nastavení šifrování obsahuje data o šifrování disku (pokud je šifrovaný):

Data Popis Zavedená verze
diskEncryptionKey.sourceVault.id Umístění šifrovacího klíče disku 2021-11-01
diskEncryptionKey.secretUrl Umístění tajného klíče 2021-11-01
keyEncryptionKey.sourceVault.id Umístění šifrovacího klíče klíče 2021-11-01
keyEncryptionKey.keyUrl Umístění klíče 2021-11-01

Objekt disku prostředku obsahuje velikost místního dočasného disku připojeného k virtuálnímu počítači v kilobajtech. Pokud pro virtuální počítač neexistuje žádný místní dočasný disk, je tato hodnota 0.

Data Popis Zavedená verze
resourceDisk.size Velikost místního dočasného disku virtuálního počítače (v kB) 2021-02-01

Síť

Data Popis Zavedená verze
ipv4.privateIpAddress Místní IPv4 adresa virtuálního počítače 2017-04-02
ipv4.publicIpAddress Veřejná IPv4 adresa virtuálního počítače 2017-04-02
subnet.address Adresa podsítě virtuálního počítače 2017-04-02
subnet.prefix Předpona podsítě, příklad 24 2017-04-02
ipv6.ipAddress Místní adresa IPv6 virtuálního počítače 2017-04-02
macAddress Adresa mac virtuálního počítače 2017-04-02

Poznámka:

Síťové karty vrácené síťovým voláním nejsou zaručeny v pořadí.

Získání uživatelských dat

Při vytváření nového virtuálního počítače můžete zadat sadu dat, která se mají použít během nebo po zřízení virtuálního počítače, a načíst je prostřednictvím IMDS. Tady zkontrolujte prostředí dat koncového uživatele.

Pokud chcete nastavit uživatelská data, využijte tady šablonu rychlého startu. Následující ukázka ukazuje, jak tato data načíst prostřednictvím IMDS. Tato funkce je vydána s verzí 2021-01-01 a výše.

Poznámka:

Upozornění na zabezpečení: IMDS je otevřená pro všechny aplikace na virtuálním počítači, citlivá data by neměla být umístěna do uživatelských dat.

$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))

Ukázka 1: Sledování virtuálních počítačů spuštěných v Azure

Jako poskytovatel služeb můžete vyžadovat sledování počtu virtuálních počítačů, na kterých běží váš software, nebo mít agenty, kteří potřebují sledovat jedinečnost virtuálního počítače. Pokud chcete získat jedinečné ID virtuálního počítače, použijte vmId pole ze služby Instance Metadata Service.

Požádat

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

Response

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

Ukázka 2: Umístění různých replik dat

V určitých scénářích je umístění různých replik dat velmi důležité. Například umístění repliky HDFS nebo umístění kontejneru prostřednictvím orchestrátoru může vyžadovat, abyste věděli, na platformFaultDomain kterém a platformUpdateDomain na kterém je virtuální počítač spuštěný. K těmto rozhodnutím můžete také použít Zóny dostupnosti pro instance. Tato data můžete dotazovat přímo přes IMDS.

Požádat

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

Response

0

Ukázka 3: Získání značek virtuálních počítačů

Značky virtuálních počítačů jsou součástí rozhraní API instance, výpočetních prostředků nebo značek. Značky se můžou použít na virtuální počítač Azure, aby je logicky uspořádaly do taxonomie. Značky přiřazené k virtuálnímu počítači je možné načíst pomocí následujícího požadavku.

Požádat

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

Response

Department:IT;ReferenceNumber:123456;TestStatus:Pending

Pole tags je řetězec se značkami oddělenými středníky. Tento výstup může být problém, pokud se v samotných značkách používají středníky. Pokud je analyzátor napsaný pro programový extrahování značek, měli byste se na tagsList dané pole spolehnout. Pole tagsList je pole JSON bez oddělovačů a v důsledku toho je jednodušší parsovat. Seznam značek přiřazený k virtuálnímu počítači je možné načíst pomocí následujícího požadavku.

Požádat

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

Response

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

Ukázka 4: Získání dalších informací o virtuálním počítači během případu podpory

Jako poskytovatel služeb můžete získat hovor podpory, ve kterém byste chtěli získat další informace o virtuálním počítači. Žádost zákazníka, aby sdílel výpočetní metadata, může poskytnout základní informace pro pracovníka podpory, aby věděl o druhu virtuálního počítače v Azure.

Požádat

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

Odpověď respondenta

Poznámka:

Odpověď je řetězec JSON. Následující příklad odpovědi je poměrně vytištěna pro čitelnost.

{
    "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"
}

Ukázka 5: Získání prostředí Azure, ve kterém je virtuální počítač spuštěný

Azure má různé suverénní cloudy, jako je Azure Government. Někdy potřebujete prostředí Azure k rozhodování o běhu. Následující ukázka ukazuje, jak tohoto chování dosáhnout.

Požádat

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

Response

AzurePublicCloud

Tady najdete cloud a hodnoty prostředí Azure.

Cloud Prostředí Azure
Všechny obecně dostupné globální oblasti Azure AzurePublicCloud
Azure Government AzureUSGovernmentCloud
Microsoft Azure provozovaný společností 21Vianet AzureChinaCloud
Azure (Německo) AzureGermanCloud

Ukázka 6: Načtení informací o síti

Požádat

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

Response

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

Ukázka 7: Načtení veřejné IP adresy

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"

Poznámka:

  • Pokud chcete načíst informace IMDS pro veřejnou IP adresu skladové položky Standard , přečtěte si rozhraní API metadat Load Balanceru, kde najdete další informace.

Potvrzená data

Získání potvrzených dat

IMDS pomáhá poskytovat záruky, že poskytnutá data pocházejí z Azure. Microsoft podepíše část těchto informací, abyste si mohli ověřit, že image na Azure Marketplace je ta, kterou používáte v Azure.

GET /metadata/attested/document

Parametry

Název Povinné/volitelné Popis
api-version Povinní účastníci Verze použitá ke službě požadavku.
nonce Volitelné 10místný řetězec, který slouží jako kryptografická nece. Pokud není zadaná žádná hodnota, IMDS použije aktuální časové razítko UTC.

Response

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

Objekt blob podpisu je verze dokumentu podepsaná pomocí pkcs7. Obsahuje certifikát použitý k podepisování spolu s určitými podrobnostmi o konkrétních virtuálních počítačích.

Pro virtuální počítače vytvořené pomocí Azure Resource Manageru obsahuje vmIddokument , skunonce, subscriptionIdpro timeStamp vytvoření a vypršení platnosti dokumentu a informace o plánu o imagi. Informace o plánu se vyplní jenom pro image z Azure Marketplace.

U virtuálních počítačů vytvořených pomocí modelu nasazení Classic je zaručeno, že se naplní pouze vmId virtuální subscriptionId počítače. Certifikát můžete extrahovat z odpovědi a použít ho k potvrzení, že odpověď je platná a pochází z Azure.

Dekódovaný dokument obsahuje následující pole:

Data Popis Zavedená verze
licenseType Typ licence pro Zvýhodněné hybridní využití Azure Tato možnost je k dispozici pouze pro virtuální počítače s podporou AHB. 2020-09-01
nonce Řetězec, který lze volitelně poskytnout s požadavkem. Pokud nebyla zadána žádná nonce , použije se aktuální časové razítko koordinovaného univerzálního času. 2018-10-01
plan Plán image z Azure Marketplace. Obsahuje ID plánu (název), image produktu nebo nabídku (produkt) a ID vydavatele (vydavatel). 2018-10-01
timestamp.createdOn Časové razítko UTC pro vytvoření podepsaného dokumentu 2018-20-01
timestamp.expiresOn Časové razítko UTC pro vypršení platnosti podepsaného dokumentu 2018-10-01
vmId Jedinečný identifikátor virtuálního počítače 2018-10-01
subscriptionId Předplatné Azure pro virtuální počítač 2019-04-30
sku Konkrétní skladová položka pro image virtuálního počítače (koreluje s compute/sku vlastností z koncového bodu metadat instance [/metadata/instance]) 2019-11-01

Poznámka:

U klasických virtuálních počítačů (mimo Azure Resource Manager) je zaručeno, že se naplní jenom id virtuálního počítače.

Příklad dokumentu:

{
   "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"
}

Doprovodné materiály k ověření podpisu

Při ověřování podpisu byste měli potvrdit, že se podpis vytvořil s certifikátem z Azure. To se provádí ověřením alternativního názvu subjektu certifikátu (SAN).

Příklad sítě SAN DNS Name=eastus.metadata.azure.com, DNS Name=metadata.azure.com

Poznámka:

Doména pro veřejný cloud a každý suverénní cloud se bude lišit.

Cloud Doména v síti SAN
Všechny obecně dostupné globální oblasti Azure *.metadata.azure.com
Azure Government *.metadata.azure.us
Azure provozovaný společností 21Vianet *.metadata.azure.cn
Azure (Německo) *.metadata.microsoftazure.de

Poznámka:

Certifikáty nemusí mít pro doménu přesnou shodu. Z tohoto důvodu by ověření certifikace mělo přijmout jakoukoli subdoménu (například v oblastech obecné dostupnosti veřejného cloudu přijímá *.metadata.azure.com).

Nedoporučujeme připnutí certifikátu pro zprostředkující certifikáty. Další pokyny najdete v tématu Připnutí certifikátu – Připnutí certifikátu a služby Azure. Upozorňujeme, že služba Azure Instance Metadata Service nenabízí oznámení o budoucích změnách certifikační autority. Místo toho musíte postupovat podle článku s podrobnostmi centralizované certifikační autority Azure pro všechny budoucí aktualizace.

Ukázka 1: Ověření, že je virtuální počítač spuštěný v Azure

Dodavatelé na Azure Marketplace chtějí zajistit, aby jejich software běžel jenom v Azure. Pokud někdo zkopíruje virtuální pevný disk do místního prostředí, musí ho dodavatel zjistit. Prostřednictvím IMDS můžou tito dodavatelé získat podepsaná data, která zaručují odpověď pouze z Azure.

Poznámka:

Tato ukázka vyžaduje instalaci nástroje jq.

Ověření

# 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)

Ověřte, že podpis pochází z Microsoft Azure, a zkontrolujte chyby v řetězu certifikátů.

# 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

Pokud nonce jste v počátečním požadavku zadali nonce parametr, můžete porovnat podepsaný dokument.

Spravovaná identita

Spravovanou identitu přiřazenou systémem je možné na virtuálním počítači povolit. K virtuálnímu počítači můžete přiřadit také jednu nebo více spravovaných identit přiřazených uživatelem. Potom můžete vyžádat tokeny pro spravované identity z IMDS. Tyto tokeny použijte k ověření u jiných služeb Azure, jako je Azure Key Vault.

Podrobné kroky pro povolení této funkce najdete v tématu Získání přístupového tokenu.

Metadata Load Balanceru

Když umístíte instance virtuálních počítačů nebo virtuálních počítačů za Azure Standard Load Balancer, můžete pomocí IMDS načíst metadata související s nástrojem pro vyrovnávání zatížení a instancemi. Další informace najdete v tématu Načtení informací o nástroji pro vyrovnávání zatížení.

Naplánované události

Stav plánovaných událostí můžete získat pomocí IMDS. Pak může uživatel zadat sadu akcí, které se mají spouštět na těchto událostech. Další informace naleznete v tématu Naplánované události pro Linux nebo Naplánované události pro Windows.

Ukázkový kód v různých jazycích

Následující tabulka uvádí ukázky volání IMDS pomocí různých jazyků ve virtuálním počítači:

Jazyk Příklad
Bash https://github.com/Microsoft/azureimds/blob/master/IMDSSample.sh
C# https://github.com/Microsoft/azureimds/blob/master/IMDSSample.cs
Přejít 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

Chyby a ladění

Pokud neexistuje datový prvek nebo poškozený požadavek, vrátí služba Instance Metadata Service standardní chyby HTTP. Příklad:

Kód stavu HTTP Důvod
200 OK Požadavek byl úspěšný.
400 Bad Request Chybějící Metadata: true hlavička nebo chybějící parametr format=json při dotazování na uzel typu list
404 Not Found Požadovaný element neexistuje.
405 Method Not Allowed Metoda HTTP (příkaz) není v koncovém bodu podporovaná.
410 Gone Zkuste to znovu po dobu maximálně 70 sekund.
429 Too Many Requests Došlo k překročení limitů rychlosti rozhraní API.
500 Service Error Zkuste to znovu za nějakou dobu.

Nejčastější dotazy

  • Zobrazuje se mi chyba 400 Bad Request, Required metadata header not specified. Co to znamená?

    • IMDS vyžaduje předání hlavičky Metadata: true v požadavku. Předání této hlavičky ve volání REST umožňuje přístup k IMDS.
  • Proč pro virtuální počítač nedostávám informace o výpočetních prostředcích?

    • ImDS v současné době podporuje pouze instance vytvořené pomocí Azure Resource Manageru.
  • Před časem jsem vytvořil(a) virtuální počítač prostřednictvím Azure Resource Manageru. Proč se mi nezobrazují informace o výpočetních metadatech?

    • Pokud jste virtuální počítač vytvořili po září 2016, přidejte značku , která začne zobrazovat výpočetní metadata. Pokud jste virtuální počítač vytvořili před zářím 2016, přidejte nebo odeberte rozšíření nebo datové disky do instance virtuálního počítače a aktualizujte metadata.
  • Jsou uživatelská data stejná jako vlastní data?

    • Uživatelská data nabízejí podobné funkce jako vlastní data, takže do instance virtuálního počítače můžete předat vlastní metadata. Rozdíl je v tom, že uživatelská data se načítají prostřednictvím IMDS a jsou trvalá po celou dobu životnosti instance virtuálního počítače. Stávající funkce vlastních dat bude dál fungovat, jak je popsáno v tomto článku. Vlastní data ale můžete získat pouze prostřednictvím místní systémové složky, ne prostřednictvím IMDS.
  • Proč se mi nezobrazují všechna data vyplněná pro novou verzi?

    • Pokud jste virtuální počítač vytvořili po září 2016, přidejte značku , která začne zobrazovat výpočetní metadata. Pokud jste virtuální počítač vytvořili před zářím 2016, přidejte nebo odeberte rozšíření nebo datové disky do instance virtuálního počítače a aktualizujte metadata.
  • Proč se mi zobrazuje chyba 500 Internal Server Error nebo 410 Resource Gone?

    • Žádost opakujte. Další informace naleznete v tématu Zpracování přechodných chyb. Pokud problém přetrvává, vytvořte problém s podporou na webu Azure Portal pro virtuální počítač.
  • Fungovalo by to u instancí škálovací sady?

    • Ano, IMDS je k dispozici pro instance škálovací sady.
  • Aktualizoval(a) jsem značky ve škálovacích sadách, ale nezobrazují se v instancích (na rozdíl od virtuálních počítačů s jednou instancí). Dělám něco špatně?

    • V současné době se značky škálovacích sad zobrazují virtuálnímu počítači jenom při restartování, opětovném vytvoření image nebo změně disku na instanci.
  • Proč se mi v podrobnostech nezobrazují informace o skladové posílce virtuálního počítače instance/compute ?

    • U vlastních imagí vytvořených z Azure Marketplace si platforma Azure neuchová informace o skladové pořidí pro vlastní image a podrobnosti o všech virtuálních počítačích vytvořených z vlastní image. Jedná se o návrh, a proto se v podrobnostech virtuálního počítače instance/compute nezobrazuje.
  • Proč vypršel časový limit mého požadavku (nebo se nepodařilo připojit) pro mé volání do služby?

    • Volání metadat musí být provedena z primární IP adresy přiřazené k primární síťové kartě virtuálního počítače. Pokud jste navíc změnili trasy, musí existovat trasa pro adresu 169.254.169.254/32 v místní směrovací tabulce virtuálního počítače.

      1. Vystavte místní směrovací tabulku a vyhledejte položku IMDS. Příklad:

        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. Ověřte, že pro trasu existuje 169.254.169.254, a poznamenejte si odpovídající síťové rozhraní (například 172.16.69.7).

      3. Vypište konfiguraci rozhraní a najděte rozhraní, které odpovídá rozhraní, na které odkazuje směrovací tabulka, a uveďte adresu MAC (fyzické).

        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. Ověřte, že rozhraní odpovídá primární síťové kartě virtuálního počítače a primární IP adrese. Primární síťovou kartu a IP adresu najdete tak, že se podíváte na konfiguraci sítě na webu Azure Portal nebo ji vyhledáte pomocí Azure CLI. Poznamenejte si privátní IP adresy (a adresu MAC, pokud používáte rozhraní příkazového řádku). Tady je příklad powershellového rozhraní příkazového řádku:

        $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. Pokud se neshodují, aktualizujte směrovací tabulku tak, aby primární síťová karta a IP adresa byly cílené.


  • Převzetí služeb při selhání clusteringu ve Windows Serveru

    • Při dotazování IMDS pomocí clusteringu s podporou převzetí služeb při selhání je někdy potřeba přidat trasu do směrovací tabulky. Postupujte následovně:

      1. Otevřete příkazový řádek s oprávněními správce.

      2. Spusťte následující příkaz a poznamenejte si adresu rozhraní pro cíl sítě (0.0.0.0) v směrovací tabulce IPv4.

      route print
      

      Poznámka:

      Následující příklad výstupu je z virtuálního počítače s Windows Serverem s povoleným clusterem s podporou převzetí služeb při selhání. Pro zjednodušení výstup obsahuje pouze směrovací tabulku IPv4.

      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
      

      Spusťte následující příkaz a použijte adresu rozhraní pro cíl sítě (0.0.0.0), což je (10.0.1.10) v tomto příkladu.

      route add 169.254.169.254/32 10.0.1.10 metric 1 -p
      

Technická podpora

Pokud po několika pokusech nemůžete získat odpověď na metadata, můžete na webu Azure Portal vytvořit problém s podporou.

Zpětná vazba k produktu

Svůj názor na produkt a nápady můžete poskytnout našemu kanálu zpětné vazby uživatelů v části Virtual Machines > Instance Metadata Service zde.

Další kroky