Azure Instance Metadata szolgáltatás

A következőkre vonatkozik: ✔️ Linux rendszerű virtuális gépek ✔️ – Windows rendszerű virtuális gépek rugalmas méretezési ✔️ csoportjai

The Azure Instance Metadata Service (IMDS) provides information about currently running virtual machine instances. You can use it to manage and configure your virtual machines. This information includes the SKU, storage, network configurations, and upcoming maintenance events. For a complete list of the data available, see the Endpoint Categories Summary.

Az IMDS virtuális gépek (virtuális gépek) és méretezési csoportok példányainak futtatásához érhető el. Minden végpont támogatja az Azure Resource Managerrel létrehozott és felügyelt virtuális gépeket. Csak a példánykategória Igazolt kategóriája és hálózati része támogatja a klasszikus üzemi modellel létrehozott virtuális gépeket. Az igazolt végpont csak korlátozott mértékben teszi ezt meg.

Az IMDS egy REST API, amely egy jól ismert, nem módosítható IP-címen (169.254.169.254) érhető el. You can only access it from within the VM. Communication between the VM and IMDS never leaves the host. A HTTP-ügyfelek megkerüljék a virtuális gépen belüli webes proxykat az IMDS lekérdezésekor, és ugyanúgy kezeljék 169.254.169.254 a következőt: 168.63.129.16.

Usage

Az Azure Instance Metadata Service elérése

Az IMDS eléréséhez hozzon létre egy virtuális gépet az Azure Resource Managerből vagy az Azure Portalról, és használja az alábbi mintákat. További példákért tekintse meg az Azure-példány metaadatainak mintáit.

Az alábbi mintakód egy példány összes metaadatainak lekéréséhez használható. Egy adott adatforrás eléréséhez tekintse meg a végpontkategóriákat az összes elérhető funkció áttekintéséhez.

Kérelem

Fontos

Ez a példa áthalad a proxykon. Az IMDS lekérdezése során meg kell kerülnie a proxykat. További információt a Proxykban talál.

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 PowerShell V6-os vagy újabb verziót igényel. A korábbi PowerShell-verziókkal kapcsolatos példákért tekintse meg a mintaadattárat.

Válasz

Megjegyzés:

A válasz egy JSON-sztring. Az alábbi példaválasz jól olvasható.

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

Biztonság és hitelesítés

A Példány metaadatai szolgáltatás csak egy futó virtuálisgép-példányból érhető el nem módosítható IP-címen. A virtuális gépek csak a saját metaadataikkal/funkcióikkal kommunikálhatnak. Az API csak HTTP, és soha nem hagyja el a gazdagépet.

Annak érdekében, hogy a kérések közvetlenül az IMDS-hez legyenek szánva, és megakadályozzák a kérések nem szándékos vagy nem kívánt átirányítását, a kérések:

  • Tartalmaznia kell a fejlécet Metadata: true
  • Nem tartalmazhat fejlécet X-Forwarded-For

A szolgáltatás elutasítja azokat a kéréseket, amelyek nem felelnek meg mindkét követelménynek.

Fontos

Az IMDS nem bizalmas adatok csatornája. Az API nincs hitelesítve, és a virtuális gépen lévő összes folyamat számára nyitva áll. A szolgáltatáson keresztül közzétett információkat megosztott információnak kell tekinteni a virtuális gépen futó összes alkalmazás számára.

Ha nem szükséges, hogy a virtuális gép minden folyamata hozzáférjen az IMDS-végponthoz, beállíthatja a helyi tűzfalszabályokat a hozzáférés korlátozásához. Ha például csak egy ismert rendszerszolgáltatásnak kell hozzáférnie a példány metaadat-szolgáltatásához, beállíthat egy tűzfalszabályt az IMDS-végponton, amely csak az adott folyamat(ok) számára engedélyezi a hozzáférést, vagy megtagadja a hozzáférést a többi folyamathoz.

Proxyk

Az IMDS nem proxy mögött használható, és ez nem támogatott. A LEGTÖBB HTTP-ügyfél lehetővé teszi a proxyk letiltását a kérelmeken, és ezt a funkciót az IMDS-vel való kommunikáció során kell használni. A részletekért tekintse meg az ügyfél dokumentációját.

Fontos

Még akkor is felül kell bírálnia az alapértelmezett ügyfélproxy-beállításokat, ha nem ismeri a környezetben található proxykonfigurációkat. A proxykonfigurációk automatikusan felderíthetők, és ha nem sikerül megkerülni az ilyen konfigurációkat, az üzemkimaradási kockázatokkal jár, ha a gép konfigurációját a jövőben módosítani szeretné.

Sebességkorlátozás

Az IMDS-kérések általában másodpercenként 5 kérésre korlátozódnak (virtuális gépenként). Requests exceeding this threshold will be rejected with 429 responses. A felügyelt identitás kategóriára irányuló kérelmek másodpercenként 20 kérelemre és 5 egyidejű kérelemre korlátozódnak (virtuális gépenként).

HTTP-parancsok

Jelenleg a következő HTTP-parancsok támogatottak:

Parancs Leírás
GET A kért erőforrás lekérése

Parameters

