Azure Instance Metadata Service
Dotyczy: ✔️ Maszyny wirtualne z systemem Linux Maszyny wirtualne z systemem Windows — elastyczne zestawy ✔️ ✔️ skalowania
Usługa Azure Instance Metadata Service (IMDS) udostępnia informacje o aktualnie uruchomionych wystąpieniach maszyn wirtualnych. Można ją wykorzystać do zarządzania maszynami wirtualnymi i konfigurowania ich. Informacje te obejmują jednostkę SKU, magazyn, konfiguracje sieci i nadchodzące zdarzenia konserwacji. Aby uzyskać pełną listę dostępnych danych, zobacz Podsumowanie kategorii punktów końcowych.
Usługa IMDS jest dostępna do uruchamiania wystąpień maszyn wirtualnych i wystąpień zestawu skalowania. Wszystkie punkty końcowe obsługują maszyny wirtualne utworzone i zarządzane przy użyciu usługi Azure Resource Manager. Tylko kategoria Attest i część Sieć kategorii Wystąpienie obsługują maszyny wirtualne utworzone przy użyciu klasycznego modelu wdrażania. Testowany punkt końcowy robi to tylko w ograniczonym zakresie.
IMDS to interfejs API REST dostępny pod dobrze znanym, nieruchomym adresem IP (169.254.169.254
). Dostęp do niego można uzyskać tylko z poziomu maszyny wirtualnej. Komunikacja między maszyną wirtualną a usługą IMDS nigdy nie opuszcza hosta.
Klienci HTTP pomijają internetowe serwery proxy na maszynie wirtualnej podczas wykonywania zapytań dotyczących usług IMDS i traktują 169.254.169.254
je tak samo jak 168.63.129.16
.
Użycie
Uzyskiwanie dostępu do usługi Azure Instance Metadata Service
Aby uzyskać dostęp do usługi IMDS, utwórz maszynę wirtualną z poziomu usługi Azure Resource Manager lub witryny Azure Portal i skorzystaj z poniższych przykładów. Aby uzyskać więcej przykładów, zobacz Przykłady metadanych wystąpienia platformy Azure.
Oto przykładowy kod umożliwiający pobranie wszystkich metadanych dla wystąpienia. Aby uzyskać dostęp do określonego źródła danych, zobacz Kategorie punktów końcowych, aby zapoznać się z omówieniem wszystkich dostępnych funkcji.
Zażądaj
Ważne
W tym przykładzie pomijane są serwery proxy. Podczas wykonywania zapytań w usłudze IMDS należy pominąć serwery proxy. Aby uzyskać dodatkowe informacje, zobacz Serwery proxy .
Uwaga
Żądania IMDS muszą być wysyłane przy użyciu podstawowej karty sieciowej i podstawowego adresu IP maszyny wirtualnej, a protokół DHCP musi być włączony.
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
program wymaga programu PowerShell w wersji 6 lub nowszej. Zobacz nasze repozytorium przykładów, aby zapoznać się ze starszymi wersjami programu PowerShell.
Odpowiedź
Uwaga
Odpowiedź jest ciągiem JSON. Następująca przykładowa odpowiedź jest dość drukowana w celu zapewnienia czytelności.
{
"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"
}]
}
}
Zabezpieczenia i uwierzytelnianie
Usługa metadanych wystąpienia jest dostępna tylko z poziomu uruchomionego wystąpienia maszyny wirtualnej na nieobsługiwanym adresie IP. Maszyny wirtualne mogą korzystać tylko z własnych metadanych/funkcji. Interfejs API jest tylko http i nigdy nie opuszcza hosta.
Aby zapewnić, że żądania są bezpośrednio przeznaczone dla usług IMDS i zapobiegać niezamierzonemu lub niechcianemu przekierowywaniu żądań, żądania:
- Musi zawierać nagłówek
Metadata: true
- Nie może zawierać nagłówka
X-Forwarded-For
Każde żądanie, które nie spełnia obu tych wymagań, zostanie odrzucone przez usługę.
Ważne
ImDS nie jest kanałem danych poufnych. Interfejs API jest nieuwierzytelniony i otwarty dla wszystkich procesów na maszynie wirtualnej. Informacje udostępniane za pośrednictwem tej usługi powinny być traktowane jako informacje udostępnione wszystkim aplikacjom działającym wewnątrz maszyny wirtualnej.
Jeśli nie jest konieczne, aby każdy proces na maszynie wirtualnej mógł uzyskać dostęp do punktu końcowego usługi IMDS, możesz ustawić lokalne reguły zapory, aby ograniczyć dostęp. Jeśli na przykład tylko znana usługa systemowa musi uzyskać dostęp do usługi metadanych wystąpienia, możesz ustawić regułę zapory w punkcie końcowym USŁUGI IMDS, zezwalając tylko określonym procesom na dostęp lub odmawiając dostępu do pozostałych procesów.
Serwery proxy
Usługa IMDS nie jest przeznaczona do użycia za serwerem proxy i nie jest obsługiwana. Większość klientów HTTP zapewnia opcję wyłączenia serwerów proxy na żądaniach, a ta funkcja musi być używana podczas komunikacji z usługami IMDS. Aby uzyskać szczegółowe informacje, zapoznaj się z dokumentacją klienta.
Ważne
Nawet jeśli nie znasz żadnej konfiguracji serwera proxy w danym środowisku, nadal musisz zastąpić wszystkie domyślne ustawienia serwera proxy klienta. Konfiguracje serwera proxy można odnaleźć automatycznie i nie można pominąć takich konfiguracji, co powoduje ryzyko wystąpienia awarii, jeśli konfiguracja maszyny zostanie zmieniona w przyszłości.
Rate limiting (Ograniczanie szybkości)
Ogólnie rzecz biorąc, żądania do usług IMDS są ograniczone do 5 żądań na sekundę (na podstawie maszyny wirtualnej). Żądania przekraczające ten próg zostaną odrzucone z 429 odpowiedziami. Żądania do kategorii Tożsamość zarządzana są ograniczone do 20 żądań na sekundę i 5 współbieżnych żądań (na podstawie maszyny wirtualnej).
Czasowniki HTTP
Obecnie obsługiwane są następujące czasowniki HTTP:
Czasownik | opis |
---|---|
GET |
Pobieranie żądanego zasobu |
Parametry
Punkty końcowe mogą obsługiwać wymagane parametry i/lub opcjonalne. Aby uzyskać szczegółowe informacje, zobacz Schemat i dokumentację dla konkretnego punktu końcowego.
Parametry zapytań
Punkty końcowe IMDS obsługują parametry ciągu zapytania HTTP. Na przykład:
http://169.254.169.254/metadata/instance/compute?api-version=2021-01-01&format=json
Określa parametry:
Nazwa/nazwisko | Wartość |
---|---|
api-version |
2021-01-01 |
format |
json |
Żądania z zduplikowanymi nazwami parametrów zapytania zostaną odrzucone.
Parametry tras
W przypadku niektórych punktów końcowych, które zwracają większe obiekty blob json, obsługujemy dołączanie parametrów trasy do punktu końcowego żądania w celu filtrowania w dół do podzestawu odpowiedzi:
http://169.254.169.254/metadata/<endpoint>/[<filter parameter>/...]?<query parameters>
Parametry odpowiadają indeksom/kluczom, które byłyby używane do przechodzenia w dół obiektu json, gdyby interakcja z analizowaną reprezentacją.
Na przykład /metadata/instance
zwraca obiekt json:
{
"compute": { ... },
"network": {
"interface": [
{
"ipv4": {
"ipAddress": [{
"privateIpAddress": "10.144.133.132",
"publicIpAddress": ""
}],
"subnet": [{
"address": "10.144.133.128",
"prefix": "26"
}]
},
"ipv6": {
"ipAddress": [
]
},
"macAddress": "0011AAFFBB22"
},
...
]
}
}
Jeśli chcemy przefiltrować odpowiedź tylko do właściwości obliczeniowej, wyślemy żądanie:
http://169.254.169.254/metadata/instance/compute?api-version=<version>
Podobnie, jeśli chcemy filtrować do właściwości zagnieżdżonej lub określonego elementu tablicy, nadal dołączamy klucze:
http://169.254.169.254/metadata/instance/network/interface/0?api-version=<version>
filtruje do pierwszego elementu z Network.interface
właściwości i zwraca:
{
"ipv4": {
"ipAddress": [{
"privateIpAddress": "10.144.133.132",
"publicIpAddress": ""
}],
"subnet": [{
"address": "10.144.133.128",
"prefix": "26"
}]
},
"ipv6": {
"ipAddress": [
]
},
"macAddress": "0011AAFFBB22"
}
Uwaga
Podczas filtrowania do węzła format=json
liścia nie działa. W przypadku tych zapytań format=text
należy jawnie określić, ponieważ domyślny format to json.
Schemat
Format danych
Domyślnie usługa IMDS zwraca dane w formacie JSON (Content-Type: application/json
). Jednak punkty końcowe obsługujące filtrowanie odpowiedzi (zobacz Parametry trasy) obsługują również format text
.
Aby uzyskać dostęp do formatu odpowiedzi innego niż domyślny, określ żądany format jako parametr ciągu zapytania w żądaniu. Na przykład:
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance?api-version=2017-08-01&format=text"
W odpowiedziach w formacie JSON wszystkie elementy pierwotne będą typu string
, a brakujące lub niestosowalne wartości są zawsze uwzględniane, ale zostaną ustawione na pusty ciąg.
Wersje
Usługa IMDS jest wersjonowana i określenie wersji interfejsu API w żądaniu HTTP jest obowiązkowe. Jedynym wyjątkiem od tego wymagania jest punkt końcowy wersji , który może służyć do dynamicznego pobierania dostępnych wersji interfejsu API.
W miarę dodawania nowszych wersji starsze wersje mogą być nadal dostępne w celu zapewnienia zgodności, jeśli skrypty mają zależności od określonych formatów danych.
Jeśli nie określisz wersji, zostanie wyświetlony błąd z listą najnowszych obsługiwanych wersji:
{
"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"
]
}
Obsługiwane wersje interfejsu API
Uwaga
Wersja 2023-11-15 jest nadal wdrażana, ale może nie być dostępna w niektórych regionach.
- 2023-11-15
- 2023-07-01
- 2021-12-13
- 2021-11-15
- 2021-11-01
- 2021-10-01
- 2021-08-01
- 2021-05-01
- 2021-03-01
- 2021-02-01
- 2021-01-01
- 2020-12-01
- 2020-10-01
- 2020-09-01
- 2020-07-15
- 2020-06-01
- 2019-11-01
- 2019-08-15
- 2019-08-01
- 2019-06-04
- 2019-06-01
- 2019-04-30
- 2019-03-11
- 2019-02-01
- 2018-10-01
- 2018-04-02
- 2018-02-01
- 2017-12-01
- 2017-10-01
- 2017-08-01
- 2017-04-02
- 2017-03-01
Swagger
Pełna definicja struktury Swagger dla usługi IMDS jest dostępna pod adresem: https://github.com/Azure/azure-rest-api-specs/blob/main/specification/imds/data-plane/readme.md
Dostępność w regionach
Usługa jest ogólnie dostępna we wszystkich chmurach platformy Azure.
Główny punkt końcowy
Główny punkt końcowy to http://169.254.169.254/metadata
.
Kategorie punktów końcowych
Interfejs API IMDS zawiera wiele kategorii punktów końcowych reprezentujących różne źródła danych, z których każdy zawiera co najmniej jeden punkt końcowy. Aby uzyskać szczegółowe informacje, zobacz każdą kategorię.
Katalog główny kategorii | opis | Wprowadzona wersja |
---|---|---|
/metadata/attested |
Zobacz Dane testowane | 2018-10-01 |
/metadata/identity |
Zobacz Tożsamość zarządzana za pośrednictwem usług IMDS | 2018-02-01 |
/metadata/instance |
Zobacz Metadane wystąpienia | 2017-04-02 |
/metadata/loadbalancer |
Zobacz Pobieranie metadanych modułu równoważenia obciążenia za pośrednictwem usługi IMDS | 2020-10-01 |
/metadata/scheduledevents |
Zobacz Zaplanowane zdarzenia za pośrednictwem usługi IMDS | 2017-08-01 |
/metadata/versions |
Zobacz wersje | Nie dotyczy |
Wersje
Wyświetlanie listy wersji interfejsu API
Zwraca zestaw obsługiwanych wersji interfejsu API.
GET /metadata/versions
Parametry
Brak (ten punkt końcowy jest niewersjowany).
Response
{
"apiVersions": [
"2017-03-01",
"2017-04-02",
...
]
}
Metadane wystąpienia
Pobieranie metadanych maszyny wirtualnej
Uwidacznia ważne metadane dla wystąpienia maszyny wirtualnej, w tym obliczenia, sieć i magazyn.
GET /metadata/instance
Parametry
Nazwisko | Wymagane/opcjonalnie | opis |
---|---|---|
api-version |
Wymagania | Wersja używana do obsługi żądania. |
format |
Fakultatywny* | Format (json lub text ) odpowiedzi. *Uwaga: może być wymagane w przypadku korzystania z parametrów żądania |
Ten punkt końcowy obsługuje filtrowanie odpowiedzi za pomocą parametrów 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"
}]
}
}
Podział schematu:
Środowisko obliczeniowe
Dane | opis | Wprowadzona wersja |
---|---|---|
azEnvironment |
Środowisko platformy Azure, w którym uruchomiono maszynę wirtualną | 2018-10-01 |
additionalCapabilities.hibernationEnabled |
Określa, czy hibernacji jest włączona na maszynie wirtualnej | 2021-11-01 |
customData |
Ta funkcja jest przestarzała i wyłączona w usłudze IMDS. Został zastąpiony przez userData |
2019-02-01 |
evictionPolicy |
Ustawia sposób wykluczania maszyny wirtualnej typu spot. | 2020-12-01 |
extendedLocation.type |
Typ rozszerzonej lokalizacji maszyny wirtualnej. | 2021-03-01 |
extendedLocation.name |
Nazwa rozszerzonej lokalizacji maszyny wirtualnej | 2021-03-01 |
host.id |
Nazwa hosta maszyny wirtualnej. Należy pamiętać, że maszyna wirtualna będzie mieć hosta lub grupę hostów, ale nie obie. | 2021-11-15 |
hostGroup.id |
Nazwa grupy hostów maszyny wirtualnej. Należy pamiętać, że maszyna wirtualna będzie mieć hosta lub grupę hostów, ale nie obie. | 2021-11-15 |
isHostCompatibilityLayerVm |
Określa, czy maszyna wirtualna działa w warstwie zgodności hosta | 2020-06-01 |
licenseType |
Typ licencji dla Korzyść użycia hybrydowego platformy Azure. Dotyczy to tylko maszyn wirtualnych z obsługą usługi AHB | 2020-09-01 |
location |
Region świadczenia usługi Azure, w którym jest uruchomiona maszyna wirtualna | 2017-04-02 |
name |
Nazwa maszyny wirtualnej | 2017-04-02 |
offer |
Informacje o ofercie obrazu maszyny wirtualnej i są obecne tylko dla obrazów wdrożonych z galerii obrazów platformy Azure | 2017-04-02 |
osProfile.adminUsername |
Określa nazwę konta administratora | 2020-07-15 |
osProfile.computerName |
Określa nazwę komputera | 2020-07-15 |
osProfile.disablePasswordAuthentication |
Określa, czy uwierzytelnianie haseł jest wyłączone. Dotyczy to tylko maszyn wirtualnych z systemem Linux | 2020-10-01 |
osType |
Linux czy Windows | 2017-04-02 |
physicalZone |
Strefa fizyczna maszyny wirtualnej | 2023-11-15 |
placementGroupId |
Grupa umieszczania zestawu skalowania | 2017-08-01 |
plan |
Plan zawierający nazwę, produkt i wydawcę dla maszyny wirtualnej, jeśli jest to obraz witryny Azure Marketplace | 2018-04-02 |
platformUpdateDomain |
Aktualizowanie domeny uruchomionej na maszynie wirtualnej | 2017-04-02 |
platformFaultDomain |
Domena błędów uruchomiona na maszynie wirtualnej | 2017-04-02 |
platformSubFaultDomain |
Domena błędów podrzędnych, w których działa maszyna wirtualna, jeśli ma to zastosowanie. | 2021-10-01 |
priority |
Priorytet maszyny wirtualnej. Aby uzyskać więcej informacji, zobacz Maszyny wirtualne typu spot | 2020-12-01 |
provider |
Dostawca maszyny wirtualnej | 2018-10-01 |
publicKeys |
Kolekcja kluczy publicznych przypisanych do maszyny wirtualnej i ścieżek | 2018-04-02 |
publisher |
Wydawca obrazu maszyny wirtualnej | 2017-04-02 |
resourceGroupName |
Grupa zasobów dla maszyny wirtualnej | 2017-08-01 |
resourceId |
W pełni kwalifikowany identyfikator zasobu | 2019-03-11 |
sku |
Określona jednostka SKU dla obrazu maszyny wirtualnej | 2017-04-02 |
securityProfile.secureBootEnabled |
Określa, czy bezpieczny rozruch UEFI jest włączony na maszynie wirtualnej | 2020-06-01 |
securityProfile.virtualTpmEnabled |
Określa, czy wirtualny moduł TPM (Trusted Platform Module) jest włączony na maszynie wirtualnej | 2020-06-01 |
securityProfile.encryptionAtHost |
Określa, czy szyfrowanie na hoście jest włączone na maszynie wirtualnej | 2021-11-01 |
securityProfile.securityType |
Określa, czy maszyna wirtualna jest zaufaną maszyną wirtualną lub poufnej maszyny wirtualnej | 2021-12-13 |
storageProfile |
Zobacz profil magazynu poniżej | 2019-06-01 |
subscriptionId |
Subskrypcja platformy Azure dla maszyny wirtualnej | 2017-08-01 |
tags |
Tagi maszyny wirtualnej | 2017-08-01 |
tagsList |
Tagi sformatowane jako tablica JSON w celu łatwiejszego programowego analizowania | 2019-06-04 |
userData |
Zestaw danych określony podczas aprowizacji maszyny wirtualnej lub po jej utworzeniu (zakodowany w formacie Base64) | 2021-01-01 |
version |
Wersja obrazu maszyny wirtualnej | 2017-04-02 |
virtualMachineScaleSet.id |
Identyfikator zestawu skalowania maszyn wirtualnych utworzony za pomocą elastycznej aranżacji , której częścią jest maszyna wirtualna. To pole nie jest dostępne dla zestawów skalowania maszyn wirtualnych utworzonych z jednolitą aranżacją. | 2021-03-01 |
vmId |
Unikatowy identyfikator maszyny wirtualnej. W blogu odwoływali się tylko maszyny wirtualne, które mają protokół SMBIOS < 2.6. W przypadku maszyn wirtualnych, które mają wartość SMBIOS >= 2.6, identyfikator UUID z DMI jest wyświetlany w formacie mało endianu, dlatego nie ma potrzeby przełączania bajtów. | 2017-04-02 |
vmScaleSetName |
Nazwa zestawu skalowania maszyn wirtualnych zestawu skalowania | 2017-12-01 |
vmSize |
Rozmiar maszyny wirtualnej | 2017-04-02 |
zone |
Strefa dostępności maszyny wirtualnej | 2017-12-01 |
† Ta wersja nie jest jeszcze w pełni dostępna i może nie być obsługiwana we wszystkich regionach.
Profil magazynu
Profil magazynu maszyny wirtualnej jest podzielony na trzy kategorie: odwołanie do obrazu, dysk systemu operacyjnego i dyski danych oraz dodatkowy obiekt dla lokalnego dysku tymczasowego.
Obiekt odwołania do obrazu zawiera następujące informacje o obrazie systemu operacyjnego. Należy pamiętać, że obraz może pochodzić z platformy, witryny Marketplace, galerii społeczności lub bezpośredniej galerii udostępnionej, ale nie obu tych elementów:
Dane | opis | Wprowadzona wersja |
---|---|---|
id |
Identyfikator zasobu | 2019-06-01 |
offer |
Oferta obrazu platformy lub witryny Marketplace | 2019-06-01 |
publisher |
Wydawca obrazu platformy lub witryny Marketplace | 2019-06-01 |
sku |
Jednostka SKU obrazu platformy lub witryny Marketplace | 2019-06-01 |
version |
Wersja obrazu | 2019-06-01 |
communityGalleryImageId |
Identyfikator zasobu obrazu społeczności, pusty w przeciwnym razie | 2023-07-01 |
sharedGalleryImageId |
Identyfikator zasobu o obrazie udostępnionym bezpośrednio, pusty w przeciwnym razie | 2023-07-01 |
exactVersion |
Wersja społeczności lub bezpośredni udostępniony obraz | 2023-07-01 |
Obiekt dysku systemu operacyjnego zawiera następujące informacje o dysku systemu operacyjnego używanego przez maszynę wirtualną:
Dane | opis |
---|---|
caching |
Wymagania dotyczące buforowania |
createOption |
Informacje o sposobie tworzenia maszyny wirtualnej |
diffDiskSettings |
Ustawienia dysku efemerycznego |
diskSizeGB |
Rozmiar dysku w GB |
image |
Wirtualny dysk twardy obrazu użytkownika źródłowego |
managedDisk |
Parametry dysku zarządzanego |
name |
Disk name |
vhd |
Wirtualny dysk twardy |
writeAcceleratorEnabled |
Określa, czy na dysku jest włączony moduł writeAccelerator |
Tablica dysków danych zawiera listę dysków danych dołączonych do maszyny wirtualnej. Każdy obiekt dysku danych zawiera następujące informacje:
Dane | opis | Wprowadzona wersja |
---|---|---|
bytesPerSecondThrottle * |
Limit przydziału odczytu/zapisu dysku w bajtach | 2021-05-01 |
caching |
Wymagania dotyczące buforowania | 2019-06-01 |
createOption |
Informacje o sposobie tworzenia maszyny wirtualnej | 2019-06-01 |
diffDiskSettings |
Ustawienia dysku efemerycznego | 2019-06-01 |
diskCapacityBytes * |
Rozmiar dysku w bajtach | 2021-05-01 |
diskSizeGB |
Rozmiar dysku w GB | 2019-06-01 |
encryptionSettings |
Ustawienia szyfrowania dysku | 2019-06-01 |
image |
Wirtualny dysk twardy obrazu użytkownika źródłowego | 2019-06-01 |
isSharedDisk * |
Określa, czy dysk jest współużytkowany między zasobami | 2021-05-01 |
isUltraDisk |
Określa, czy dysk danych jest dyskiem w warstwie Ultra Disk | 2021-05-01 |
lun |
Numer jednostki logicznej dysku | 2019-06-01 |
managedDisk |
Parametry dysku zarządzanego | 2019-06-01 |
name |
Disk name | 2019-06-01 |
opsPerSecondThrottle * |
Limit przydziału odczytu/zapisu dysku na sekundę | 2021-05-01 |
osType |
Typ systemu operacyjnego dołączonego do dysku | 2019-06-01 |
vhd |
Wirtualny dysk twardy | 2019-06-01 |
writeAcceleratorEnabled |
Określa, czy na dysku jest włączony moduł writeAccelerator | 2019-06-01 |
*Te pola są wypełniane tylko dla dysków w warstwie Ultra; są pustymi ciągami z dysków innych niż Ultra Disk.
Obiekt blob ustawień szyfrowania zawiera dane dotyczące sposobu szyfrowania dysku (jeśli jest zaszyfrowany):
Dane | opis | Wprowadzona wersja |
---|---|---|
diskEncryptionKey.sourceVault.id |
Lokalizacja klucza szyfrowania dysku | 2021-11-01 |
diskEncryptionKey.secretUrl |
Lokalizacja wpisu tajnego | 2021-11-01 |
keyEncryptionKey.sourceVault.id |
Lokalizacja klucza szyfrowania klucza | 2021-11-01 |
keyEncryptionKey.keyUrl |
Lokalizacja klucza | 2021-11-01 |
Obiekt dysku zasobu zawiera rozmiar lokalnego dysku tymczasowego dołączonego do maszyny wirtualnej, jeśli ma go w kilobajtach. Jeśli dla maszyny wirtualnej nie ma lokalnego dysku tymczasowego, ta wartość to 0.
Dane | opis | Wprowadzona wersja |
---|---|---|
resourceDisk.size |
Rozmiar lokalnego dysku tymczasowego maszyny wirtualnej (w kB) | 2021-02-01 |
Sieciowe
Dane | opis | Wprowadzona wersja |
---|---|---|
ipv4.privateIpAddress |
Lokalny adres IPv4 maszyny wirtualnej | 2017-04-02 |
ipv4.publicIpAddress |
Publiczny adres IPv4 maszyny wirtualnej | 2017-04-02 |
subnet.address |
Adres podsieci maszyny wirtualnej | 2017-04-02 |
subnet.prefix |
Prefiks podsieci, przykład 24 | 2017-04-02 |
ipv6.ipAddress |
Lokalny adres IPv6 maszyny wirtualnej | 2017-04-02 |
macAddress |
Adres mac maszyny wirtualnej | 2017-04-02 |
Uwaga
Karty sieciowe zwrócone przez wywołanie sieciowe nie są gwarantowane w kolejności.
Pobieranie danych użytkownika
Podczas tworzenia nowej maszyny wirtualnej można określić zestaw danych, które mają być używane podczas aprowizacji maszyny wirtualnej lub po niej, i pobrać go za pośrednictwem usługi IMDS. Sprawdź środowisko danych użytkownika końcowego tutaj.
Aby skonfigurować dane użytkownika, skorzystaj z szablonu szybkiego startu tutaj. W poniższym przykładzie pokazano, jak pobrać te dane za pośrednictwem usługi IMDS. Ta funkcja jest udostępniana z wersją 2021-01-01
i nowszymi wersjami.
Uwaga
Powiadomienie o zabezpieczeniach: usługa IMDS jest otwarta dla wszystkich aplikacji na maszynie wirtualnej. Poufne dane nie powinny być umieszczane w danych użytkownika.
$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))
Przykład 1. Śledzenie maszyny wirtualnej uruchomionej na platformie Azure
Jako dostawca usług może być konieczne śledzenie liczby maszyn wirtualnych z uruchomionym oprogramowaniem lub agentów, którzy muszą śledzić unikatowość maszyny wirtualnej. Aby uzyskać unikatowy identyfikator maszyny wirtualnej, użyj vmId
pola z usługi metadanych wystąpienia.
Zażądaj
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
Przykład 2. Umieszczanie różnych replik danych
W przypadku niektórych scenariuszy umieszczanie różnych replik danych ma kluczowe znaczenie. Na przykład umieszczanie repliki hdFS lub umieszczanie kontenera za pośrednictwem orkiestratora może wymagać znajomości platformFaultDomain
elementu i platformUpdateDomain
uruchomionej maszyny wirtualnej.
Do podejmowania tych decyzji można również użyć Strefy dostępności dla wystąpień.
Możesz wykonywać zapytania dotyczące tych danych bezpośrednio za pośrednictwem usług IMDS.
Zażądaj
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
Przykład 3. Pobieranie tagów maszyn wirtualnych
Tagi maszyn wirtualnych są dołączane do interfejsu API wystąpienia w punkcie końcowym wystąpienia/obliczeń/tagów. Tagi mogły zostać zastosowane do maszyny wirtualnej platformy Azure w celu logicznego zorganizowania ich w taksonomię. Tagi przypisane do maszyny wirtualnej można pobrać przy użyciu poniższego żądania.
Zażądaj
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
to ciąg z tagami rozdzielanymi średnikami. Te dane wyjściowe mogą być problemem, jeśli średniki są używane w samych tagach. Jeśli analizator jest zapisywany w celu programowego wyodrębniania tagów, należy polegać na tagsList
polu. Pole tagsList
jest tablicą JSON bez ograniczników, a w związku z tym łatwiejsze do analizowania. TagiList przypisane do maszyny wirtualnej można pobrać przy użyciu poniższego żądania.
Zażądaj
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
}
Przykład 4. Uzyskiwanie dodatkowych informacji o maszynie wirtualnej podczas zgłoszenia do pomocy technicznej
Jako dostawca usług możesz uzyskać telefon pomocy technicznej, w którym chcesz dowiedzieć się więcej o maszynie wirtualnej. Prośba klienta o udostępnienie metadanych obliczeniowych może dostarczyć podstawowych informacji dla specjalistów pomocy technicznej, aby wiedzieć o rodzaju maszyny wirtualnej na platformie Azure.
Zażądaj
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
Odpowiedź
Uwaga
Odpowiedź jest ciągiem JSON. Następująca przykładowa odpowiedź jest dość drukowana w celu zapewnienia czytelności.
{
"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"
}
Przykład 5. Pobieranie środowiska platformy Azure, w którym jest uruchomiona maszyna wirtualna
Platforma Azure ma różne suwerenne chmury, takie jak Azure Government. Czasami potrzebne jest środowisko platformy Azure do podejmowania pewnych decyzji w czasie wykonywania. Poniższy przykład pokazuje, jak można osiągnąć to zachowanie.
Zażądaj
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
W chmurze i wartości środowiska platformy Azure są wymienione tutaj.
Chmura | Środowisko platformy Azure |
---|---|
Wszystkie ogólnie dostępne globalne regiony platformy Azure | AzurePublicCloud |
Azure Government | AzureUSGovernmentCloud |
Platforma Microsoft Azure obsługiwana przez firmę 21Vianet | AzureChinaCloud |
Azure (Niemcy) | AzureGermanCloud |
Przykład 6. Pobieranie informacji o sieci
Zażądaj
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"
}
]
}
Przykład 7. Pobieranie publicznego adresu IP
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"
Uwaga
- Jeśli chcesz pobrać informacje o usłudze IMDS dla publicznego adresu IP jednostki SKU w warstwie Standardowa , zapoznaj się z tematem Load Balancer Metadata API (Interfejs API metadanych modułu równoważenia obciążenia), aby uzyskać więcej informacji.
Dane testowane
Uzyskiwanie danych testowanych
Usługa IMDS pomaga zapewnić gwarancje, że dostarczone dane pochodzą z platformy Azure. Firma Microsoft podpisuje część tych informacji, aby potwierdzić, że obraz w witrynie Azure Marketplace jest tym, który jest uruchomiony na platformie Azure.
GET /metadata/attested/document
Parametry
Nazwisko | Wymagane/opcjonalnie | opis |
---|---|---|
api-version |
Wymagania | Wersja używana do obsługi żądania. |
nonce |
Opcjonalnie | 10-cyfrowy ciąg, który służy jako kryptograficzny nonce. Jeśli nie podano żadnej wartości, usługa IMDS używa bieżącego znacznika czasu UTC. |
Response
{
"encoding":"pkcs7",
"signature":"MIIEEgYJKoZIhvcNAQcCoIIEAzCCA/8CAQExDzANBgkqhkiG9w0BAQsFADCBugYJKoZIhvcNAQcBoIGsBIGpeyJub25jZSI6IjEyMzQ1NjY3NjYiLCJwbGFuIjp7Im5hbWUiOiIiLCJwcm9kdWN0IjoiIiwicHVibGlzaGVyIjoiIn0sInRpbWVTdGFtcCI6eyJjcmVhdGVkT24iOiIxMS8yMC8xOCAyMjowNzozOSAtMDAwMCIsImV4cGlyZXNPbiI6IjExLzIwLzE4IDIyOjA4OjI0IC0wMDAwIn0sInZtSWQiOiIifaCCAj8wggI7MIIBpKADAgECAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBBAUAMCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tMB4XDTE4MTEyMDIxNTc1N1oXDTE4MTIyMDIxNTc1NlowKzEpMCcGA1UEAxMgdGVzdHN1YmRvbWFpbi5tZXRhZGF0YS5henVyZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAML/tBo86ENWPzmXZ0kPkX5dY5QZ150mA8lommszE71x2sCLonzv4/UWk4H+jMMWRRwIea2CuQ5RhdWAHvKq6if4okKNt66fxm+YTVz9z0CTfCLmLT+nsdfOAsG1xZppEapC0Cd9vD6NCKyE8aYI1pliaeOnFjG0WvMY04uWz2MdAgMBAAGjYDBeMFwGA1UdAQRVMFOAENnYkHLa04Ut4Mpt7TkJFfyhLTArMSkwJwYDVQQDEyB0ZXN0c3ViZG9tYWluLm1ldGFkYXRhLmF6dXJlLmNvbYIQZ8VuSofHbJRAQNBNpiASdDANBgkqhkiG9w0BAQQFAAOBgQCLSM6aX5Bs1KHCJp4VQtxZPzXF71rVKCocHy3N9PTJQ9Fpnd+bYw2vSpQHg/AiG82WuDFpPReJvr7Pa938mZqW9HUOGjQKK2FYDTg6fXD8pkPdyghlX5boGWAMMrf7bFkup+lsT+n2tRw2wbNknO1tQ0wICtqy2VqzWwLi45RBwTGB6DCB5QIBATA/MCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBCwUAMA0GCSqGSIb3DQEBAQUABIGAld1BM/yYIqqv8SDE4kjQo3Ul/IKAVR8ETKcve5BAdGSNkTUooUGVniTXeuvDj5NkmazOaKZp9fEtByqqPOyw/nlXaZgOO44HDGiPUJ90xVYmfeK6p9RpJBu6kiKhnnYTelUk5u75phe5ZbMZfBhuPhXmYAdjc7Nmw97nx8NnprQ="
}
Podpis obiektu blob jest wersją dokumentu z podpisem pkcs7. Zawiera certyfikat używany do podpisywania wraz z pewnymi szczegółami specyficznymi dla maszyny wirtualnej.
W przypadku maszyn wirtualnych utworzonych przy użyciu usługi Azure Resource Manager dokument zawiera vmId
wartości , sku
, nonce
, subscriptionId
timeStamp
, do tworzenia i wygaśnięcia dokumentu oraz informacje o planie obrazu. Informacje o planie są wypełniane tylko dla obrazów witryny Azure Marketplace.
W przypadku maszyn wirtualnych utworzonych przy użyciu klasycznego modelu wdrażania należy wypełnić tylko vmId
elementy i subscriptionId
. Możesz wyodrębnić certyfikat z odpowiedzi i użyć go, aby potwierdzić, że odpowiedź jest prawidłowa i pochodzi z platformy Azure.
Zdekodowany dokument zawiera następujące pola:
Dane | opis | Wprowadzona wersja |
---|---|---|
licenseType |
Typ licencji dla Korzyść użycia hybrydowego platformy Azure. Dotyczy to tylko maszyn wirtualnych z obsługą usługi AHB. | 2020-09-01 |
nonce |
Ciąg, który można opcjonalnie podać z żądaniem. Jeśli nie nonce podano, używany jest bieżący uniwersalny znacznik czasu koordynowanego. |
2018-10-01 |
plan |
Plan obrazu witryny Azure Marketplace. Zawiera identyfikator planu (nazwę), obraz produktu lub ofertę (produkt) oraz identyfikator wydawcy (wydawca). | 2018-10-01 |
timestamp.createdOn |
Sygnatura czasowa UTC dla momentu utworzenia podpisanego dokumentu | 2018-20-01 |
timestamp.expiresOn |
Znacznik czasu UTC dla daty wygaśnięcia podpisanego dokumentu | 2018-10-01 |
vmId |
Unikatowy identyfikator maszyny wirtualnej | 2018-10-01 |
subscriptionId |
Subskrypcja platformy Azure dla maszyny wirtualnej | 2019-04-30 |
sku |
Określona jednostka SKU dla obrazu maszyny wirtualnej (koreluje z compute/sku właściwością z punktu końcowego metadanych wystąpienia [/metadata/instance ]) |
2019-11-01 |
Uwaga
W przypadku klasycznych maszyn wirtualnych (spoza usługi Azure Resource Manager) należy wypełnić tylko identyfikator vmId.
Przykładowy dokument:
{
"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"
}
Wskazówki dotyczące walidacji podpisów
Podczas sprawdzania poprawności podpisu należy potwierdzić, że podpis został utworzony przy użyciu certyfikatu z platformy Azure. Odbywa się to przez zweryfikowanie alternatywnej nazwy podmiotu certyfikatu (SAN).
Przykładowa sieć SAN DNS Name=eastus.metadata.azure.com, DNS Name=metadata.azure.com
Uwaga
Domena chmury publicznej i każdej suwerennej chmury będzie inna.
Chmura | Domena w sieci SAN |
---|---|
Wszystkie ogólnie dostępne globalne regiony platformy Azure | *.metadata.azure.com |
Azure Government | *.metadata.azure.us |
Platforma Azure obsługiwana przez firmę 21Vianet | *.metadata.azure.cn |
Azure (Niemcy) | *.metadata.microsoftazure.de |
Uwaga
Certyfikaty mogą nie mieć dokładnego dopasowania dla domeny. Z tego powodu weryfikacja certyfikacji powinna zaakceptować dowolną poddomenę (na przykład w regionach ogólnej dostępności chmury publicznej akceptują ).*.metadata.azure.com
Nie zalecamy przypinania certyfikatów dla certyfikatów pośrednich. Aby uzyskać więcej wskazówek, zobacz Przypinanie certyfikatu — przypinanie certyfikatu i usługi platformy Azure. Należy pamiętać, że usługa Azure Instance Metadata Service nie będzie oferować powiadomień o przyszłych zmianach urzędu certyfikacji. Zamiast tego należy postępować zgodnie ze scentralizowanym artykułem szczegóły urzędu certyfikacji platformy Azure, aby uzyskać wszystkie przyszłe aktualizacje.
Przykład 1. Sprawdzanie, czy maszyna wirtualna jest uruchomiona na platformie Azure
Dostawcy w witrynie Azure Marketplace chcą upewnić się, że ich oprogramowanie ma licencję na uruchamianie tylko na platformie Azure. Jeśli ktoś kopiuje dysk VHD do środowiska lokalnego, dostawca musi mieć możliwość wykrycia tego. Za pośrednictwem usług IMDS ci dostawcy mogą uzyskać podpisane dane, które gwarantują odpowiedź tylko z platformy Azure.
Uwaga
Ten przykład wymaga zainstalowania narzędzia jq.
Weryfikacja
# 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)
Sprawdź, czy podpis pochodzi z platformy Microsoft Azure i sprawdza łańcuch certyfikatów pod kątem błędów.
# 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
W nonce
podpisanym dokumencie można porównać, jeśli w początkowym żądaniu podano nonce
parametr.
Tożsamość zarządzana
Tożsamość zarządzana przypisana przez system może być włączona na maszynie wirtualnej. Do maszyny wirtualnej można również przypisać co najmniej jedną tożsamość zarządzaną przypisaną przez użytkownika. Następnie można żądać tokenów dla tożsamości zarządzanych z usługi IMDS. Użyj tych tokenów do uwierzytelniania w innych usługach platformy Azure, takich jak Azure Key Vault.
Aby uzyskać szczegółowe instrukcje włączania tej funkcji, zobacz Uzyskiwanie tokenu dostępu.
Metadane modułu równoważenia obciążenia
W przypadku umieszczania wystąpień maszyny wirtualnej lub zestawu maszyn wirtualnych za usługą Azure usługa Load Balancer w warstwie Standardowa można użyć usługi IMDS do pobierania metadanych związanych z modułem równoważenia obciążenia i wystąpieniami. Aby uzyskać więcej informacji, zobacz Pobieranie informacji o module równoważenia obciążenia.
Zaplanowane zdarzenia
Stan zaplanowanych zdarzeń można uzyskać przy użyciu usługi IMDS. Następnie użytkownik może określić zestaw akcji do uruchomienia na tych zdarzeniach. Aby uzyskać więcej informacji, zobacz Zaplanowane zdarzenia dla systemu Linux lub Zaplanowane zdarzenia dla systemu Windows.
Przykładowy kod w różnych językach
W poniższej tabeli wymieniono przykłady wywoływania usługi IMDS przy użyciu różnych języków wewnątrz maszyny wirtualnej:
Błędy i debugowanie
Jeśli nie znaleziono elementu danych lub źle sformułowane żądanie, usługa Instance Metadata Service zwraca standardowe błędy HTTP. Na przykład:
Kod stanu HTTP | Przyczyna |
---|---|
200 OK |
Żądanie zakończyło się pomyślnie. |
400 Bad Request |
Brak Metadata: true nagłówka lub brakującego parametru format=json podczas wykonywania zapytania o węzeł liścia |
404 Not Found |
Żądany element nie istnieje |
405 Method Not Allowed |
Metoda HTTP (czasownik) nie jest obsługiwana w punkcie końcowym. |
410 Gone |
Ponów próbę po pewnym czasie przez maksymalnie 70 sekund |
429 Too Many Requests |
Przekroczono limity szybkości interfejsu API |
500 Service Error |
Ponów próbę po pewnym czasie |
Często zadawane pytania
Otrzymuję błąd
400 Bad Request, Required metadata header not specified
. Co to oznacza?- Usługa IMDS wymaga przekazania nagłówka
Metadata: true
w żądaniu. Przekazanie tego nagłówka w wywołaniu REST umożliwia dostęp do usług IMDS.
- Usługa IMDS wymaga przekazania nagłówka
Dlaczego nie otrzymuję informacji o obliczeniach dla mojej maszyny wirtualnej?
- Obecnie usługa IMDS obsługuje tylko wystąpienia utworzone za pomocą usługi Azure Resource Manager.
Maszyna wirtualna została utworzona za pośrednictwem usługi Azure Resource Manager jakiś czas temu. Dlaczego nie widzę informacji o metadanych obliczeniowych?
- Jeśli maszyna wirtualna została utworzona po wrześniu 2016 r., dodaj tag , aby rozpocząć wyświetlanie metadanych obliczeniowych. Jeśli maszyna wirtualna została utworzona przed wrześniem 2016 r., dodaj lub usuń rozszerzenia lub dyski danych do wystąpienia maszyny wirtualnej w celu odświeżenia metadanych.
Czy dane użytkownika są takie same jak dane niestandardowe?
- Dane użytkownika oferują podobne funkcje do danych niestandardowych, co umożliwia przekazywanie własnych metadanych do wystąpienia maszyny wirtualnej. Różnica polega na tym, że dane użytkowników są pobierane za pośrednictwem usługi IMDS i są trwałe przez cały okres istnienia wystąpienia maszyny wirtualnej. Istniejąca funkcja danych niestandardowych będzie nadal działać zgodnie z opisem w tym artykule. Można jednak pobierać dane niestandardowe tylko za pośrednictwem lokalnego folderu systemowego, a nie za pośrednictwem usługi IMDS.
Dlaczego nie widzę wszystkich danych wypełnionych dla nowej wersji?
- Jeśli maszyna wirtualna została utworzona po wrześniu 2016 r., dodaj tag , aby rozpocząć wyświetlanie metadanych obliczeniowych. Jeśli maszyna wirtualna została utworzona przed wrześniem 2016 r., dodaj lub usuń rozszerzenia lub dyski danych do wystąpienia maszyny wirtualnej w celu odświeżenia metadanych.
Dlaczego występuje błąd
500 Internal Server Error
lub410 Resource Gone
?- Ponów żądanie. Aby uzyskać więcej informacji, zobacz Obsługa błędów przejściowych. Jeśli problem będzie się powtarzać, utwórz problem pomocy technicznej w witrynie Azure Portal dla maszyny wirtualnej.
Czy będzie to działać w przypadku wystąpień zestawu skalowania?
- Tak, usługa IMDS jest dostępna dla wystąpień zestawu skalowania.
Zaktualizowałem tagi w zestawach skalowania, ale nie są one wyświetlane w wystąpieniach (w przeciwieństwie do maszyn wirtualnych z pojedynczym wystąpieniem). Czy robię coś złego?
- Obecnie tagi dla zestawów skalowania są wyświetlane tylko dla maszyny wirtualnej podczas ponownego uruchamiania, ponownego tworzenia obrazu lub zmiany dysku na wystąpienie.
Dlaczego nie widzę informacji o jednostce SKU dla mojej maszyny wirtualnej w
instance/compute
szczegółach?- W przypadku obrazów niestandardowych utworzonych w witrynie Azure Marketplace platforma Azure nie przechowuje informacji o jednostce SKU dla obrazu niestandardowego i szczegółów dla wszystkich maszyn wirtualnych utworzonych na podstawie obrazu niestandardowego. Jest to projektowane i dlatego nie są uwidośmione w szczegółach maszyny wirtualnej
instance/compute
.
- W przypadku obrazów niestandardowych utworzonych w witrynie Azure Marketplace platforma Azure nie przechowuje informacji o jednostce SKU dla obrazu niestandardowego i szczegółów dla wszystkich maszyn wirtualnych utworzonych na podstawie obrazu niestandardowego. Jest to projektowane i dlatego nie są uwidośmione w szczegółach maszyny wirtualnej
Dlaczego moje żądanie przekroczyło limit czasu (lub nie można nawiązać połączenia) dla połączenia z usługą?
Wywołania metadanych muszą być wykonywane z podstawowego adresu IP przypisanego do podstawowej karty sieciowej maszyny wirtualnej. Ponadto w przypadku zmiany tras w lokalnej tabeli routingu maszyny wirtualnej musi istnieć trasa dla adresu 169.254.169.254/32.
Zrzuć lokalną tabelę routingu i poszukaj wpisu IMDS. Na przykład:
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) ...
Sprawdź, czy istnieje trasa dla
169.254.169.254
elementu i zanotuj odpowiedni interfejs sieciowy (na przykład172.16.69.7
).Zrzuć konfigurację interfejsu i znajdź interfejs, który odpowiada interfejsowi, do którego odwołuje się tabela routingu, zwracając uwagi na adres MAC (fizyczny).
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) ...
Upewnij się, że interfejs odpowiada podstawowej karcie sieciowej i podstawowemu adresowi IP maszyny wirtualnej. Podstawową kartę sieciową i adres IP można znaleźć, przeglądając konfigurację sieci w witrynie Azure Portal lub przeglądając ją za pomocą interfejsu wiersza polecenia platformy Azure. Zanotuj prywatne adresy IP (i adres MAC, jeśli używasz interfejsu wiersza polecenia). Oto przykład interfejsu wiersza polecenia programu PowerShell:
$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
Jeśli nie są one zgodne, zaktualizuj tabelę routingu, tak aby podstawowa karta sieciowa i adres IP były docelowe.
Klastrowanie trybu failover w systemie Windows Server
Podczas wykonywania zapytań dotyczących usługi IMDS z klastrem trybu failover czasami konieczne jest dodanie trasy do tabeli routingu. Oto, jak to zrobić:
Otwórz wiersz polecenia z uprawnieniami administratora.
Uruchom następujące polecenie i zanotuj adres interfejsu dla lokalizacji docelowej sieci (
0.0.0.0
) w tabeli routingu IPv4.
route print
Uwaga
Poniższe przykładowe dane wyjściowe pochodzą z maszyny wirtualnej z systemem Windows Server z włączonym klastrem trybu failover. Dla uproszczenia dane wyjściowe zawierają tylko tabelę routingu 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
Uruchom następujące polecenie i użyj adresu interfejsu dla lokalizacji docelowej sieci (
0.0.0.0
), który jest (10.0.1.10
) w tym przykładzie.route add 169.254.169.254/32 10.0.1.10 metric 1 -p
Pomoc techniczna
Jeśli nie możesz uzyskać odpowiedzi na metadane po wielu próbach, możesz utworzyć problem z pomocą techniczną w witrynie Azure Portal.
Opinia o produkcie
Opinie i pomysły dotyczące produktu można przekazać do naszego kanału opinii użytkowników w obszarze Usługa metadanych wystąpienia maszyn > wirtualnych tutaj