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 na virtuálním počítači.
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 string
a 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 vmId
dokument , sku
nonce
, subscriptionId
pro 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:
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.
- IMDS vyžaduje předání hlavičky
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
nebo410 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.
- 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
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.
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) ...
Ověřte, že pro trasu existuje
169.254.169.254
, a poznamenejte si odpovídající síťové rozhraní (například172.16.69.7
).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) ...
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
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ě:
Otevřete příkazový řádek s oprávněními správce.
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.