A végpontok támogathatják a szükséges és/vagy választható paramétereket. Részletekért tekintse meg a szóban forgó végpont sémáját és dokumentációját.

Paraméterek lekérdezése

Az IMDS-végpontok támogatják a HTTP-lekérdezési sztring paramétereit. Például:

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

Megadja a paramétereket:

Név Érték
api-version 2021-01-01
format json

A rendszer elutasítja az ismétlődő lekérdezési paraméternevekkel rendelkező kérelmeket.

Útvonalparaméterek

A nagyobb JSON-blobokat visszavivő végpontok esetében támogatjuk az útvonalparaméterek hozzáfűzését a kérelemvégponthoz a válasz egy részhalmazára való szűréshez:

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

A paraméterek azoknak az indexeknek/kulcsoknak felelnek meg, amelyeket a json objektumon való végigjáráshoz használna, ha elemezett ábrázolást használna.

Például /metadata/instance a json objektumot adja vissza:

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

Ha csak a számítási tulajdonságra szeretnénk szűrni a választ, elküldjük a kérést:

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

Hasonlóképpen, ha beágyazott tulajdonságra vagy adott tömbelemre szeretnénk szűrni, a hozzáfűző kulcsokat továbbra is megtartjuk:

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

a tulajdonság első elemére szűr, és a Network.interface következőt adja vissza:

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

Megjegyzés:

Levélcsomópontra format=json való szűréskor nem működik. Ezekhez a lekérdezésekhez format=text explicit módon kell megadni, mivel az alapértelmezett formátum json.

Schema

Adatformátum

Az IMDS alapértelmezés szerint JSON formátumban (Content-Type: application/json) adja vissza az adatokat. A válaszszűrést támogató végpontok (lásd : Útvonalparaméterek) azonban a formátumot textis támogatják.

Ha nem alapértelmezett válaszformátumot szeretne elérni, adja meg a kért formátumot lekérdezési sztringparaméterként a kérelemben. Például:

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

A json-válaszokban minden primitív típusú stringlesz, és a hiányzó vagy nem alkalmazható értékek mindig szerepelnek benne, de üres sztringre lesznek állítva.

Verziókezelés

Az IMDS verziószámozott, és kötelező megadni az API-verziót a HTTP-kérelemben. A követelmény alól az egyetlen kivétel a verzióvégpont , amely a rendelkezésre álló API-verziók dinamikus lekérésére használható.

Az újabb verziók hozzáadásakor a régebbi verziók továbbra is elérhetők a kompatibilitás érdekében, ha a szkriptek bizonyos adatformátumokhoz függenek.

Ha nem ad meg verziót, hibaüzenet jelenik meg a legújabb támogatott verziók listájával:

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

Támogatott API-verziók

Megjegyzés:

A 2023-07-01-es verzió még mindig ki van adva, előfordulhat, hogy egyes régiókban nem érhető el.

  • 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

Az IMDS teljes Swagger-definíciója a következő címen érhető el: https://github.com/Azure/azure-rest-api-specs/blob/main/specification/imds/data-plane/readme.md

Régiónkénti rendelkezésre állás

A szolgáltatás általánosan elérhető az összes Azure-felhőben.

Gyökérvégpont

A gyökérvégpont az http://169.254.169.254/metadata.

Végpontkategóriák

Az IMDS API több végpontkategóriát tartalmaz, amelyek különböző adatforrásokat jelölnek, amelyek mindegyike egy vagy több végpontot tartalmaz. Részletekért tekintse meg az egyes kategóriákat.

Kategóriagyökér Leírás Bevezetett verzió
/metadata/attested A tanúsított adatok megtekintése 2018-10-01
/metadata/identity Felügyelt identitás megtekintése IMDS-en keresztül 2018-02-01
/metadata/instance A példány metaadatainak megtekintése 2017-04-02
/metadata/loadbalancer Lásd: Load Balancer-metaadatok lekérése IMDS-en keresztül 2020. 10. 01.
/metadata/scheduledevents Ütemezett események megtekintése az IMDS-en keresztül 2017-08-01
/metadata/versions Verziók megtekintése N/A

Versions

API-verziók listázása

A támogatott API-verziók készletét adja vissza.

GET /metadata/versions

Parameters

Nincs (ez a végpont nincs átirányítva).

Response

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

Példány metaadatai

Virtuálisgép-metaadatok lekérése

Elérhetővé teszi a virtuálisgép-példány fontos metaadatait, beleértve a számítást, a hálózatot és a tárolást.

GET /metadata/instance

Parameters

Név Kötelező/nem kötelező Leírás
api-version Required A kérés kiszolgálásához használt verzió.
format Választható* A válasz formátuma (json vagy text) *Megjegyzés: Kérelemparaméterek használatakor lehet szükség

Ez a végpont az útvonalparamétereken keresztül támogatja a válaszszűrést.

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

Sémalebontás:

Számítás

