Azure-Instanzmetadatendienst
Gilt für: ✔️ Linux-VMs ✔️ Windows-VMs ✔️ Flexible Skalierungsgruppen
Der Azure Instance Metadata Service (IMDS) stellt Informationen zu Instanzen virtueller Computer bereit, die derzeit ausgeführt werden. Sie können ihn zur Verwaltung und Konfiguration Ihrer virtuellen Computer verwenden. Hierzu gehören die SKU, der Speicher, Netzwerkkonfigurationen und bevorstehende Wartungsereignisse. Eine umfassende Liste der verfügbaren Daten finden Sie in der Übersicht über die Endpunktkategorien.
Der IMDS ist für das Ausführen von Instanzen virtueller Computer (VMs) und Skalierungsgruppeninstanzen verfügbar. Alle Endpunkte unterstützen VMs, die mit Azure Resource Manager erstellt und verwaltet werden. Nur die Kategorie „attested“ und der Teil „network“ der Kategorie „instance“ unterstützen VMs, die mithilfe des klassischen Bereitstellungsmodells erstellt wurden. Beim Endpunkt der Kategorie „attested“ erfolgt dies nur in begrenztem Umfang.
IMDS ist eine REST-API, die unter einer bekannten, nicht routingfähigen IP-Adresse (169.254.169.254
) verfügbar ist. Sie können nur vom virtuellen Computer aus darauf zugreifen. Die Kommunikation zwischen dem virtuellen Computer und IMDS verlässt niemals den Host.
Die HTTP-Clients sollten bei Abfragen von IMDS Webproxys innerhalb des virtuellen Computers umgehen und 169.254.169.254
gleich behandeln wie 168.63.129.16
.
Verwendung
Zugreifen auf den Azure Instance Metadata Service
Um auf den IMDS zuzugreifen, erstellen Sie eine VM über Azure Resource Manager oder das Azure-Portal, und verwenden Sie die folgenden Beispiele. Weitere Beispiele finden Sie unter Azure Instance Metadata Samples.
Hier finden Sie ein Codebeispiel zum Abrufen aller Metadaten für eine Instanz. Für den Zugriff auf eine bestimmte Datenquelle finden Sie unter Endpunktkategorien eine Übersicht über alle verfügbaren Features.
Anforderung
Wichtig
In diesem Beispiel werden Proxys umgangen. Beim Abfragen von IMDS müssen Sie Proxys umgehen. Weitere Informationen finden Sie unter Proxys.
Hinweis
IMDS-Anforderungen müssen mithilfe der primären NIC und der primären IP-Adresse der VM gesendet werden. Darüber hinaus muss DHCP aktiviert sein.
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
erfordert PowerShell V6 oder höher. Beispiele für ältere PowerShell-Versionen finden Sie in unserem Repository für Beispiele.
Antwort
Hinweis
Die Antwort stellt eine JSON-Zeichenfolge dar. Die folgende Beispielantwort wird zur besseren Lesbarkeit im Schöndruck gedruckt.
{
"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"
}]
}
}
Sicherheit und Authentifizierung
Auf den Instance Metadata Service kann nur innerhalb einer ausgeführten VM-Instanz an einer nicht routingfähigen IP-Adresse zugegriffen werden. VMs können nur mit ihren eigenen Metadaten/Funktionen interagieren. Die API ist auf HTTP beschränkt und verlässt niemals den Host.
Um sicherzustellen, dass Anforderungen direkt für IMDS vorgesehen sind und keine unbeabsichtigten oder unerwünschten Umleitungen von Anforderungen erfolgen, müssen Anforderungen folgende Bedingungen erfüllen:
- Sie müssen den Header
Metadata: true
enthalten. - Sie dürfen nicht den Header
X-Forwarded-For
enthalten.
Jede Anforderung, die nicht beide Voraussetzungen erfüllt, wird vom Dienst abgelehnt.
Wichtig
IMDS ist kein Kanal für vertrauliche Daten. Die API ist nicht authentifiziert und ist für alle Prozesse auf der VM geöffnet. Informationen, die über diesen Dienst verfügbar gemacht werden, sollten als freigegebene Informationen für alle Anwendungen betrachtet werden, die in der VM ausgeführt werden.
Wenn es nicht erforderlich ist, dass jeder Prozess auf der VM auf den IMDS-Endpunkt zugreift, können Sie lokale Firewallregeln festlegen, um den Zugriff zu beschränken. Wenn z. B. nur ein bekannter Systemdienst auf Instance Metadata Service zugreifen muss, können Sie eine Firewallregel auf dem IMDS-Endpunkt festlegen, die nur den spezifischen Prozessen den Zugriff gestattet oder den restlichen Prozessen den Zugriff verweigert.
Proxys
IMDS ist nicht für die Verwendung hinter einem Proxy vorgesehen. Dies wird nicht unterstützt. Die meisten HTTP-Clients bieten Ihnen die Möglichkeit, Proxys für Anforderungen zu deaktivieren. Diese Funktionalität muss bei der Kommunikation mit IMDS verwendet werden. Weitere Informationen finden Sie in der Dokumentation zu dem Client.
Wichtig
Auch wenn Sie die Proxykonfiguration in Ihrer Umgebung nicht kennen, müssen Sie dennoch alle Clientproxy-Standardeinstellungen außer Kraft setzen. Proxykonfigurationen können automatisch ermittelt werden. Falls solche Konfigurationen nicht umgangen werden, können erhebliche Probleme auftreten, wenn die Konfiguration des Computers in Zukunft geändert wird.
Ratenbegrenzung
Im Allgemeinen sind Anforderungen an IMDS auf fünf Anforderungen pro Sekunde (pro VM) beschränkt. Anforderungen, die diesen Schwellenwert überschreiten, werden mit der Antwort 429 abgelehnt. Anforderungen an die Kategorie Verwaltete Identität sind auf 20 Anforderungen pro Sekunde und 5 gleichzeitige Anforderungen beschränkt (pro VM).
HTTP-Verben
Die folgenden HTTP-Verben werden derzeit unterstützt:
Verb | BESCHREIBUNG |
---|---|
GET |
Abrufen der angeforderten Ressource |
Parameter
Endpunkte unterstützen möglicherweise erforderliche und/oder optionale Parameter. Weitere Informationen finden Sie unter Schema und in der Dokumentation für den jeweiligen Endpunkt.
Abfrageparameter
IMDS-Endpunkte unterstützen HTTP-Abfragezeichenfolgenparameter. Zum Beispiel:
http://169.254.169.254/metadata/instance/compute?api-version=2021-01-01&format=json
Gibt die Parameter an:
Name | Wert |
---|---|
api-version |
2021-01-01 |
format |
json |
Anforderungen mit doppelten Abfrageparameternamen werden abgelehnt.
Routenparameter
Bei einigen Endpunkten, die größere JSON-Blobs zurückgeben, wird das Anfügen von Routenparametern an den Anforderungsendpunkt unterstützt, um nach einer Teilmenge der Antwort zu filtern:
http://169.254.169.254/metadata/<endpoint>/[<filter parameter>/...]?<query parameters>
Die Parameter entsprechen den Indizes/Schlüsseln, die zum Durchlaufen des JSON-Objekts verwendet werden, wenn Sie mit einer analysierten Darstellung interagieren.
/metadata/instance
gibt z. B. das JSON-Objekt zurück:
{
"compute": { ... },
"network": {
"interface": [
{
"ipv4": {
"ipAddress": [{
"privateIpAddress": "10.144.133.132",
"publicIpAddress": ""
}],
"subnet": [{
"address": "10.144.133.128",
"prefix": "26"
}]
},
"ipv6": {
"ipAddress": [
]
},
"macAddress": "0011AAFFBB22"
},
...
]
}
}
Wenn Sie die Antwort nach der compute-Eigenschaft filtern möchten, senden Sie die Anforderung:
http://169.254.169.254/metadata/instance/compute?api-version=<version>
Wenn Sie nach einer geschachtelten Eigenschaft oder einem bestimmten Arrayelement filtern möchten, fügen Sie Schlüssel an:
http://169.254.169.254/metadata/instance/network/interface/0?api-version=<version>
filtert nach dem ersten Element in der Network.interface
-Eigenschaft und gibt Folgendes zurück:
{
"ipv4": {
"ipAddress": [{
"privateIpAddress": "10.144.133.132",
"publicIpAddress": ""
}],
"subnet": [{
"address": "10.144.133.128",
"prefix": "26"
}]
},
"ipv6": {
"ipAddress": [
]
},
"macAddress": "0011AAFFBB22"
}
Hinweis
Beim Filtern nach einem Blattknoten kann format=json
nicht verwendet werden. Für diese Abfragen muss format=text
explizit angegeben werden, da das Standardformat JSON ist.
Schema
Datenformat
Standardmäßig gibt der IMDS Daten im JSON-Format (Content-Type: application/json
) zurück. Endpunkte, die das Filtern von Antworten unterstützen (siehe Routenparameter), unterstützen jedoch auch das Format text
.
Um auf ein nicht standardmäßiges Antwortformat zuzugreifen, geben Sie das angeforderte Format als QueryString-Parameter in der Anforderung an. Beispiel:
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance?api-version=2017-08-01&format=text"
In JSON-Antworten sind alle Primitiven vom Typ string
, und fehlende oder nicht anwendbare Werte sind immer enthalten, werden jedoch auf eine leere Zeichenfolge festgelegt.
Versionsverwaltung
Der Instance Metadata Service (IMDS) verwendet Versionsangaben, und die Angabe der API-Version in der HTTP-Anforderung ist zwingend erforderlich. Die einzige Ausnahme von dieser Anforderung ist der Endpunkt Versionen, der zum dynamischen Abrufen der verfügbaren API-Versionen verwendet werden kann.
Wenn neuere Versionen hinzugefügt werden, kann auf ältere Versionen aus Kompatibilitätsgründen weiterhin zugegriffen werden, falls Ihre Skripts von bestimmten Datenformaten abhängig sind.
Wenn Sie keine Version angeben, erhalten Sie eine Fehlermeldung mit einer Liste der neuesten unterstützten Versionen:
{
"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"
]
}
Unterstützte API-Versionen
Hinweis
Version 2023-11-15 wird noch eingeführt; sie ist möglicherweise in einigen Regionen nicht verfügbar.
- 2023-11-15
- 2023-07-01
- 2021-12-13
- 15.11.2021
- 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
- 11.03.2019
- 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
Eine vollständige Swagger-Definition für IMDS finden Sie unter: https://github.com/Azure/azure-rest-api-specs/blob/main/specification/imds/data-plane/readme.md
Regionale Verfügbarkeit
Der Dienst ist in allen Azure-Clouds allgemein verfügbar.
Stammendpunkt
Der Stammendpunkt lautet http://169.254.169.254/metadata
.
Endpunktkategorien
Die IMDS-API enthält mehrere Endpunktkategorien, die verschiedene Datenquellen darstellen, die jeweils einen oder mehrere Endpunkte enthalten. Ausführlichere Informationen finden Sie in der jeweiligen Kategorie.
Kategoriestamm | BESCHREIBUNG | Eingeführt in Version |
---|---|---|
/metadata/attested |
Siehe Bestätigte Daten | 2018-10-01 |
/metadata/identity |
Siehe Verwaltete Identität | 2018-02-01 |
/metadata/instance |
Siehe Instanzmetadaten | 2017-04-02 |
/metadata/loadbalancer |
Weitere Informationen finden Sie unter Abrufen von Load Balancer Metadaten über IMDS | 2020-10-01 |
/metadata/scheduledevents |
Siehe Geplante Ereignisse | 2017-08-01 |
/metadata/versions |
Siehe Versionen | – |
Versionen
Auflisten von API-Versionen
Gibt den Satz unterstützter API-Versionen zurück.
GET /metadata/versions
Parameter
Keine (dieser Endpunkt ist ohne Versionsangabe)
Antwort
{
"apiVersions": [
"2017-03-01",
"2017-04-02",
...
]
}
Instanzmetadaten
Abrufen von VM-Metadaten
Macht die wichtigen Metadaten für die VM-Instanz verfügbar, einschließlich Compute, Netzwerk und Speicher.
GET /metadata/instance
Parameter
Name | erforderlich/optional | Beschreibung |
---|---|---|
api-version |
Erforderlich | Die zum Durchführen der Anforderung verwendete Version |
format |
Optional* | Das Format (json oder text ) der Antwort. *Hinweis: Ist möglicherweise erforderlich, wenn Anforderungsparameter verwendet werden. |
Dieser Endpunkt unterstützt das Filtern von Antworten über Routenparameter.
Antwort
{
"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"
}]
}
}
Aufschlüsselung des Schemas:
Compute
Daten | BESCHREIBUNG | Eingeführt in Version |
---|---|---|
azEnvironment |
Azure-Umgebung, in der die VM ausgeführt wird | 2018-10-01 |
additionalCapabilities.hibernationEnabled |
Gibt an, ob der Ruhezustand auf der VM aktiviert ist. | 2021-11-01 |
customData |
Dieses Feature ist in IMDS veraltet und wurde deaktiviert. Es wurde durch userData ersetzt |
2019-02-01 |
evictionPolicy |
Hier wird festgelegt, wie eine Spot-VM entfernt wird. | 2020-12-01 |
extendedLocation.type |
Typ des erweiterten Standorts der VM. | 2021-03-01 |
extendedLocation.name |
Name des erweiterten Standorts der VM. | 2021-03-01 |
host.id |
Der Name des Hosts der VM. Beachten Sie, dass eine VM entweder über einen Host oder über eine hostGroup verfügt, aber nicht über beides. | 15.11.2021 |
hostGroup.id |
Der Name der hostGroup der VM. Beachten Sie, dass eine VM entweder über einen Host oder über eine hostGroup verfügt, aber nicht über beides. | 15.11.2021 |
isHostCompatibilityLayerVm |
Gibt an, ob die VM auf der Hostkompatibilitätsebene ausgeführt wird | 2020-06-01 |
licenseType |
Typ der Lizenz für Azure-Hybridvorteil. Dies ist nur für AHB-aktivierte VMs verfügbar. | 2020-09-01 |
location |
Azure-Region, in der die VM ausgeführt wird | 2017-04-02 |
name |
Name des virtuellen Computers | 2017-04-02 |
offer |
Angebotsinformationen für das VM-Image, diese sind nur für Images vorhanden, die über den Azure-Imagekatalog bereitgestellt werden | 2017-04-02 |
osProfile.adminUsername |
Gibt den Namen des Administratorkontos an. | 2020-07-15 |
osProfile.computerName |
Gibt den Namen des Computers an. | 2020-07-15 |
osProfile.disablePasswordAuthentication |
Gibt an, ob die Kennwortauthentifizierung deaktiviert ist. Dies ist nur für Linux-VMs verfügbar. | 2020-10-01 |
osType |
Linux oder Windows | 2017-04-02 |
physicalZone |
Physische Zone des virtuellen Computers | 2023-11-15 |
placementGroupId |
Platzierungsgruppe Ihrer Skalierungsgruppe | 2017-08-01 |
plan |
Der Plan mit Name, Produkt und Herausgeber für einen virtuellen Computer, wenn es sich um ein Azure Marketplace-Image handelt | 2018-04-02 |
platformUpdateDomain |
Updatedomäne, in der die VM ausgeführt wird | 2017-04-02 |
platformFaultDomain |
Fehlerdomäne, in der die VM ausgeführt wird | 2017-04-02 |
platformSubFaultDomain |
Untere Fehlerdomäne, in der der virtuelle Computer ausgeführt wird (falls zutreffend) | 2021-10-01 |
priority |
Dies ist die Priorität der VM. Weitere Informationen finden Sie unter Spot-VM. | 2020-12-01 |
provider |
Anbieter des virtuellen Computers | 2018-10-01 |
publicKeys |
Sammlung von öffentlichen Schlüsseln, dem virtuellen Computer und den entsprechenden Pfaden zugewiesen | 2018-04-02 |
publisher |
Herausgeber des VM-Images | 2017-04-02 |
resourceGroupName |
Ressourcengruppe für den virtuellen Computer | 2017-08-01 |
resourceId |
Die vollqualifizierte ID der Ressource | 11.03.2019 |
sku |
Spezifische SKU für das VM-Image | 2017-04-02 |
securityProfile.secureBootEnabled |
Gibt an, ob UEFI Secure Boot auf der VM aktiviert ist | 2020-06-01 |
securityProfile.virtualTpmEnabled |
Gibt an, ob das virtuelle Trusted Platform Module (TPM) auf der VM aktiviert ist | 2020-06-01 |
securityProfile.encryptionAtHost |
Gibt an, ob Verschlüsselung beim Host auf der VM aktiviert ist. | 2021-11-01 |
securityProfile.securityType |
Gibt an, ob es sich bei der VM um eine Vertrauenswürdige VM oder eine Vertrauliche VM handelt. | 2021-12-13 |
storageProfile |
Siehe „Speicherprofil“ weiter unten | 2019-06-01 |
subscriptionId |
Azure-Abonnement für den virtuellen Computer | 2017-08-01 |
tags |
Tags für den virtuellen Computer | 2017-08-01 |
tagsList |
Tags, die zur einfacheren programmgesteuerten Analyse als JSON-Arrays formatiert sind | 2019-06-04 |
userData |
Der Datensatz, der beim Erstellen des virtuellen Computers zur Verwendung während oder nach der Bereitstellung (Base64-codiert) angegeben wurde | 2021-01-01 |
version |
Version des VM-Image | 2017-04-02 |
virtualMachineScaleSet.id |
Die ID der mit flexibler Orchestrierung erstellten VM-Skalierungsgruppe, zu der der virtuelle Computer gehört. Dieses Feld ist für VM-Skalierungsgruppen, die mit einheitlicher Orchestrierung erstellt wurden, nicht verfügbar. | 2021-03-01 |
vmId |
Der eindeutiger Bezeichner für die VM. Der Blog, auf den verwiesen wird, eignet sich nur für VMs, die SMBIOS < 2.6 verwenden. Für VMs, die SMBIOS >= 2.6 verwenden, wird die UUID von DMI im Little-Endian-Format angezeigt, daher ist es nicht erforderlich, Bytes zu wechseln. | 2017-04-02 |
vmScaleSetName |
VM-Skalierungsgruppenname Ihrer Skalierungsgruppe | 2017-12-01 |
vmSize |
Größe des virtuellen Computers | 2017-04-02 |
zone |
Verfügbarkeitszone Ihres virtuellen Computers | 2017-12-01 |
† Diese Version ist noch nicht vollständig verfügbar und wird möglicherweise nicht in allen Regionen unterstützt.
Speicherprofil
Das Speicherprofil eines virtuellen Computers ist in drei Kategorien unterteilt: Imagereferenz, Betriebssystemdatenträger und Datenträger sowie ein zusätzliches Objekt für den lokalen temporären Datenträger.
Das Imagereferenzobjekt enthält die folgenden Informationen zum Betriebssystemimage. Beachten Sie, dass ein Image entweder von der Plattform, dem Marketplace, dem Communitykatalog oder dem direkten freigegebenen Katalog stammen könnte, aber nicht von beiden:
Daten | BESCHREIBUNG | Eingeführt in Version |
---|---|---|
id |
Ressourcen-ID | 2019-06-01 |
offer |
Angebot des Plattform- oder Marketplace-Images | 2019-06-01 |
publisher |
Herausgeber*in des Plattform- oder Marketplace-Images | 2019-06-01 |
sku |
SKU des Plattform- oder Marketplace-Images | 2019-06-01 |
version |
Version des Images | 2019-06-01 |
communityGalleryImageId |
Ressourcen-ID des Communityimages, andernfalls leer | 2023-07-01 |
sharedGalleryImageId |
Ressourcen-ID oder direktes freigegebenes Image, andernfalls leer | 2023-07-01 |
exactVersion |
Version der Community oder des direkten freigegebenen Images | 2023-07-01 |
Das Betriebssystemdatenträgerobjekt enthält die folgenden Informationen zum Betriebssystemdatenträger, der vom virtuellen Computer verwendet wird:
Daten | BESCHREIBUNG |
---|---|
caching |
Cachinganforderungen |
createOption |
Informationen zur Erstellung des virtuellen Computers |
diffDiskSettings |
Einstellungen für kurzlebige Datenträger |
diskSizeGB |
Größe des Datenträgers in GB |
image |
Virtuelle Festplatte des Quellenbenutzerimages |
managedDisk |
Parameter für verwaltete Datenträger |
name |
Name des Datenträgers |
vhd |
Virtuelle Festplatte |
writeAcceleratorEnabled |
Gibt an, ob writeAccelerator für den Datenträger aktiviert ist. |
Das Datenträgerarray für Daten enthält eine Liste der Datenträger für Daten, die an den virtuellen Computer angefügt sind. Jedes Datenträgerobjekt enthält die folgenden Informationen:
Daten | BESCHREIBUNG | Eingeführt in Version |
---|---|---|
bytesPerSecondThrottle * |
Kontingent für Lese-/Schreibvorgänge auf dem Datenträger in Byte | 2021-05-01 |
caching |
Cachinganforderungen | 2019-06-01 |
createOption |
Informationen zur Erstellung des virtuellen Computers | 2019-06-01 |
diffDiskSettings |
Einstellungen für kurzlebige Datenträger | 2019-06-01 |
diskCapacityBytes * |
Größe des Datenträgers in Byte | 2021-05-01 |
diskSizeGB |
Größe des Datenträgers in GB | 2019-06-01 |
encryptionSettings |
Verschlüsselungseinstellungen für den Datenträger | 2019-06-01 |
image |
Virtuelle Festplatte des Quellenbenutzerimages | 2019-06-01 |
isSharedDisk * |
Gibt an, ob der Datenträger von mehreren Ressourcen gemeinsam genutzt wird | 2021-05-01 |
isUltraDisk |
Gibt an, ob der Datenträger vom Typ „Disk Ultra“ ist | 2021-05-01 |
lun |
Logische Gerätenummer des Datenträgers | 2019-06-01 |
managedDisk |
Parameter für verwaltete Datenträger | 2019-06-01 |
name |
Name des Datenträgers | 2019-06-01 |
opsPerSecondThrottle * |
Kontingent für Lese-/Schreibvorgänge auf dem Datenträger in IOPS | 2021-05-01 |
osType |
Typ des Betriebssystems, das auf dem Datenträger enthalten ist | 2019-06-01 |
vhd |
Virtuelle Festplatte | 2019-06-01 |
writeAcceleratorEnabled |
Gibt an, ob writeAccelerator für den Datenträger aktiviert ist. | 2019-06-01 |
*Diese Felder werden nur bei Ultra Disks ausgefüllt. Für Nicht-Ultra Disks sind es leere Zeichenfolgen.
Das Verschlüsselungseinstellungsblob enthält Daten zur Verschlüsselung des Datenträgers (wenn er verschlüsselt ist):
Daten | BESCHREIBUNG | Eingeführt in Version |
---|---|---|
diskEncryptionKey.sourceVault.id |
Der Speicherort des Datenträgerverschlüsselungsschlüssels. | 2021-11-01 |
diskEncryptionKey.secretUrl |
Der Speicherort des Geheimnisses. | 2021-11-01 |
keyEncryptionKey.sourceVault.id |
Der Speicherort des Schlüsselverschlüsselungsschlüssels. | 2021-11-01 |
keyEncryptionKey.keyUrl |
Der Speicherort des Schlüssels. | 2021-11-01 |
Das Ressourcendatenträgerobjekt enthält die Größe (in Kilobyte) des lokalen temporären Datenträgers, der an den virtuellen Computer angefügt ist (sofern vorhanden). Wenn kein lokaler temporärer Datenträger für die VM vorhanden ist, lautet dieser Wert 0.
Daten | BESCHREIBUNG | Eingeführt in Version |
---|---|---|
resourceDisk.size |
Größe des lokalen temporären Datenträgers für den virtuellen Computer (in KB) | 2021-02-01 |
Network
Daten | BESCHREIBUNG | Eingeführt in Version |
---|---|---|
ipv4.privateIpAddress |
Lokale IPv4-Adresse der VM | 2017-04-02 |
ipv4.publicIpAddress |
Öffentliche IPv4-Adresse der VM | 2017-04-02 |
subnet.address |
Subnetzadresse der VM | 2017-04-02 |
subnet.prefix |
Subnetzpräfix, Beispiel 24 | 2017-04-02 |
ipv6.ipAddress |
Lokale IPv6-Adresse der VM | 2017-04-02 |
macAddress |
VM-Mac-Adresse | 2017-04-02 |
Hinweis
Es ist nicht garantiert, dass die vom Netzwerkaufruf zurückgegebenen NICs in Ordnung sind.
Abrufen von Benutzerdaten
Beim Erstellen eines neuen virtuellen Computers können Sie einen Datensatz angeben, der während oder nach der Bereitstellung des virtuellen Computers verwendet werden soll, und ihn über IMDS abrufen. Überprüfen Sie hier die Erfahrungen mit den End-to-End-Daten der Benutzer.
Verwenden Sie zum Einrichten von Benutzerdaten diese Schnellstartvorlage. Das folgende Beispiel zeigt, wie diese Daten über IMDS abgerufen werden. Dieses Feature ist ab der Version 2021-01-01
freigegeben.
Hinweis
Sicherheitshinweis: IMDS ist für alle Anwendungen auf der VM geöffnet, vertrauliche Daten sollten nicht in den Benutzerdaten gespeichert werden.
$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))
Beispiel 1: Nachverfolgen einer in Azure ausgeführten VM
Als Dienstanbieter müssen Sie möglicherweise die Anzahl von VMs nachverfolgen, auf denen Ihre Software ausgeführt wird, oder benötigen Agents, die die Eindeutigkeit der VM überwachen müssen. Um eine eindeutige ID für eine VM abrufen zu können, verwenden Sie das Feld vmId
des Instanzmetadatendiensts.
Anforderung
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"
Antwort
5c08b38e-4d57-4c23-ac45-aca61037f084
Beispiel 2: Platzierung unterschiedlicher Datenreplikate
In bestimmten Szenarien ist die Platzierung unterschiedlicher Datenreplikate von primärer Bedeutung. Beispielsweise müssen Sie bei der HDFS-Replikatplatzierung oder bei der Containerplatzierung über einen Orchestrator die platformFaultDomain
und die platformUpdateDomain
kennen, auf denen die VM ausgeführt wird.
Sie können auch Verfügbarkeitszonen für die Instanzen nutzen, um diese Entscheidungen zu treffen.
Sie können diese Daten direkt über den IMDS abfragen.
Anforderung
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"
Antwort
0
Beispiel 3: Abrufen von VM-Tags
VM-Tags sind in der Instanz-API unter dem Instanz/Compute/Tags-Endpunkt enthalten. Möglicherweise wurden Tags auf Ihre Azure-VM angewendet, um sie logisch in einer Taxonomie zu strukturieren. Die einer VM zugewiesenen Tags können mithilfe der Abfrage unten abgerufen werden.
Anforderung
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"
Antwort
Department:IT;ReferenceNumber:123456;TestStatus:Pending
Das tags
Feld ist eine Zeichenfolge, in der die Tags durch Semikolons getrennt sind. Diese Ausgabe kann ein Problem darstellen, wenn in den Tags Semikolons verwendet werden. Wenn ein Parser geschrieben wurde, um die Tags programmgesteuert zu extrahieren, sollten Sie auf das Feld tagsList
zurückgreifen. Das Feld tagsList
ist ein JSON-Array ohne Trennzeichen und folglich einfacher zu analysieren. Die einer VM zugewiesene tagsList kann mithilfe der Abfrage unten abgerufen werden.
Anforderung
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
Antwort
{
"value": [
{
"name": "Department",
"value": "IT"
},
{
"name": "ReferenceNumber",
"value": "123456"
},
{
"name": "TestStatus",
"value": "Pending"
}
],
"Count": 3
}
Beispiel 4: Abrufen von weiteren Informationen zur VM während einer Supportanfrage
Als Dienstanbieter erhalten Sie möglicherweise eine Supportanfrage, für die Sie weitere Informationen zur VM erfahren möchten. Wenn Sie den Kunden auffordern, die Computemetadaten weiterzuleiten, können Sie dem Supportmitarbeiter grundlegende Informationen über die Art von VM in Azure bereitstellen.
Anforderung
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
Antwort
Hinweis
Die Antwort stellt eine JSON-Zeichenfolge dar. Die folgende Beispielantwort wird zur besseren Lesbarkeit im Schöndruck gedruckt.
{
"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"
}
Beispiel 5: Abrufen der Azure-Umgebung, in der die VM ausgeführt wird
Azure verfügt über verschiedene Sovereign Clouds wie Azure Government. In manchen Fällen muss die Azure-Umgebung gewisse Laufzeitentscheidungen treffen. Im folgenden Beispiel wird gezeigt, wie Sie dieses Verhalten erzielen können.
Anforderung
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"
Antwort
AzurePublicCloud
Die Cloud und die Werte der Azure-Umgebung sind hier aufgelistet.
Cloud | Azure-Umgebung |
---|---|
Alle allgemein verfügbaren globalen Azure-Regionen | AzurePublicCloud |
Azure Government | AzureUSGovernmentCloud |
Microsoft Azure, betrieben von 21Vianet | AzureChinaCloud |
Azure Deutschland | AzureGermanCloud |
Beispiel 6: Abrufen von Netzwerkinformationen
Anforderung
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
Antwort
{
"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"
}
]
}
Beispiel 7: Abrufen der öffentlichen IP-Adresse
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"
Hinweis
- Wenn Sie IMDS-Informationen für die öffentliche IP-Adresse der Standard-SKU abrufen möchten, finden Sie weitere Informationen unter Abrufen von Lastenausgleichs-Metadaten mithilfe des Azure Instance Metadata Service (IMDS).
Bestätigte Daten
Abrufen bestätigter Daten
Mithilfe des IMDS kann sichergestellt werden, dass die bereitgestellten Daten aus Azure stammen. Microsoft signiert einen Teil dieser Informationen, sodass Sie bestätigen können, dass Sie ein Image in Azure Marketplace in Azure ausführen.
GET /metadata/attested/document
Parameter
Name | erforderlich/optional | Beschreibung |
---|---|---|
api-version |
Erforderlich | Die zum Durchführen der Anforderung verwendete Version |
nonce |
Optional | Eine 10-stellige Zeichenfolge, die als kryptografische Nonce fungiert. Wenn kein Wert angegeben wird, verwendet IMDS den aktuellen UTC-Zeitstempel. |
Antwort
{
"encoding":"pkcs7",
"signature":"MIIEEgYJKoZIhvcNAQcCoIIEAzCCA/8CAQExDzANBgkqhkiG9w0BAQsFADCBugYJKoZIhvcNAQcBoIGsBIGpeyJub25jZSI6IjEyMzQ1NjY3NjYiLCJwbGFuIjp7Im5hbWUiOiIiLCJwcm9kdWN0IjoiIiwicHVibGlzaGVyIjoiIn0sInRpbWVTdGFtcCI6eyJjcmVhdGVkT24iOiIxMS8yMC8xOCAyMjowNzozOSAtMDAwMCIsImV4cGlyZXNPbiI6IjExLzIwLzE4IDIyOjA4OjI0IC0wMDAwIn0sInZtSWQiOiIifaCCAj8wggI7MIIBpKADAgECAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBBAUAMCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tMB4XDTE4MTEyMDIxNTc1N1oXDTE4MTIyMDIxNTc1NlowKzEpMCcGA1UEAxMgdGVzdHN1YmRvbWFpbi5tZXRhZGF0YS5henVyZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAML/tBo86ENWPzmXZ0kPkX5dY5QZ150mA8lommszE71x2sCLonzv4/UWk4H+jMMWRRwIea2CuQ5RhdWAHvKq6if4okKNt66fxm+YTVz9z0CTfCLmLT+nsdfOAsG1xZppEapC0Cd9vD6NCKyE8aYI1pliaeOnFjG0WvMY04uWz2MdAgMBAAGjYDBeMFwGA1UdAQRVMFOAENnYkHLa04Ut4Mpt7TkJFfyhLTArMSkwJwYDVQQDEyB0ZXN0c3ViZG9tYWluLm1ldGFkYXRhLmF6dXJlLmNvbYIQZ8VuSofHbJRAQNBNpiASdDANBgkqhkiG9w0BAQQFAAOBgQCLSM6aX5Bs1KHCJp4VQtxZPzXF71rVKCocHy3N9PTJQ9Fpnd+bYw2vSpQHg/AiG82WuDFpPReJvr7Pa938mZqW9HUOGjQKK2FYDTg6fXD8pkPdyghlX5boGWAMMrf7bFkup+lsT+n2tRw2wbNknO1tQ0wICtqy2VqzWwLi45RBwTGB6DCB5QIBATA/MCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBCwUAMA0GCSqGSIb3DQEBAQUABIGAld1BM/yYIqqv8SDE4kjQo3Ul/IKAVR8ETKcve5BAdGSNkTUooUGVniTXeuvDj5NkmazOaKZp9fEtByqqPOyw/nlXaZgOO44HDGiPUJ90xVYmfeK6p9RpJBu6kiKhnnYTelUk5u75phe5ZbMZfBhuPhXmYAdjc7Nmw97nx8NnprQ="
}
Das Signaturblob ist eine signierte pkcs7-Version des Dokuments. Es enthält das zum Signieren verwendete Zertifikat zusammen mit bestimmten VM-spezifischen Details.
Für VMs, die mithilfe von Azure Resource Manager erstellt wurden, umfasst das Dokument vmId
, sku
, nonce
, subscriptionId
und timeStamp
für die Erstellung und den Ablauf des Dokuments sowie die Planinformationen über das Image. Die Planinformationen werden nur für Azure Marketplace-Images ausgefüllt.
Für VMs, die mithilfe des klassischen Bereitstellungsmodells erstellt wurden, wird sichergestellt, dass nur die vmId
und subscriptionId
ausgefüllt werden. Sie können das Zertifikat aus der Antwort extrahieren und mithilfe dieses Zertifikats bestätigen, dass die Antwort gültig ist und von Azure stammt.
Das decodierte Dokument enthält die folgenden Felder:
Daten | BESCHREIBUNG | Eingeführt in Version |
---|---|---|
licenseType |
Typ der Lizenz für Azure-Hybridvorteil. Dies ist nur für AHB-aktivierte VMs verfügbar. | 2020-09-01 |
nonce |
Eine Zeichenfolge, die optional mit der Anforderung angegeben werden kann. Wenn kein nonce angegeben wurde, wird der aktuelle Zeitstempel der koordinierten Weltzeit verwendet. |
2018-10-01 |
plan |
Der Plan für das Azure Marketplace-Image. Enthält die Plan-ID (name), das Produktimage oder -angebot (product) und die Herausgeber-ID (publisher). | 2018-10-01 |
timestamp.createdOn |
Der UTC-Zeitstempel für den Zeitpunkt, an dem das signierte Dokument erstellt wurde | 2018-20-01 |
timestamp.expiresOn |
Der UTC-Zeitstempel für den Zeitpunkt, an dem das signierte Dokument abläuft | 2018-10-01 |
vmId |
Eindeutiger Bezeichner für die VM | 2018-10-01 |
subscriptionId |
Azure-Abonnement für den virtuellen Computer | 2019-04-30 |
sku |
Bestimmte SKU für das VM-Image (entspricht der compute/sku -Eigenschaft vom Instanzmetadatenendpunkt [/metadata/instance ]) |
2019-11-01 |
Hinweis
Bei klassischen VMs (Nicht-Azure Resource Manager-VMs) wird nur „vmId“ garantiert ausgefüllt.
Beispieldokument:
{
"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"
}
Leitfaden zur Signaturüberprüfung
Bei der Überprüfung der Signatur müssen Sie sich vergewissern, dass die Signatur mit einem Zertifikat aus Azure erstellt wurde. Dazu wird der alternative Antragstellername (Subject Alternative Name, SAN) des Zertifikats überprüft.
SAN-Beispiel: DNS Name=eastus.metadata.azure.com, DNS Name=metadata.azure.com
Hinweis
Die Domäne für die öffentliche Cloud und die einzelnen Sovereign Clouds unterscheiden sich voneinander.
Cloud | Domäne im SAN |
---|---|
Alle allgemein verfügbaren globalen Azure-Regionen | *.metadata.azure.com |
Azure Government | *.metadata.azure.us |
Azure operated by 21Vianet | *.metadata.azure.cn |
Azure Deutschland | *.metadata.microsoftazure.de |
Hinweis
Die Zertifikate enthalten möglicherweise keine exakte Übereinstimmung für die Domäne. Daher sollte bei der Zertifizierungsüberprüfung eine beliebige Unterdomäne akzeptiert werden. (Akzeptieren Sie in Public Cloud-Regionen mit allgemeiner Verfügbarkeit beispielsweise *.metadata.azure.com
.)
Es wird davon abgeraten, Zwischenzertifikate anzuheften. Weitere Informationen finden Sie unter Was ist das Anheften von Zertifikaten?. Beachten Sie, dass Instance Metadata Service von Azure KEINE Benachrichtigungen für zukünftige Zertifizierungsstellenänderungen bereitstellt. Orientieren Sie sich stattdessen bei allen zukünftigen Updates am zentralisierten Artikel mit Details zur Azure-Zertifizierungsstelle.
Beispiel 1: Überprüfen der Ausführung des virtuellen Computers in Azure
Anbieter in Azure Marketplace möchten sicherstellen, dass ihre Software nur für die Ausführung in Azure lizenziert ist. Wenn jemand die virtuelle Festplatte (VHD) in eine lokale Umgebung kopiert, muss der Anbieter in der Lage sein, dies zu erkennen. Über den IMDS können diese Anbieter signierte Daten erhalten, die sicherstellen, dass Antworten nur von Azure stammen.
Hinweis
Für dieses Beispiel muss das Hilfsprogramm „jq“ installiert sein.
Überprüfung
# 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)
Vergewissern Sie sich, dass die Signatur von Microsoft Azure stammt, und überprüfen Sie die Zertifikatkette auf Fehler.
# 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
Die nonce
im signierten Dokument kann verglichen werden, wenn Sie in der ursprünglichen Anforderung einen nonce
-Parameter angegeben haben.
Verwaltete Identität
Eine verwaltete Identität, die vom System zugewiesen wird, kann auf der VM aktiviert werden. Sie können der VM auch eine oder mehrere vom Benutzer zugeordnete verwaltete Identitäten zuweisen. Sie können dann Token für verwaltete Identitäten vom IMDS anfordern. Verwenden Sie diese Token für die Authentifizierung bei anderen Azure-Diensten, z. B. Azure Key Vault.
Ausführliche Schritte zum Aktivieren dieses Features finden Sie unter Abrufen eines Zugriffstokens.
Load Balancer-Metadaten
Wenn Sie Instanzen von VMs oder VM-Gruppen hinter einer Azure Load Balancer Standard-Instanz platzieren, können Sie mit IMDS Metadaten zum Lastenausgleich und zu den Instanzen abrufen. Weitere Informationen finden Sie unter Abrufen von Informationen zum Lastenausgleich.
Geplante Ereignisse
Sie können den Status der geplanten Ereignisse mithilfe des IMDS abrufen. Dann kann der Benutzer eine Reihe von Aktionen festlegen, die bei diesen Ereignissen ausgeführt werden sollen. Weitere Informationen finden Sie unter Scheduled Events für Linux oder Scheduled Events für Windows.
Beispielcode in verschiedenen Sprachen
Die folgende Tabelle listet Beispiele für den Aufruf des IMDS mithilfe verschiedener Sprachen innerhalb der VM auf:
Fehler und Debuggen
Wenn ein Datenelement nicht gefunden wird oder eine Anforderung ungültig ist, gibt der Instanzmetadatendienst standardmäßige HTTP-Fehler zurück. Beispiel:
HTTP-Statuscode | `Reason` |
---|---|
200 OK |
Die Anforderung wurde erfolgreich gesendet. |
400 Bad Request |
Fehlender Metadata: true -Header oder fehlender format=json -Parameter beim Abfragen eines Blattknotens |
404 Not Found |
Das angeforderte Element ist nicht vorhanden. |
405 Method Not Allowed |
Die HTTP-Methode (Verb) wird für den Endpunkt nicht unterstützt. |
410 Gone |
Wiederholen Sie den Vorgang später (nach max. 70 Sekunden). |
429 Too Many Requests |
Die API-Ratenbegrenzungen wurden überschritten |
500 Service Error |
Wiederholen Sie den Vorgang später. |
Häufig gestellte Fragen
Ich erhalte die Fehlermeldung
400 Bad Request, Required metadata header not specified
. Was bedeutet dies?- Für den IMDS muss der Header
Metadata: true
in der Anforderung übergeben werden. Die Übergabe dieses Headers im REST-Aufruf ermöglicht den Zugriff auf den IMDS.
- Für den IMDS muss der Header
Warum erhalte ich keine Compute-Informationen für meine VM?
- Derzeit unterstützt der IMDS nur Instanzen, die mit Azure Resource Manager erstellt wurden.
Ich habe meine VM vor einiger Zeit mithilfe von Azure Resource Manager erstellt. Warum sehe ich keine Computemetadateninformationen?
- Wenn Sie Ihre VM nach September 2016 erstellt haben, fügen Sie ein Tag hinzu, damit Computemetadaten angezeigt werden. Wenn Sie Ihre VM vor September 2016 erstellt haben, fügen Sie der VM-Instanz Erweiterungen oder Datenträger für Daten hinzu oder entfernen Sie diese, um die Metadaten zu aktualisieren.
Sind Benutzerdaten identisch mit benutzerdefinierten Daten?
- Benutzerdaten bieten die gleiche Funktionalität wie benutzerdefinierte Daten, sodass Sie Ihre eigenen Metadaten an die VM-Instanz übergeben können. Der Unterschied besteht im Abrufen von Benutzerdaten über IMDS und bleibt über die gesamte Lebensdauer der VM-Instanz bestehen. Das vorhandene benutzerdefinierte Datenfeature funktioniert weiterhin, wie in diesem Artikel beschrieben. Sie können benutzerdefinierte Daten jedoch nur über den lokalen Systemordner und nicht über IMDS erhalten.
Warum werden nicht alle Daten für eine neue Version ausgefüllt?
- Wenn Sie Ihre VM nach September 2016 erstellt haben, fügen Sie ein Tag hinzu, damit Computemetadaten angezeigt werden. Wenn Sie Ihre VM vor September 2016 erstellt haben, fügen Sie der VM-Instanz Erweiterungen oder Datenträger für Daten hinzu oder entfernen Sie diese, um die Metadaten zu aktualisieren.
Warum erhalte ich die Fehler
500 Internal Server Error
oder410 Resource Gone
?- Wiederholen Sie die Anforderung. Weitere Informationen finden Sie unter Behandeln vorübergehender Fehler. Wenn das Problem weiterhin besteht, erstellen Sie im Azure-Portal ein Supportproblem für den virtuellen Computer.
Gilt dies auch für Skalierungsgruppeninstanzen?
- Ja, IMDS ist für Skalierungsgruppeninstanzen verfügbar.
Ich habe die Tags in meinen Skalierungsgruppen aktualisiert, aber sie werden (im Gegensatz zu Einzelinstanz-VMs) nicht in den Instanzen angezeigt. Mache ich etwas falsch?
- Derzeit werden Tags für Skalierungsgruppen in VMs nur nach einem Neustart, einer Neuerstellung des Images oder der Änderung eines Datenträgers für die Instanz angezeigt.
Warum sehe ich keine SKU-Informationen für meine VM in den
instance/compute
-Details?- Bei benutzerdefinierten Images, die von Azure Marketplace aus erstellt wurden, behält die Azure-Plattform keine SKU-Informationen für das benutzerdefinierte Image und die Details für VMs, die aus dem benutzerdefinierten Image erstellt wurden, bei. Dies ist entwurfsbedingt und wird daher nicht in den VM-
instance/compute
Details aufgeführt.
- Bei benutzerdefinierten Images, die von Azure Marketplace aus erstellt wurden, behält die Azure-Plattform keine SKU-Informationen für das benutzerdefinierte Image und die Details für VMs, die aus dem benutzerdefinierten Image erstellt wurden, bei. Dies ist entwurfsbedingt und wird daher nicht in den VM-
Warum ist bei meiner Anforderung für meinen Dienstaufruf ein Timeout aufgetreten (oder konnte keine Verbindung hergestellt werden)?
Metadatenaufrufe müssen über die primäre IP-Adresse erfolgen, die der primären Netzwerkkarte des virtuellen Computers zugewiesen ist. Wenn Sie die Routen geändert haben, muss außerdem eine Route für die Adresse 169.254.169.254/32 in der lokalen Routingtabelle des virtuellen Computers vorhanden sein.
Erstellen Sie eine Sicherung der lokalen Routingtabelle, und suchen Sie den IMDS-Eintrag. Zum Beispiel:
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) ...
Überprüfen Sie, ob eine Route für
169.254.169.254
vorhanden ist, und notieren Sie sich die entsprechende Netzwerkschnittstelle (z. B.172.16.69.7
).Erstellen Sie eine Sicherung der Schnittstellenkonfiguration, und suchen Sie die Schnittstelle, die der in der Routingtabelle referenzierten Schnittstelle entspricht. Notieren Sie sich die (physische) MAC-Adresse.
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) ...
Vergewissern Sie sich, dass die Schnittstelle der primären NIC und der primären IP-Adresse des virtuellen Computers entspricht. Sie finden die primäre NIC und primäre IP-Adresse in der Netzwerkkonfiguration im Azure-Portal oder durch Suchen mithilfe der Azure-Befehlszeilenschnittstelle. Notieren Sie sich die privaten IP-Adressen (und bei Verwendung der Azure CLI auch die MAC-Adresse). Hier ist ein PowerShell-CLI-Beispiel:
$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
Wenn sie nicht übereinstimmen, aktualisieren Sie die Routingtabelle so, dass die primäre NIC und die primäre IP-Adresse als Ziel festgelegt sind.
Failoverclustering in Windows Server
Wenn Sie den IMDS mit Failoverclustering abfragen, ist es gelegentlich erforderlich, der Routingtabelle eine Route hinzuzufügen. Gehen Sie dabei folgendermaßen vor:
Öffnen Sie eine Eingabeaufforderung mit Administratorrechten.
Führen Sie den folgenden Befehl aus, und notieren Sie die Adresse der Schnittstelle für das Netzwerkziel (
0.0.0.0
) in der IPv4-Routingtabelle.
route print
Hinweis
Die folgende Beispielausgabe stammt aus einer Windows Server-VM mit aktiviertem Failovercluster. Der Einfachheit halber enthält die Ausgabe nur die IPv4-Routingtabelle.
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
Führen Sie den folgenden Befehl aus, und verwenden Sie dabei die Adresse der Schnittstelle für das Netzwerkziel (
0.0.0.0
), in diesem Beispiel10.0.1.10
.route add 169.254.169.254/32 10.0.1.10 metric 1 -p
Support
Wenn Sie nach mehreren Versuchen keine Metadatenantwort erhalten, können Sie ein Supportproblem im Azure-Portal erstellen.
Produktfeedback
Sie können hier in unserem Kanal für Benutzerfeedback unter „VMs“ > „Instance Metadata Service“ Feedback zu Produkten geben und Ideen unterbreiten.