Adat Leírás Bevezetett verzió
azEnvironment Azure Environment, ahol a virtuális gép fut 2018-10-01
additionalCapabilities.hibernationEnabled Azonosítja, hogy a hibernálás engedélyezve van-e a virtuális gépen 2021-11-01
customData Ez a funkció elavult és le van tiltva az IMDS-ben. Ezt felváltotta a következő: userData 2019-02-01
evictionPolicy Beállítja a kihasználatlan virtuális gépek kiürítési módját. 2020-12-01
extendedLocation.type A virtuális gép kiterjesztett helyének típusa. 2021-03-01
extendedLocation.name A virtuális gép kiterjesztett helyének neve 2021-03-01
host.id A virtuális gép gazdagépének neve. Vegye figyelembe, hogy egy virtuális gép gazdagéppel vagy gazdagépcsoporttal rendelkezik, de mindkettővel nem. 2021-11-15
hostGroup.id A virtuális gép gazdagépcsoportjának neve. Vegye figyelembe, hogy egy virtuális gép gazdagéppel vagy gazdagépcsoporttal rendelkezik, de mindkettővel nem. 2021-11-15
isHostCompatibilityLayerVm Azonosítja, hogy a virtuális gép fut-e a gazdagépkompatibilitási rétegen 2020-06-01
licenseType Az Azure Hybrid Benefit licencének típusa. Ez csak az AHB-kompatibilis virtuális gépek esetében van jelen 2020-09-01
location A virtuális gép által futtatott Azure-régió 2017-04-02
name A virtuális gép neve 2017-04-02
offer Ajánlati információk a virtuálisgép-rendszerképhez, és csak az Azure-rendszerképtárból üzembe helyezett rendszerképek esetén jelenik meg 2017-04-02
osProfile.adminUsername Megadja a rendszergazdai fiók nevét 2020-07-15
osProfile.computerName Megadja a számítógép nevét 2020-07-15
osProfile.disablePasswordAuthentication Megadja, hogy a jelszóhitelesítés le van-e tiltva. Ez csak Linux rendszerű virtuális gépek esetén érhető el 2020. 10. 01.
osType Linux vagy Windows 2017-04-02
placementGroupId A méretezési csoport elhelyezési csoportja 2017-08-01
plan Egy virtuális gép nevét, termékét és közzétevőjét tartalmazó csomag , ha az Azure Marketplace-rendszerkép 2018-04-02
platformUpdateDomain A virtuális gép által futtatott tartomány frissítése 2017-04-02
platformFaultDomain Tartalék tartomány , amelyen a virtuális gép fut 2017-04-02
platformSubFaultDomain Alhibatartomány, amelyben a virtuális gép fut, ha van. 2021-10-01
priority A virtuális gép prioritása. További információkért tekintse meg a kihasználatlan virtuális gépeket 2020-12-01
provider A virtuális gép szolgáltatója 2018-10-01
publicKeys A virtuális géphez rendelt nyilvános kulcsok és elérési utak gyűjteménye 2018-04-02
publisher A virtuálisgép-rendszerkép közzétevője 2017-04-02
resourceGroupName A virtuális gép erőforráscsoportja 2017-08-01
resourceId Az erőforrás teljes azonosítója 2019-03-11
sku A virtuálisgép-rendszerkép adott termékváltozata 2017-04-02
securityProfile.secureBootEnabled Azonosítja, hogy az UEFI biztonságos rendszerindítás engedélyezve van-e a virtuális gépen 2020-06-01
securityProfile.virtualTpmEnabled Azonosítja, hogy a virtuális virtuális platform modul (TPM) engedélyezve van-e a virtuális gépen 2020-06-01
securityProfile.encryptionAtHost Azonosítja, hogy a gazdagép titkosítása engedélyezve van-e a virtuális gépen 2021-11-01
securityProfile.securityType Azonosítja, hogy a virtuális gép megbízható vagy bizalmas virtuális gép-e 2021-12-13
storageProfile Lásd az alábbi tárprofilt 2019-06-01
subscriptionId Azure-előfizetés a virtuális géphez 2017-08-01
tags A virtuális gép címkéi 2017-08-01
tagsList JSON-tömbként formázott címkék a programozott elemzés megkönnyítése érdekében 2019-06-04
userData A virtuális gép létrehozásakor megadott adatkészlet a kiépítés során vagy után történő használatra (Base64 kódolással) 2021-01-01
version A virtuálisgép-rendszerkép verziója 2017-04-02
virtualMachineScaleSet.id A virtuális gép rugalmas vezényléssel létrehozott virtuálisgép-méretezési csoport azonosítója a része. Ez a mező nem érhető el az egységes vezényléssel létrehozott virtuálisgép-méretezési csoportokhoz. 2021-03-01
vmId A virtuális gép egyedi azonosítója . A blog csak az SMBIOS < 2.6-os verzióval rendelkező virtuális gépekre hivatkozott. Az SMBIOS >= 2.6 rendszerű virtuális gépek esetében a DMI UUID azonosítója kis endian formátumban jelenik meg, így nincs szükség bájtváltásra. 2017-04-02
vmScaleSetName A méretezési csoport virtuálisgép-méretezési csoportjának neve 2017-12-01
vmSize Virtuális gép mérete 2017-04-02
zone A virtuális gép rendelkezésre állási zónája 2017-12-01

† Ez a verzió még nem érhető el teljesen, és nem minden régióban támogatott.

Tárolási profil

A virtuális gép tárolási profilja három kategóriába sorolható: képhivatkozás, operációsrendszer-lemez és adatlemezek, valamint egy további objektum a helyi ideiglenes lemezhez.

A rendszerkép referenciaobjektuma az operációs rendszer lemezképével kapcsolatos alábbi információkat tartalmazza. Vegye figyelembe, hogy a rendszerképek a platformról, a piactérről, a közösségi galériából vagy a közvetlen megosztott katalógusból származhatnak, de mindkettő nem:

Adat Leírás Bevezetett verzió
id Erőforrás-azonosító 2019-06-01
offer A platform vagy a piactér rendszerképének ajánlata 2019-06-01
publisher A platform vagy a piactér rendszerképének közzétevője 2019-06-01
sku A platform vagy a piactér rendszerképének termékváltozata 2019-06-01
version A kép verziója 2019-06-01
communityGalleryImageId A közösségi rendszerkép erőforrás-azonosítója üres, egyébként üres 2023-07-01
sharedGalleryImageId Erőforrás-azonosító o közvetlen megosztott rendszerkép, üres, ellenkező esetben 2023-07-01
exactVersion A közösség vagy a közvetlen megosztott rendszerkép verziója 2023-07-01

Az operációsrendszer-lemez objektuma a következő információkat tartalmazza a virtuális gép által használt operációsrendszer-lemezről:

Adat Leírás
caching Gyorsítótárazási követelmények
createOption Információ a virtuális gép létrehozásának módjáról
diffDiskSettings Rövid élettartamú lemezbeállítások
diskSizeGB A lemez mérete GB-ban
image Forrásfelhasználói lemezkép virtuális merevlemeze
managedDisk Felügyelt lemezparaméterek
name Lemez neve
vhd Virtuális merevlemez
writeAcceleratorEnabled Azt jelzi, hogy a writeAccelerator engedélyezve van-e a lemezen

Az adatlemezek tömbje a virtuális géphez csatolt adatlemezek listáját tartalmazza. Minden adatlemez-objektum a következő információkat tartalmazza:

Adat Leírás Bevezetett verzió
bytesPerSecondThrottle* Lemez olvasási/írási kvótája bájtban 2021-05-01
caching Gyorsítótárazási követelmények 2019-06-01
createOption Információ a virtuális gép létrehozásának módjáról 2019-06-01
diffDiskSettings Rövid élettartamú lemezbeállítások 2019-06-01
diskCapacityBytes* Lemez mérete bájtban 2021-05-01
diskSizeGB A lemez mérete GB-ban 2019-06-01
encryptionSettings A lemez titkosítási beállításai 2019-06-01
image Forrásfelhasználói lemezkép virtuális merevlemeze 2019-06-01
isSharedDisk* Azonosítja, hogy a lemez meg van-e osztva az erőforrások között 2021-05-01
isUltraDisk Azonosítja, hogy az adatlemez ultralemez-e 2021-05-01
lun A lemez logikai egységszáma 2019-06-01
managedDisk Felügyelt lemezparaméterek 2019-06-01
name Lemez neve 2019-06-01
opsPerSecondThrottle* Lemez olvasási/írási kvótája az IOPS-ban 2021-05-01
osType A lemezen található operációs rendszer típusa 2019-06-01
vhd Virtuális merevlemez 2019-06-01
writeAcceleratorEnabled Azt jelzi, hogy a writeAccelerator engedélyezve van-e a lemezen 2019-06-01

*Ezek a mezők csak ultralemezekhez vannak feltöltve; ezek üres sztringek nem Ultra-lemezekről.

A titkosítási beállítások blobja adatokat tartalmaz a lemez titkosításának módjáról (ha titkosítva van):

Adat Leírás Bevezetett verzió
diskEncryptionKey.sourceVault.id A lemeztitkosítási kulcs helye 2021-11-01
diskEncryptionKey.secretUrl A titkos kód helye 2021-11-01
keyEncryptionKey.sourceVault.id A kulcstitkosítási kulcs helye 2021-11-01
keyEncryptionKey.keyUrl A kulcs helye 2021-11-01

Az erőforráslemez-objektum kilobájtban tartalmazza a virtuális géphez csatolt Helyi ideiglenes lemez méretét, ha van ilyen. Ha nincs helyi ideiglenes lemez a virtuális géphez, ez az érték 0.

Adat Leírás Bevezetett verzió
resourceDisk.size A virtuális gép helyi ideiglenes lemezének mérete (kB-ben) 2021-02-01

Network

Adat Leírás Bevezetett verzió
ipv4.privateIpAddress A virtuális gép helyi IPv4-címe 2017-04-02
ipv4.publicIpAddress A virtuális gép nyilvános IPv4-címe 2017-04-02
subnet.address A virtuális gép alhálózati címe 2017-04-02
subnet.prefix Alhálózati előtag, 24. példa 2017-04-02
ipv6.ipAddress A virtuális gép helyi IPv6-címe 2017-04-02
macAddress Mac virtuális gép címe 2017-04-02

Megjegyzés:

A hálózati hívás által visszaadott nikák nem garantáltan rendben vannak.

Felhasználói adatok lekérése

Új virtuális gép létrehozásakor megadhatja a virtuális gép kiépítése során vagy után használandó adatok készletét, és lekérheti azokat az IMDS-ben. Itt megtekintheti a végfelhasználói adatok végfelhasználói élményét.

A felhasználói adatok beállításához használja az itt található rövid útmutatósablont. Az alábbi minta bemutatja, hogyan kérhetők le ezek az adatok az IMDS-ben. Ez a funkció verziószámmal és újabb verzióval 2021-01-01 jelenik meg.

Megjegyzés:

Biztonsági értesítés: Az IMDS nyitva áll a virtuális gépen lévő összes alkalmazás számára, a bizalmas adatokat nem szabad a felhasználói adatokba helyezni.

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

1. minta: Az Azure-ban futó virtuális gépek nyomon követése

Szolgáltatóként előfordulhat, hogy nyomon kell követnie a szoftvert futtató virtuális gépek számát, vagy olyan ügynökökkel kell rendelkeznie, amelyeknek nyomon kell követniük a virtuális gép egyediségét. Ha egy virtuális gép egyedi azonosítóját szeretné lekérni, használja a vmId Instance Metadata Service mezőjét.

Kérelem

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"

Válasz

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

2. minta: Különböző adatreplikák elhelyezése

Bizonyos esetekben a különböző adatreplikák elhelyezése elsődleges fontosságú. A HDFS-replika elhelyezése vagy a tároló vezénylőn keresztüli elhelyezése például megkövetelheti, hogy tudja, hogy a platformFaultDomainplatformUpdateDomain virtuális gép fut-e. A példányokhoz rendelkezésre állási zónákat is használhat a döntések meghozatalához. Ezeket az adatokat közvetlenül az IMDS-en keresztül kérdezheti le.

Kérelem

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"

Válasz

0

3. minta: Virtuálisgép-címkék lekérése

A virtuálisgép-címkék a példány API-jának részét képezik a példány/számítási/címkék végpontja alatt. Előfordulhat, hogy címkéket alkalmaztak az Azure-beli virtuális gépre, hogy logikusan rendszerezze őket egy osztályozásba. A virtuális géphez rendelt címkék az alábbi kéréssel kérhetők le.

Kérelem

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"

Válasz

Department:IT;ReferenceNumber:123456;TestStatus:Pending

A tags mező egy sztring, amelynek címkéit pontosvesszők tagolják. Ez a kimenet akkor lehet probléma, ha a címkékben pontosvesszőket használnak. Ha egy elemző programozott módon nyeri ki a címkéket, a mezőre kell támaszkodnia tagsList . A tagsList mező egy olyan JSON-tömb, amely nem rendelkezik elválasztójelekkel, ezért könnyebben elemezhetők. A virtuális géphez rendelt tagsList az alábbi kéréssel kérhető le.

Kérelem

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

Válasz

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

4. minta: További információ a virtuális gépről a támogatási eset során

Szolgáltatóként támogatási hívást kaphat, ahol további információkat szeretne megtudni a virtuális gépről. Ha megkéri az ügyfelet, hogy ossza meg a számítási metaadatokat, alapvető információkat biztosíthat a támogatási szakembernek az Azure-beli virtuális gépek típusáról.

Kérelem

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

Válasz

Megjegyzés:

A válasz egy JSON-sztring. Az alábbi példaválasz jól olvasható.

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

5. minta: Annak az Azure-környezetnek a lekérése, amelyben a virtuális gép fut

Az Azure különböző szuverén felhőkkel rendelkezik, például az Azure Government-hez. Néha szükség van az Azure-környezetre, hogy futásidejű döntéseket hozzon. Az alábbi minta bemutatja, hogyan érheti el ezt a viselkedést.

Kérelem

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"

Válasz

AzurePublicCloud

Itt találja a felhőt és az Azure-környezet értékeit.

Cloud Azure-környezet
Minden általánosan elérhető globális Azure-régió AzurePublicCloud
Azure Government AzureUSGovernmentCloud
A 21Vianet által üzemeltetett Microsoft Azure AzureChinaCloud
Azure Germany AzureGermanCloud

6. minta: Hálózati adatok lekérése

Kérelem

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

Válasz

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

7. minta: Nyilvános IP-cím lekérése

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"

Megjegyzés:

  • Ha IMDS-információkat szeretne lekérni a standard termékváltozat nyilvános IP-címéhez, tekintse át a Load Balancer Metadata API-t a további információkért.

Igazolt adatok

Igazolt adatok lekérése

Az IMDS segít garantálni, hogy a megadott adatok az Azure-ból származnak. A Microsoft aláírja az információk egy részét, így ellenőrizheti, hogy az Azure Marketplace-en egy rendszerkép fut-e az Azure-ban.

GET /metadata/attested/document

Parameters

Név Kötelező/nem kötelező Leírás
api-version Required A kérés kiszolgálásához használt verzió.
nonce Választható Egy 10 jegyű sztring, amely titkosítási nonce-ként szolgál. Ha nincs megadva érték, az IMDS az aktuális UTC időbélyeget használja.

Response

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

Az aláírási blob a dokumentum pkcs7 aláírással ellátott verziója. Tartalmazza az aláíráshoz használt tanúsítványt, valamint bizonyos virtuálisgép-specifikus részleteket.

Az Azure Resource Manager használatával létrehozott virtuális gépek esetében a dokumentum tartalmazza vmIdsubscriptionIdskunoncetimeStamp a dokumentum létrehozását és lejáratát, valamint a rendszerkép tervadatait. A csomaginformációk csak az Azure Marketplace-rendszerképekhez lesznek feltöltve.

A klasszikus üzemi modellel létrehozott virtuális gépek esetében csak azokat vmId kell feltölteni, és subscriptionId azok biztosan fel lesznek töltve. Kinyerheti a tanúsítványt a válaszból, és azzal ellenőrizheti, hogy a válasz érvényes-e, és az Azure-ból érkezik-e.

A dekódolt dokumentum a következő mezőket tartalmazza:

Adat Leírás Bevezetett verzió
licenseType Az Azure Hybrid Benefit licencének típusa. Ez csak az AHB-kompatibilis virtuális gépek esetében van jelen. 2020-09-01
nonce A kéréshez opcionálisan megadható sztring. Ha nem nonce lett megadva, a rendszer az aktuális koordinált univerzális időbélyeget használja. 2018-10-01
plan Az Azure Marketplace Rendszerkép csomagja. Tartalmazza a csomagazonosítót (név), a termékképet vagy az ajánlatot (termék), valamint a közzétevő azonosítóját (közzétevő). 2018-10-01
timestamp.createdOn Az aláírt dokumentum létrehozásának UTC-időbélyege 2018-20-01
timestamp.expiresOn Az aláírt dokumentum lejáratának UTC-időbélyege 2018-10-01
vmId A virtuális gép egyedi azonosítója 2018-10-01
subscriptionId Azure-előfizetés a virtuális géphez 2019-04-30
sku A virtuálisgép-rendszerkép adott termékváltozata (korrelál compute/sku a példány metaadat-végpontjának tulajdonságával [/metadata/instance]) 2019-11-01

Megjegyzés:

Klasszikus (nem Azure Resource Manager-alapú) virtuális gépek esetén a rendszer csak a virtuálisgép-azonosítót tölti ki.

Példadokumentum:

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

Aláírás-érvényesítési útmutató

Az aláírás ellenőrzésekor ellenőriznie kell, hogy az aláírás egy Azure-beli tanúsítvánnyal lett-e létrehozva. Ez a tanúsítvány tulajdonosának alternatív nevének (SAN) hitelesítésével történik.

Példa SAN-ra DNS Name=eastus.metadata.azure.com, DNS Name=metadata.azure.com

Megjegyzés:

A nyilvános felhő és az egyes szuverén felhők tartománya eltérő lesz.

Cloud Tartomány a SAN-ban
Minden általánosan elérhető globális Azure-régió *.metadata.azure.com
Azure Government *.metadata.azure.us
A 21Vianet által üzemeltetett Azure *.metadata.azure.cn
Azure Germany *.metadata.microsoftazure.de

Megjegyzés:

Előfordulhat, hogy a tanúsítványok nem egyeznek pontosan a tartományhoz. Ezért a minősítés érvényesítésének minden altartományt el kell fogadnia (például a nyilvános felhő általános rendelkezésre állási régiói elfogadnak *.metadata.azure.com).

Nem javasoljuk a tanúsítvány rögzítését a köztes tanúsítványokhoz. További útmutatásért lásd : Tanúsítvány-rögzítés – Tanúsítvány-rögzítés és Azure-szolgáltatások. Vegye figyelembe, hogy az Azure Instance Metadata Szolgáltatás NEM fog értesítést küldeni a hitelesítésszolgáltató jövőbeli változásairól. Ehelyett a központosított Azure Hitelesítésszolgáltató részletes cikkét kell követnie az összes jövőbeli frissítéshez.

1. minta: Ellenőrizze, hogy a virtuális gép fut-e az Azure-ban

Az Azure Marketplace-beszállítók biztosítani szeretnék, hogy a szoftverük licence csak az Azure-ban fusson. Ha valaki egy helyszíni környezetbe másolja a VHD-t, a szállítónak képesnek kell lennie ezt észlelni. Az IMDS-ben ezek a szállítók aláírt adatokat kaphatnak, amelyek csak az Azure-ból kapnak választ.

Megjegyzés:

Ehhez a mintához telepíteni kell a jq segédprogramot.

Érvényesítés

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

Ellenőrizze, hogy az aláírás a Microsoft Azure-ból származik-e, és ellenőrzi a tanúsítványlánc hibáit.

# 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

Az nonce aláírt dokumentum összehasonlítható, ha adott meg egy paramétert nonce a kezdeti kérelemben.

Managed identity

A rendszer által hozzárendelt felügyelt identitás engedélyezhető a virtuális gépen. Egy vagy több felhasználó által hozzárendelt felügyelt identitást is hozzárendelhet a virtuális géphez. Ezután jogkivonatokat kérhet a felügyelt identitásokhoz az IMDS-ből. Ezekkel a jogkivonatokkal hitelesítheti magát más Azure-szolgáltatásokkal, például az Azure Key Vaulttal.

A funkció engedélyezésének részletes lépéseit a hozzáférési jogkivonat beszerzése című témakörben találja.

A Load Balancer metaadatai

Amikor virtuálisgép- vagy virtuálisgép-készletpéldányokat helyez egy Azure Standard Load Balancer mögé, az IMDS használatával lekérheti a terheléselosztóval és a példányokkal kapcsolatos metaadatokat. További információ: Terheléselosztó adatainak lekérése.

Ütemezett események

Az ütemezett események állapotát az IMDS használatával szerezheti be. Ezután a felhasználó megadhatja az eseményeken futtatandó műveletek egy készletét. További információt a Linux vagy a Windows ütemezett eseményeinek ütemezett eseményei című témakörben talál.

Mintakód különböző nyelveken

Az alábbi táblázat a virtuális gépen belüli különböző nyelvek használatával történő IMDS-hívás mintáit sorolja fel:

Nyelv Példa
Bash https://github.com/Microsoft/azureimds/blob/master/IMDSSample.sh
C# https://github.com/Microsoft/azureimds/blob/master/IMDSSample.cs
Ugrás https://github.com/Microsoft/azureimds/blob/master/imdssample.go
Java https://github.com/Microsoft/azureimds/blob/master/imdssample.java
NodeJS https://github.com/Microsoft/azureimds/blob/master/IMDSSample.js
Perl https://github.com/Microsoft/azureimds/blob/master/IMDSSample.pl
PowerShell https://github.com/Microsoft/azureimds/blob/master/IMDSSample.ps1
Puppet https://github.com/keirans/azuremetadata
Python https://github.com/Microsoft/azureimds/blob/master/IMDSSample.py
Ruby https://github.com/Microsoft/azureimds/blob/master/IMDSSample.rb

Hibák és hibakeresés

Ha nem található adatelem vagy hibásan formázott kérés, a Példány metaadat-szolgáltatása szabványos HTTP-hibákat ad vissza. Például:

HTTP-állapotkód Reason
200 OK A kérés sikeres volt.
400 Bad Request Hiányzó Metadata: true fejléc vagy hiányzó paraméter format=json levélcsomópont lekérdezésekor
404 Not Found A kért elem nem létezik
405 Method Not Allowed A HTTP-metódus (ige) nem támogatott a végponton.
410 Gone Próbálkozzon újra egy idő után, legfeljebb 70 másodpercig
429 Too Many Requests Túllépték az API sebességkorlátait
500 Service Error Újrapróbálkozás egy idő után

Gyakori kérdések

  • A hibaüzenetet 400 Bad Request, Required metadata header not specifiedkapom. Mit jelent ez?

    • Az IMDS megköveteli a fejléc Metadata: true átadását a kérelemben. Ha ezt az élőfejet a REST-hívásban adja át, az IMDS-hez való hozzáférést teszi lehetővé.
  • Miért nem kapok számítási adatokat a virtuális gépemhez?

    • Az IMDS jelenleg csak az Azure Resource Managerrel létrehozott példányokat támogatja.
  • Néhány évvel ezelőtt létrehoztam a virtuális gépet az Azure Resource Manageren keresztül. Miért nem látom a számítási metaadatok adatait?

    • Ha 2016 szeptembere után hozta létre a virtuális gépet, vegyen fel egy címkét a számítási metaadatok megtekintéséhez. Ha 2016 szeptembere előtt hozta létre a virtuális gépet, a metaadatok frissítéséhez vegyen fel vagy távolítson el bővítményeket vagy adatlemezeket a virtuálisgép-példányban.
  • A felhasználói adatok megegyeznek az egyéni adatokkal?

    • A felhasználói adatok az egyéni adatokhoz hasonló funkciókat kínálnak, így saját metaadatokat adhat át a virtuálisgép-példánynak. A különbség az, hogy a felhasználói adatok lekérése az IMDS-ben történik, és a virtuálisgép-példány teljes élettartama alatt állandó. A meglévő egyéni adatfunkció továbbra is működni fog a cikkben leírtak szerint. Egyéni adatokat azonban csak a helyi rendszermappán keresztül kérhet le, az IMDS-ben nem.
  • Miért nem jelenik meg az új verzióhoz tartozó összes adat?

    • Ha 2016 szeptembere után hozta létre a virtuális gépet, vegyen fel egy címkét a számítási metaadatok megtekintéséhez. Ha 2016 szeptembere előtt hozta létre a virtuális gépet, a metaadatok frissítéséhez vegyen fel vagy távolítson el bővítményeket vagy adatlemezeket a virtuálisgép-példányban.
  • Miért kapom meg a hibát 500 Internal Server Error , vagy 410 Resource Gone?

    • Próbálja meg újra a kérést. További információ: Átmeneti hibakezelés. Ha a probléma továbbra is fennáll, hozzon létre egy támogatási problémát az Azure Portalon a virtuális gép számára.
  • Működik ez a méretezési csoport példányainál?

    • Igen, az IMDS a méretezési csoportok példányaihoz érhető el.
  • Frissítettem a címkéket a méretezési csoportokban, de nem jelennek meg a példányokban (ellentétben az egypéldányos virtuális gépekkel). Valami rosszat csinálok?

    • A méretezési csoportok címkéi jelenleg csak újraindításkor, újraimázásakor vagy lemezmódosításkor jelennek meg a virtuális gép számára a példányon.
  • Miért nem látom a virtuális gépem termékváltozatának adatait részletekben instance/compute ?

    • Az Azure Marketplace-ről létrehozott egyéni rendszerképek esetében az Azure platform nem őrzi meg az egyéni rendszerkép termékváltozatának adatait és az egyéni rendszerképből létrehozott virtuális gépek részleteit. Ez a kialakítás, ezért nem jelenik meg a virtuális gép instance/compute részleteiben.
  • Miért időtúllépést (vagy nem sikerült csatlakozni) a kérésem a szolgáltatáshoz való híváshoz?

    • A metaadat-hívásokat a virtuális gép elsődleges hálózati kártyájára rendelt elsődleges IP-címről kell kezdeményezni. Ha módosította az útvonalakat, a virtuális gép helyi útválasztási táblájában rendelkeznie kell a 169.254.169.254/32-es cím útvonalával.

      1. Adja meg a helyi útválasztási táblát, és keresse meg az IMDS-bejegyzést. Például:

        route print
        
        IPv4 Route Table
        ===========================================================================
        Active Routes:
        Network Destination        Netmask          Gateway       Interface  Metric
                0.0.0.0          0.0.0.0      172.16.69.1      172.16.69.7     10
                127.0.0.0        255.0.0.0         On-link         127.0.0.1    331
                127.0.0.1  255.255.255.255         On-link         127.0.0.1    331
        127.255.255.255  255.255.255.255         On-link         127.0.0.1    331
            168.63.129.16  255.255.255.255      172.16.69.1      172.16.69.7     11
        169.254.169.254  255.255.255.255      172.16.69.1      172.16.69.7     11
        ... (continues) ...
        
      2. Ellenőrizze, hogy létezik-e 169.254.169.254útvonal, és jegyezze fel a megfelelő hálózati adaptert (például 172.16.69.7).

      3. Adja meg az interfész konfigurációját, és keresse meg az útválasztási táblázatban hivatkozott felületnek megfelelő felületet, a MAC (fizikai) cím jelölésével.

        ipconfig /all
        
        ... (continues) ...
        Ethernet adapter Ethernet:
        
        Connection-specific DNS Suffix  . : xic3mnxjiefupcwr1mcs1rjiqa.cx.internal.cloudapp.net
        Description . . . . . . . . . . . : Microsoft Hyper-V Network Adapter
        Physical Address. . . . . . . . . : 00-0D-3A-E5-1C-C0
        DHCP Enabled. . . . . . . . . . . : Yes
        Autoconfiguration Enabled . . . . : Yes
        Link-local IPv6 Address . . . . . : fe80::3166:ce5a:2bd5:a6d1%3(Preferred)
        IPv4 Address. . . . . . . . . . . : 172.16.69.7(Preferred)
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        ... (continues) ...
        
      4. Ellenőrizze, hogy az interfész megfelel-e a virtuális gép elsődleges hálózati adapterének és elsődleges IP-címének. Az elsődleges hálózati adaptert és IP-címet az Azure Portal hálózati konfigurációjával, vagy az Azure CLI-vel való kereséssel találja meg. Jegyezze fel a privát IP-címeket (és a MAC-címet, ha a parancssori felületet használja). Íme egy PowerShell CLI-példa:

        $ResourceGroup = '<Resource_Group>'
        $VmName = '<VM_Name>'
        $NicNames = az vm nic list --resource-group $ResourceGroup --vm-name $VmName | ConvertFrom-Json | Foreach-Object { $_.id.Split('/')[-1] }
        foreach($NicName in $NicNames)
        {
            $Nic = az vm nic show --resource-group $ResourceGroup --vm-name $VmName --nic $NicName | ConvertFrom-Json
            Write-Host $NicName, $Nic.primary, $Nic.macAddress
        }
        
        wintest767 True 00-0D-3A-E5-1C-C0
        
      5. Ha nem egyeznek, frissítse az útválasztási táblát, hogy az elsődleges hálózati adapter és IP-cím legyen megcélzva.


  • Fürtszolgáltatás feladatátvétele a Windows Serveren

    • Amikor feladatátvételi fürtszolgáltatással kérdezi le az IMDS-t, néha szükség van egy útvonal hozzáadására az útválasztási táblához. Ennek módja az alábbi:

      1. Nyisson meg egy parancssort rendszergazdai jogosultságokkal.

      2. Futtassa a következő parancsot, és jegyezze fel a hálózati célhely (0.0.0.0) felületének címét az IPv4 útvonaltáblában.

      route print
      

      Megjegyzés:

      A következő példakimenet egy Olyan Windows Server rendszerű virtuális gépről származik, amelyen engedélyezve van a feladatátvevő fürt. Az egyszerűség kedvéért a kimenet csak az IPv4 útvonaltáblát tartalmazza.

      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
      

      Futtassa a következő parancsot, és használja a jelen példában (10.0.1.10) szereplő hálózati célhely (interface for Network Destination0.0.0.0) címét.

      route add 169.254.169.254/32 10.0.1.10 metric 1 -p
      

Support

Ha több próbálkozás után nem tud metaadat-választ kapni, támogatási problémát hozhat létre az Azure Portalon.

Visszajelzés a termékről

Termékvisszajelzéseket és ötleteket adhat a felhasználói visszajelzési csatornánknak a Virtual Machines > Instance Metadata Service szolgáltatásban itt

További lépések