Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: ✔️ Linux VMs ✔️ Windows VMs ✔️ Conjuntos de escala flexível
O Azure Instance Metadata Service (IMDS) disponibiliza informações sobre as instâncias de máquinas virtuais atualmente em execução. Pode utilizá-lo para gerir e configurar as suas máquinas virtuais. Estas informações incluem o SKU, o armazenamento, as configurações de rede e os eventos de manutenção futuros. Para obter uma lista completa dos dados disponíveis, veja o Resumo das Categorias de Pontos Finais.
O IMDS está disponível para executar instâncias de máquinas virtuais (VMs) e dimensionar instâncias de conjuntos. Todos os pontos de extremidade dão suporte a VMs criadas e gerenciadas usando o Azure Resource Manager. Somente a categoria Atestado e a parte Rede da categoria Instância oferecem suporte a VMs criadas usando o modelo de implantação clássico. O endpoint atestado faz isso apenas de forma limitada.
O IMDS é uma API REST que está disponível em um endereço IP conhecido e não roteável (169.254.169.254). Só é possível aceder ao mesmo a partir da VM. A comunicação entre a Máquina Virtual e o IMDS nunca sai do anfitrião.
Faça com que seus clientes HTTP ignorem proxies da Web dentro da VM ao consultar o IMDS.
Utilização
Acessar o Serviço de Metadados de Instância do Azure
Para acessar o IMDS, crie uma VM do Azure Resource Manager ou do portal do Azure e use os exemplos a seguir. Para obter mais exemplos, consulte Exemplos de metadados de instância do Azure.
Aqui está o código de exemplo para recuperar todos os metadados de uma instância. Para acessar uma fonte de dados específica, consulte Categorias de pontos finais para obter uma visão geral de todos os recursos disponíveis.
Pedir
Importante
Este exemplo ignora proxies. Você deve ignorar proxies ao consultar o IMDS. Consulte Proxies para obter informações adicionais.
Nota
As solicitações IMDS devem ser enviadas usando a NIC primária e o IP primário da VM, e o DHCP deve estar habilitado.
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance?api-version=2025-04-07" | ConvertTo-Json -Depth 64
-NoProxy requer PowerShell V6 ou superior. Consulte nosso repositório de exemplos para obter exemplos com versões mais antigas do PowerShell.
Resposta
Nota
A resposta é uma cadeia de caracteres JSON. O exemplo de resposta a seguir é muito bem impresso para facilitar a leitura.
{
"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"
}]
}
}
Segurança e autenticação
O Serviço de Metadados de Instância só pode ser acessado de dentro de uma instância de máquina virtual em execução em um endereço IP não roteável. As VMs só podem interagir com seus próprios metadados/funcionalidades. A API é apenas HTTP e nunca sai do host.
Para garantir que as solicitações sejam diretamente destinadas ao IMDS e evitar o redirecionamento não intencional ou indesejado das solicitações, as solicitações:
-
Deve conter o cabeçalho
Metadata: true - Não deve conter um
X-Forwarded-Forcabeçalho
Qualquer solicitação que não atenda a esses dois requisitos é rejeitada pelo serviço.
Importante
O IMDS não é um canal para dados confidenciais. A API não é autenticada e está aberta a todos os processos na VM. As informações expostas por meio desse serviço devem ser consideradas como informações compartilhadas para todos os aplicativos em execução dentro da VM.
Se não for necessário que todos os processos na VM acessem o ponto de extremidade IMDS, você poderá definir regras de firewall locais para limitar o acesso. Por exemplo, se apenas um serviço de sistema conhecido precisar acessar o serviço de metadados da instância, você poderá definir uma regra de firewall no ponto de extremidade IMDS, permitindo apenas o acesso do(s) processo(s) específico(s) ou negando acesso para o restante dos processos.
Proxies
O IMDS não é destinado a ser usado atrás de um proxy e fazê-lo não é suportado. A maioria dos clientes HTTP fornece uma opção para você desabilitar proxies em suas solicitações, e essa funcionalidade deve ser utilizada ao se comunicar com o IMDS. Consulte a documentação do seu cliente para obter detalhes.
Importante
Mesmo que não saibas de nenhuma configuração de proxy no teu ambiente, deves ainda substituir qualquer definição padrão de proxy do cliente. As configurações de proxy podem ser descobertas automaticamente, e não ignorar essas configurações expõe você a riscos de interrupção caso a configuração da máquina seja alterada no futuro.
Limitação de Velocidade
Em geral, as solicitações ao IMDS são limitadas a 5 solicitações por segundo (por VM). Os pedidos que excedam este limite serão rejeitados com o código de erro 429. As solicitações para a categoria Identidade Gerenciada são limitadas a 20 solicitações por segundo e 5 solicitações simultâneas (por VM).
Verbos HTTP
Os seguintes verbos HTTP são suportados atualmente:
| Verbo | Descrição |
|---|---|
GET |
Recuperar o recurso solicitado |
Parâmetros
Os endpoints podem suportar parâmetros necessários e/ou opcionais. Consulte Esquema e a documentação do ponto de extremidade específico em questão para obter detalhes.
Parâmetros de consultas
Os pontos de extremidade IMDS suportam parâmetros de cadeia de caracteres de consulta HTTP. Por exemplo:
http://169.254.169.254/metadata/instance/compute?api-version=2025-04-07&format=json
Especifica os parâmetros:
| Nome | Valor |
|---|---|
api-version |
2025-04-07 |
format |
json |
Solicitações com nomes de parâmetros de consulta duplicados serão rejeitadas.
Parâmetros de rota
Para alguns endpoints que retornam blocos json maiores, oferecemos suporte à adição de parâmetros de rota ao endpoint da solicitação para filtrar até um subconjunto da resposta:
http://169.254.169.254/metadata/<endpoint>/[<filter parameter>/...]?<query parameters>
Os parâmetros correspondem aos índices/chaves que seriam usados para percorrer o objeto json se você interagisse com uma representação analisada.
Por exemplo, /metadata/instance retorna o objeto json:
{
"compute": { ... },
"network": {
"interface": [
{
"ipv4": {
"ipAddress": [{
"privateIpAddress": "10.144.133.132",
"publicIpAddress": ""
}],
"subnet": [{
"address": "10.144.133.128",
"prefix": "26"
}]
},
"ipv6": {
"ipAddress": [{
"privateIpAddress": "b4bc:8fce:f33b:4990:cced:d94e:ab4f:6ea0"
}]
},
"macAddress": "0011AAFFBB22"
},
...
]
}
}
Se quisermos filtrar a resposta para ficarmos apenas com a propriedade de computação, enviaremos a solicitação:
http://169.254.169.254/metadata/instance/compute?api-version=<version>
Da mesma forma, se quisermos filtrar para uma propriedade aninhada ou elemento de matriz específico, continuamos anexando chaves:
http://169.254.169.254/metadata/instance/network/interface/0?api-version=<version>
filtraria para o primeiro elemento da Network.interface propriedade e retornaria:
{
"ipv4": {
"ipAddress": [{
"privateIpAddress": "10.144.133.132",
"publicIpAddress": ""
}],
"subnet": [{
"address": "10.144.133.128",
"prefix": "26"
}]
},
"ipv6": {
"ipAddress": [{
"privateIpAddress": "b4bc:8fce:f33b:4990:cced:d94e:ab4f:6ea0"
}]
},
"macAddress": "0011AAFFBB22"
}
Nota
Ao filtrar para um nó folha, format=json não funciona. Para essas consultas format=text precisa ser explicitamente especificado, pois o formato padrão é json.
Esquema
Formato dos dados
Por padrão, o IMDS retorna dados no formato JSON (Content-Type: application/json). No entanto, os pontos de extremidade que suportam filtragem de resposta (consulte Parâmetros de Rota) também suportam o formato text.
Para acessar um formato de resposta não padrão, especifique o formato solicitado como um parâmetro de cadeia de caracteres de consulta na solicitação. Por exemplo:
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance?api-version=2025-04-07&format=text"
Em respostas json, todas as primitivas serão do tipo string, e valores ausentes ou inaplicáveis são sempre incluídos, mas serão definidos como uma cadeia de caracteres vazia.
Versionamento
O IMDS é versionado e especificar a versão da API na solicitação HTTP é obrigatório. A única exceção a esse requisito é o endpoint de versões, que pode ser usado para recuperar dinamicamente as versões disponíveis da API.
À medida que as versões mais recentes são adicionadas, as versões mais antigas ainda podem ser acessadas para compatibilidade se os scripts tiverem dependências em formatos de dados específicos.
Quando você não especifica uma versão, recebe um erro com uma lista das versões suportadas mais recentes:
{
"error": "Bad request. api-version is invalid or was not specified in the request. For more information refer to aka.ms/azureimds",
"newest-versions": [
"2025-04-07",
"2024-07-17",
"2024-03-15"
]
}
Versões de API suportadas
- 07-04-2025
- 17/07/2024
- 2024-03-15
- 2023-11-15
- 2023-07-01
- 2021-12-13
- 2021-11-15
- 01-11-2021
- 01-10-2021
- 2021-08-01
- 2021-05-01
- 2021-03-01
- 2021-02-01
- 2021-01-01
- 2020-12-01
- 01-10-2020
- 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
- 02-04-2018
- 2018-02-01
- 2017-12-01
- 2017-10-01
- 2017-08-01
- 2017-04-02
- 2017-03-01
Swagger
Uma definição Swagger completa para IMDS está disponível em: https://github.com/Azure/azure-rest-api-specs/blob/main/specification/imds/data-plane/InstanceMetadataService/readme.md
Disponibilidade regional
O serviço está geralmente disponível em todas as nuvens do Azure.
Ponto de extremidade raiz
O ponto de extremidade raiz é http://169.254.169.254/metadata.
Categorias de pontos finais
API IMDS contém várias categorias de endpoints que representam diferentes fontes de dados, cada uma das quais contém um ou mais endpoints. Consulte cada categoria para obter detalhes.
| Raiz da categoria | Descrição | Versão introduzida |
|---|---|---|
/metadata/attested |
Ver dados atestados | 2018-10-01 |
/metadata/identity |
Consulte Identidade gerenciada via IMDS | 2018-02-01 |
/metadata/instance |
Consulte Metadados da instância | 2017-04-02 |
/metadata/loadbalancer |
Consulte Recuperar metadados do balanceador de carga via IMDS | 01-10-2020 |
/metadata/scheduledevents |
Ver eventos agendados via IMDS | 2017-08-01 |
/metadata/versions |
Ver Versões | N/A |
Versões
Listar versões da API
Retorna o conjunto de versões de API suportadas.
GET /metadata/versions
Parâmetros
Nenhum (este endpoint não tem versão).
Resposta
{
"apiVersions": [
"2017-03-01",
"2017-04-02",
...
]
}
Metadados da instância
Obter metadados de VM
Expõe os metadados importantes para a instância da VM, incluindo computação, rede e armazenamento.
GET /metadata/instance
Parâmetros
| Nome | Obrigatório/Opcional | Descrição |
|---|---|---|
api-version |
Obrigatório | A versão usada para atender a solicitação. |
format |
Opcional* | O formato (json ou text) da resposta. *Nota: Pode ser necessário ao usar parâmetros de solicitação |
Este ponto de extremidade suporta filtragem de resposta através de parâmetros de rota.
Resposta
{
"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"
}]
}
}
Detalhamento do esquema:
Computação
| Dados | Descrição | Versão introduzida |
|---|---|---|
azEnvironment |
Ambiente do Azure onde a VM está sendo executada | 2018-10-01 |
additionalCapabilities.hibernationEnabled |
Identifica se a hibernação está habilitada na VM | 01-11-2021 |
customData |
Este recurso foi preterido e desativado no IMDS. Foi substituído por userData |
2019-02-01 |
evictionPolicy |
Define como uma VM spot será removida. | 2020-12-01 |
extendedLocation.type |
Tipo de localização expandida da máquina virtual. | 2021-03-01 |
extendedLocation.name |
Nome do local estendido da VM | 2021-03-01 |
host.id |
Nome do host da VM. Observe que uma VM terá um host ou um hostGroup, mas não ambos. | 2021-11-15 |
hostGroup.id |
Nome do hostGroup da VM. Observe que uma VM terá um host ou um hostGroup, mas não ambos. | 2021-11-15 |
isHostCompatibilityLayerVm |
Identifica se a VM é executada na camada de compatibilidade do host | 2020-06-01 |
licenseType |
Tipo de licença para o Benefício Híbrido do Azure. Isso só está presente para VMs habilitadas para AHB | 2020-09-01 |
location |
Região do Azure em que a VM está sendo executada | 2017-04-02 |
name |
Nome da VM | 2017-04-02 |
offer |
Ofereça informações para a imagem da VM e só esteja presente para imagens implantadas a partir da galeria de imagens do Azure | 2017-04-02 |
osProfile.adminUsername |
Especifica o nome da conta de administrador | 2020-07-15 |
osProfile.computerName |
Especifica o nome do computador | 2020-07-15 |
osProfile.disablePasswordAuthentication |
Especifica se a autenticação de senha está desabilitada. Isso só está presente para VMs Linux | 01-10-2020 |
osType |
Linux ou Windows | 2017-04-02 |
physicalZone |
Zona física da VM | 2023-11-15 |
placementGroupId |
Grupo de posicionamento do seu conjunto de escalas | 2017-08-01 |
plan |
Plano com nome, produto e editor para uma VM, caso seja uma Imagem do Azure Marketplace | 02-04-2018 |
platformUpdateDomain |
Atualizar domínio em que a VM está sendo executada | 2017-04-02 |
platformFaultDomain |
Domínio de falha em que a VM está sendo executada | 2017-04-02 |
platformSubFaultDomain |
Subdomínio de falha em que a VM está a ser executada, se aplicável. | 01-10-2021 |
priority |
Prioridade da VM. Consulte VMs Spot para obter mais informações | 2020-12-01 |
provider |
Provedor da Máquina Virtual | 2018-10-01 |
publicKeys |
Coleção de chaves públicas atribuídas à VM e caminhos | 02-04-2018 |
publisher |
Publicador da imagem da VM | 2017-04-02 |
resourceGroupName |
Grupo de recursos para sua máquina virtual | 2017-08-01 |
resourceId |
O ID totalmente qualificado do recurso | 2019-03-11 |
sku |
SKU específica para a imagem da VM | 2017-04-02 |
securityProfile.secureBootEnabled |
Identifica se a inicialização segura UEFI está habilitada na VM | 2020-06-01 |
securityProfile.virtualTpmEnabled |
Identifica se o TPM (Trusted Platform Module) virtual está habilitado na VM | 2020-06-01 |
securityProfile.encryptionAtHost |
Identifica se a Criptografia no Host está habilitada na VM | 01-11-2021 |
securityProfile.securityType |
Identifica se a VM é uma VM confiável ou uma VM confidencial | 2021-12-13 |
storageProfile |
Consulte Perfil de armazenamento abaixo | 2019-06-01 |
subscriptionId |
Subscrição do Azure para a Máquina Virtual | 2017-08-01 |
tags |
Tags para sua máquina virtual | 2017-08-01 |
tagsList |
Tags formatadas como uma matriz JSON para facilitar a análise programática | 2019-06-04 |
userData |
O conjunto de dados especificado quando a VM foi criada para uso durante ou após o provisionamento (codificado em Base64) | 2021-01-01 |
version |
Versão da imagem da VM | 2017-04-02 |
virtualMachineScaleSet.id |
ID do Conjunto de Escala de Máquina Virtual criado com orquestração flexível ao qual a Máquina Virtual pertence. Este campo não está disponível para Conjuntos de Escala de Máquina Virtual criados com orquestração uniforme. | 2021-03-01 |
vmId |
Identificador exclusivo para a VM. O blog referenciado serve apenas para VMs que têm SMBIOS < 2.6. Para VMs que têm SMBIOS >= 2.6, o UUID do DMI é exibido no formato little-endian, portanto, não há necessidade de alternar bytes. | 2017-04-02 |
vmScaleSetName |
Nome do Conjunto de Dimensionamento de Máquina Virtual do seu conjunto de dimensionamento | 2017-12-01 |
vmSize |
Tamanho da VM | 2017-04-02 |
zone |
Zona de disponibilidade da sua máquina virtual | 2017-12-01 |
† Esta versão ainda não está totalmente disponível e pode não ser suportada em todas as regiões.
Perfil de armazenamento
O perfil de armazenamento de uma VM é dividido em três categorias: referência de imagem, disco do sistema operacional e discos de dados, além de um objeto adicional para o disco temporário local.
O objeto de referência de imagem contém as seguintes informações sobre a imagem do sistema operacional, observe que uma imagem pode vir da plataforma, do mercado, da galeria da comunidade ou da galeria compartilhada direta, mas não de ambas:
| Dados | Descrição | Versão introduzida |
|---|---|---|
id |
ID do Recurso | 2019-06-01 |
offer |
Oferta de imagem da plataforma ou do marketplace | 2019-06-01 |
publisher |
Editor da imagem da plataforma ou do mercado | 2019-06-01 |
sku |
SKU da imagem da plataforma ou do mercado online | 2019-06-01 |
version |
Versão da imagem | 2019-06-01 |
communityGalleryImageId |
ID do recurso da imagem da comunidade, vazio caso contrário | 2023-07-01 |
sharedGalleryImageId |
ID do recurso ou imagem compartilhada direta, vazia caso contrário | 2023-07-01 |
exactVersion |
Versão da comunidade ou imagem diretamente partilhada | 2023-07-01 |
O objeto de disco do sistema operacional contém as seguintes informações sobre o disco do sistema operacional usado pela VM:
| Dados | Descrição |
|---|---|
caching |
Requisitos de cache |
createOption |
Informações sobre como a VM foi criada |
diffDiskSettings |
Configurações de disco efêmeras |
diskSizeGB |
Tamanho do disco em GB |
image |
Imagem do usuário de origem disco rígido virtual |
managedDisk |
Parâmetros de disco gerenciado |
name |
Nome do disco |
vhd |
Disco rígido virtual |
writeAcceleratorEnabled |
Se o writeAccelerator está ou não habilitado no disco |
A matriz de discos de dados contém uma lista de discos de dados anexados à VM. Cada objeto de disco de dados contém as seguintes informações:
| Dados | Descrição | Versão introduzida |
|---|---|---|
bytesPerSecondThrottle* |
Quota de leitura/escrita de disco em bytes | 2021-05-01 |
caching |
Requisitos de cache | 2019-06-01 |
createOption |
Informações sobre como a VM foi criada | 2019-06-01 |
diffDiskSettings |
Configurações de disco efêmeras | 2019-06-01 |
diskCapacityBytes* |
Tamanho do disco em bytes | 2021-05-01 |
diskSizeGB |
Tamanho do disco em GB | 2019-06-01 |
encryptionSettings |
Configurações de criptografia para o disco | 2019-06-01 |
image |
Imagem do usuário de origem disco rígido virtual | 2019-06-01 |
isSharedDisk* |
Identifica se o disco é compartilhado entre recursos | 2021-05-01 |
isUltraDisk |
Identifica se o disco de dados é um Ultra Disk | 2021-05-01 |
lun |
Número da unidade lógica do disco | 2019-06-01 |
managedDisk |
Parâmetros de disco gerenciado | 2019-06-01 |
name |
Nome do disco | 2019-06-01 |
opsPerSecondThrottle* |
Cota de leitura/gravação de disco em IOPS | 2021-05-01 |
osType |
Tipo de SO incluído no disco | 2019-06-01 |
vhd |
Disco rígido virtual | 2019-06-01 |
writeAcceleratorEnabled |
Se o writeAccelerator está ou não habilitado no disco | 2019-06-01 |
Estes campos são preenchidos apenas para Ultra Disks; eles são strings vazios provenientes de discos não-Ultra.
O blob de configurações de criptografia contém dados sobre como o disco é criptografado (se estiver criptografado):
| Dados | Descrição | Versão introduzida |
|---|---|---|
diskEncryptionKey.sourceVault.id |
A localização da chave de encriptação do disco | 01-11-2021 |
diskEncryptionKey.secretUrl |
A localização do segredo | 01-11-2021 |
keyEncryptionKey.sourceVault.id |
O local da chave de cifragem | 01-11-2021 |
keyEncryptionKey.keyUrl |
A localização da chave | 01-11-2021 |
O objeto de disco de recurso contém o tamanho do Disco Temporário Local anexado à VM, se tiver um, em kilobytes. Se não houver nenhum disco temporário local para a VM, esse valor será 0.
| Dados | Descrição | Versão introduzida |
|---|---|---|
resourceDisk.size |
Tamanho do disco temporário local para a VM (em kB) | 2021-02-01 |
Rede
| Dados | Descrição | Versão introduzida |
|---|---|---|
ipv4.ipAddress.privateIpAddress |
Endereço IPv4 local da VM | 2017-04-02 |
ipv4.ipAddress.publicIpAddress |
Endereço IPv4 público da VM | 2017-04-02 |
ipv4.subnet.address |
Endereço de sub-rede da VM | 2017-04-02 |
ipv4.subnet.prefix |
Prefixo da sub-rede, exemplo 24 | 2017-04-02 |
ipv6.ipAddress.privateIpAddress |
Endereço IPv6 local da VM | 2017-04-02 |
macAddress |
Endereço mac da VM | 2017-04-02 |
Nota
Não é garantido que as NICs devolvidas pela chamada de rede estejam numa ordem específica.
Obter dados do usuário
Ao criar uma nova VM, você pode especificar um conjunto de dados a serem usados durante ou após o provisionamento da VM e recuperá-los por meio do IMDS. Verifique aqui a experiência de utilizador com dados de ponta a ponta aqui.
Para configurar os dados do usuário, utilize o modelo de início rápido aqui. O exemplo abaixo mostra como recuperar esses dados por meio do IMDS. Este recurso é lançado com a versão 2021-01-01 e acima.
Nota
Aviso de segurança: O IMDS está aberto a todos os aplicativos na VM, dados confidenciais não devem ser colocados nos dados do usuário.
$userData = Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/compute/userData?api-version=2025-04-07&format=text"
[System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($userData))
Exemplo 1: Rastreando VM em execução no Azure
Como um provedor de serviços, você pode precisar controlar o número de VMs executando seu software ou ter agentes que precisam rastrear a exclusividade da VM. Para obter uma ID exclusiva para uma VM, use o vmId campo do Serviço de Metadados de Instância.
Pedir
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/compute/vmId?api-version=2025-04-07&format=text"
Resposta
5c08b38e-4d57-4c23-ac45-aca61037f084
Amostra 2: Colocação de diferentes réplicas de dados
Para determinados cenários, o posicionamento de diferentes réplicas de dados é de suma importância. Por exemplo, o posicionamento de réplicas do HDFS ou o posicionamento de contêineres por meio de um orquestrador pode exigir que você saiba o platformFaultDomain e o platformUpdateDomain sobre os quais a VM está sendo executada.
Você também pode usar Zonas de Disponibilidade para as instâncias ao tomar essas decisões.
Você pode consultar esses dados diretamente via IMDS.
Pedir
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/compute/platformFaultDomain?api-version=2025-04-07&format=text"
Resposta
0
Exemplo 3: Obter tags de VM
As tags de VM são incluídas na API da instância em instance/compute/tags endpoint. As tags podem ter sido aplicadas à sua VM do Azure para organizá-las logicamente em uma taxonomia. As tags atribuídas a uma VM podem ser recuperadas usando a solicitação abaixo.
Pedir
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/compute/tags?api-version=2025-04-07&format=text"
Resposta
Department:IT;ReferenceNumber:123456;TestStatus:Pending
O tags campo é uma cadeia de caracteres com as tags delimitadas por ponto-e-vírgula. Essa saída pode ser um problema se os ponto-e-vírgula forem usados nas próprias tags. Se um analisador for escrito para extrair programaticamente as tags, você deve confiar no tagsList campo. O tagsList campo é uma matriz JSON sem delimitadores e, consequentemente, mais fácil de analisar. As tagsList atribuídas a uma VM podem ser recuperadas usando a solicitação abaixo.
Pedir
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/compute/tagsList?api-version=2025-04-07" | ConvertTo-Json -Depth 64
Resposta
{
"value": [
{
"name": "Department",
"value": "IT"
},
{
"name": "ReferenceNumber",
"value": "123456"
},
{
"name": "TestStatus",
"value": "Pending"
}
],
"Count": 3
}
Exemplo 4: Obter mais informações sobre a VM durante o caso de suporte
Como provedor de serviços, você pode receber uma chamada de suporte onde gostaria de saber mais informações sobre a VM. Pedir ao cliente para compartilhar os metadados de computação pode fornecer informações básicas para o profissional de suporte saber sobre o tipo de VM no Azure.
Pedir
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/compute?api-version=2025-04-07" | ConvertTo-Json -Depth 64
Resposta
Nota
A resposta é uma cadeia de caracteres JSON. O exemplo de resposta a seguir é muito bem impresso para facilitar a leitura.
{
"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"
}
Exemplo 5: Obter o Ambiente do Azure onde a VM está sendo executada
O Azure tem várias nuvens soberanas como o Azure Government. Às vezes, você precisa do Ambiente do Azure para tomar algumas decisões de tempo de execução. O exemplo a seguir mostra como você pode obter esse comportamento.
Pedir
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/compute/azEnvironment?api-version=2025-04-07&format=text"
Resposta
AzurePublicCloud
A nuvem e os valores do ambiente do Azure estão listados aqui.
| Nuvem | Ambiente do Azure |
|---|---|
| Todas as regiões globais do Azure disponíveis em geral | AzurePublicCloud |
| Azure Government | AzureUSGovernmentCloud |
| Microsoft Azure operado pela 21Vianet | AzureChinaCloud |
| Azure Alemanha | AzureGermanCloud |
Exemplo 6: Recuperar informações de rede
Pedir
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/network?api-version=2025-04-07" | ConvertTo-Json -Depth 64
Resposta
{
"interface": [
{
"ipv4": {
"ipAddress": [
{
"privateIpAddress": "10.1.0.4",
"publicIpAddress": "X.X.X.X"
}
],
"subnet": [
{
"address": "10.1.0.0",
"prefix": "24"
}
]
},
"ipv6": {
"ipAddress": [{
"privateIpAddress": "b4bc:8fce:f33b:4990:cced:d94e:ab4f:6ea0"
}]
},
"macAddress": "000D3AF806EC"
}
]
}
Exemplo 7: Recuperar endereço IP público
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=2025-04-07&format=text"
Nota
- Se você estiver procurando recuperar informações do IMDS para o endereço IP público do SKU padrão , consulte a API de metadados do balanceador de carga para obter mais informações.
Dados atestados
Obter dados atestados
O IMDS ajuda a fornecer garantias de que os dados fornecidos são provenientes do Azure. A Microsoft assina parte dessas informações, para que você possa confirmar que uma imagem no Azure Marketplace é a que você está executando no Azure.
GET /metadata/attested/document
Parâmetros
| Nome | Obrigatório/Opcional | Descrição |
|---|---|---|
api-version |
Obrigatório | A versão usada para atender a solicitação. |
nonce |
Opcional | Uma cadeia de caracteres de 10 dígitos que atua como um nonce criptográfico. Se nenhum valor for fornecido, o IMDS usará o timestamp UTC atual. |
Resposta
{
"encoding":"pkcs7",
"signature":"MIIEEgYJKoZIhvcNAQcCoIIEAzCCA/8CAQExDzANBgkqhkiG9w0BAQsFADCBugYJKoZIhvcNAQcBoIGsBIGpeyJub25jZSI6IjEyMzQ1NjY3NjYiLCJwbGFuIjp7Im5hbWUiOiIiLCJwcm9kdWN0IjoiIiwicHVibGlzaGVyIjoiIn0sInRpbWVTdGFtcCI6eyJjcmVhdGVkT24iOiIxMS8yMC8xOCAyMjowNzozOSAtMDAwMCIsImV4cGlyZXNPbiI6IjExLzIwLzE4IDIyOjA4OjI0IC0wMDAwIn0sInZtSWQiOiIifaCCAj8wggI7MIIBpKADAgECAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBBAUAMCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tMB4XDTE4MTEyMDIxNTc1N1oXDTE4MTIyMDIxNTc1NlowKzEpMCcGA1UEAxMgdGVzdHN1YmRvbWFpbi5tZXRhZGF0YS5henVyZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAML/tBo86ENWPzmXZ0kPkX5dY5QZ150mA8lommszE71x2sCLonzv4/UWk4H+jMMWRRwIea2CuQ5RhdWAHvKq6if4okKNt66fxm+YTVz9z0CTfCLmLT+nsdfOAsG1xZppEapC0Cd9vD6NCKyE8aYI1pliaeOnFjG0WvMY04uWz2MdAgMBAAGjYDBeMFwGA1UdAQRVMFOAENnYkHLa04Ut4Mpt7TkJFfyhLTArMSkwJwYDVQQDEyB0ZXN0c3ViZG9tYWluLm1ldGFkYXRhLmF6dXJlLmNvbYIQZ8VuSofHbJRAQNBNpiASdDANBgkqhkiG9w0BAQQFAAOBgQCLSM6aX5Bs1KHCJp4VQtxZPzXF71rVKCocHy3N9PTJQ9Fpnd+bYw2vSpQHg/AiG82WuDFpPReJvr7Pa938mZqW9HUOGjQKK2FYDTg6fXD8pkPdyghlX5boGWAMMrf7bFkup+lsT+n2tRw2wbNknO1tQ0wICtqy2VqzWwLi45RBwTGB6DCB5QIBATA/MCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBCwUAMA0GCSqGSIb3DQEBAQUABIGAld1BM/yYIqqv8SDE4kjQo3Ul/IKAVR8ETKcve5BAdGSNkTUooUGVniTXeuvDj5NkmazOaKZp9fEtByqqPOyw/nlXaZgOO44HDGiPUJ90xVYmfeK6p9RpJBu6kiKhnnYTelUk5u75phe5ZbMZfBhuPhXmYAdjc7Nmw97nx8NnprQ="
}
O blob de assinatura é uma versão do documento assinada pelo pkcs7. Ele contém o certificado usado para assinatura junto com certos detalhes específicos da VM.
Para VMs criadas usando o Gerenciador de Recursos do Azure, o documento inclui vmId, sku, nonce, subscriptionId, timeStamp da criação e expiração do documento e as informações do plano sobre a imagem. As informações do plano são preenchidas apenas para imagens do Azure Marketplace.
Para VMs criadas usando o modelo de implantação clássico, apenas o vmId e o subscriptionId têm a garantia de serem preenchidos. Você pode extrair o certificado da resposta e usá-lo para confirmar se a resposta é válida e vem do Azure.
O documento descodificado contém os seguintes campos:
| Dados | Descrição | Versão introduzida |
|---|---|---|
licenseType |
Tipo de licença para o Benefício Híbrido do Azure. Isso só está presente para VMs habilitadas para AHB. | 2020-09-01 |
nonce |
Uma cadeia de caracteres que pode ser fornecida opcionalmente com a solicitação. Se não nonce tiver sido fornecido, o carimbo de data/hora universal coordenado atual será usado. |
2018-10-01 |
plan |
O Plano de Imagem do Azure Marketplace. Contém o identificador do plano (nome), a imagem ou a oferta de produto (produto) e o identificador da editora (editor). | 2018-10-01 |
timestamp.createdOn |
O carimbo horário UTC, de quando o documento assinado foi criado | 2018-20-01 |
timestamp.expiresOn |
O carimbo de data/hora UTC para quando o documento assinado expira | 2018-10-01 |
vmId |
Identificador exclusivo para a VM | 2018-10-01 |
subscriptionId |
Subscrição do Azure para a Máquina Virtual | 2019-04-30 |
sku |
SKU específica para a imagem da VM (correlacionada à compute/sku propriedade do ponto de extremidade Instance Metadata [/metadata/instance]) |
2019-11-01 |
Nota
Para VMs clássicas (que não são do Azure Resource Manager), apenas o vmId tem a garantia de ser preenchido.
Exemplo de documento:
{
"nonce":"20201130-211924",
"plan":{
"name":"planName",
"product":"planProduct",
"publisher":"planPublisher"
},
"sku":"Windows-Server-2012-R2-Datacenter",
"subscriptionId":"aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"timeStamp":{
"createdOn":"11/30/20 21:19:19 -0000",
"expiresOn":"11/30/20 21:19:24 -0000"
},
"vmId":"02aab8a4-74ef-476e-8182-f6d2ba4166a6"
}
Guia de validação de assinatura
Ao validar a assinatura, você deve confirmar se ela foi criada com um certificado do Azure. Isso é feito validando o Nome Alternativo do Sujeito (SAN) do certificado.
Exemplo de SAN DNS Name=eastus.metadata.azure.com, DNS Name=metadata.azure.com
Nota
O domínio para a nuvem pública e cada nuvem soberana será diferente.
| Nuvem | Domínio em SAN |
|---|---|
| Todas as regiões globais do Azure disponíveis em geral | *.metadata.azure.com |
| Azure Government | *.metadata.azure.us |
| Azure operado pela 21Vianet | *.metadata.azure.cn |
| Azure Alemanha | *.metadata.microsoftazure.de |
Nota
Os certificados podem não ter uma correspondência exata para o domínio. Por esse motivo, a validação da certificação deve aceitar qualquer subdomínio (por exemplo, em regiões de disponibilidade geral de nuvem pública aceitam *.metadata.azure.com).
Não recomendamos a fixação de certificados para certificados intermediários. Para obter mais orientações, consulte Fixação de certificados - Fixação de certificados e serviços do Azure. Observe que o Serviço de Metadados de Instância do Azure NÃO oferecerá notificações para futuras alterações da Autoridade de Certificação. Em vez disso, você deve seguir o artigo centralizado sobre detalhes da Autoridade de Certificação do Azure para todas as atualizações futuras.
Exemplo 1: Validar se a VM está em execução no Azure
Os fornecedores no Azure Marketplace querem garantir que o seu software está licenciado para ser executado apenas no Azure. Se alguém copiar o VHD para um ambiente local, o fornecedor precisará ser capaz de detetar isso. Por meio do IMDS, esses fornecedores podem obter dados assinados que garantem resposta apenas do Azure.
Nota
Este exemplo requer que o utilitário jq seja instalado.
Validação
# Get the signature
$attestedDoc = Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri http://169.254.169.254/metadata/attested/document?api-version=2025-04-07
# Decode the signature
$signature = [System.Convert]::FromBase64String($attestedDoc.signature)
Verifique se a assinatura é do Microsoft Azure e verifique se há erros na cadeia de certificados.
# 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
O nonce no documento assinado pode ser comparado se você forneceu um nonce parâmetro na solicitação inicial.
Identidade gerida
Uma identidade gerenciada, atribuída pelo sistema, pode ser habilitada na VM. Você também pode atribuir uma ou mais identidades gerenciadas atribuídas pelo usuário à VM. Em seguida, você pode solicitar tokens para identidades gerenciadas do IMDS. Use esses tokens para autenticar com outros serviços do Azure, como o Azure Key Vault.
Para obter etapas detalhadas para habilitar esse recurso, consulte Adquirir um token de acesso.
Metadados do balanceador de carga
Quando você coloca instâncias de máquina virtual ou conjunto de máquinas virtuais atrás de um Balanceador de Carga Padrão do Azure, pode usar o IMDS para recuperar metadados relacionados ao balanceador de carga e às instâncias. Para obter mais informações, consulte Recuperar informações do balanceador de carga.
Eventos agendados
Você pode obter o status dos eventos agendados usando o IMDS. Em seguida, o usuário pode especificar um conjunto de ações a serem executadas nesses eventos. Para obter mais informações, consulte Eventos agendados para Linux ou Eventos agendados para Windows.
Código de exemplo em diferentes idiomas
A tabela a seguir lista exemplos de chamada de IMDS usando idiomas diferentes dentro da VM:
Erros e depuração
Se houver um elemento de dados não encontrado ou uma solicitação malformada, o Serviço de Metadados de Instância retornará erros HTTP padrão. Por exemplo:
| Código de estado HTTP | Razão |
|---|---|
200 OK |
O pedido foi bem-sucedido. |
400 Bad Request |
Cabeçalho ausente Metadata: true ou parâmetro format=json ausente ao interrogar um nó folha |
404 Not Found |
O elemento solicitado não existe |
405 Method Not Allowed |
O método HTTP (verbo) não é suportado no endpoint. |
410 Gone |
Tente novamente depois de algum tempo por um máximo de 70 segundos |
429 Too Many Requests |
Os limites de taxa de API foram excedidos |
500 Service Error |
Tente novamente depois de algum tempo |
Perguntas mais frequentes
Estou recebendo o erro
400 Bad Request, Required metadata header not specified. Qual é o significado disto?- O IMDS requer que o cabeçalho
Metadata: trueseja passado na solicitação. Passar esse cabeçalho na chamada REST permite o acesso ao IMDS.
- O IMDS requer que o cabeçalho
Por que não estou obtendo informações de computação para minha VM?
- Atualmente, o IMDS suporta apenas instâncias criadas com o Azure Resource Manager.
Criei minha VM por meio do Azure Resource Manager há algum tempo. Por que não estou vendo informações de metadados de computação?
- Se você criou sua VM após setembro de 2016, adicione uma tag para começar a ver metadados de computação. Se você criou sua VM antes de setembro de 2016, adicione ou remova extensões ou discos de dados à instância da VM para atualizar metadados.
Os dados do usuário são iguais aos dados personalizados?
- Os dados do usuário oferecem a funcionalidade semelhante aos dados personalizados, permitindo que você passe seus próprios metadados para a instância da VM. A diferença é que os dados do usuário são recuperados por meio do IMDS e são persistentes durante todo o tempo de vida da instância da VM. O recurso de dados personalizados existente continuará a funcionar conforme descrito neste artigo. No entanto, você só pode obter dados personalizados através da pasta do sistema local, não através do IMDS.
Por que não estou vendo todos os dados preenchidos para uma nova versão?
- Se você criou sua VM após setembro de 2016, adicione uma tag para começar a ver metadados de computação. Se você criou sua VM antes de setembro de 2016, adicione ou remova extensões ou discos de dados à instância da VM para atualizar metadados.
Por que estou recebendo o erro
500 Internal Server Errorou410 Resource Gone?- Repita o pedido. Para obter mais informações, consulte Tratamento de falhas transitórias. Se o problema persistir, crie um problema de suporte no portal do Azure para a VM.
Isso funcionaria para instâncias de conjunto de escala?
- Sim, o IMDS está disponível para instâncias de conjunto de escala.
Atualizei minhas tags em meus conjuntos de escala, mas elas não aparecem nas instâncias (ao contrário das VMs de instância única). Estou fazendo algo errado?
- Atualmente, as tags para conjuntos de escala só são exibidas para a VM em uma reinicialização, recriação de imagem ou alteração de disco na instância.
Por que não estou vendo as informações de SKU da minha VM em
instance/computedetalhes?- Para imagens personalizadas criadas a partir do Azure Marketplace, a plataforma Azure não retém as informações de SKU para a imagem personalizada e os detalhes para quaisquer VMs criadas a partir da imagem personalizada. Isso ocorre por design e, portanto, não aparece nos detalhes da VM
instance/compute.
- Para imagens personalizadas criadas a partir do Azure Marketplace, a plataforma Azure não retém as informações de SKU para a imagem personalizada e os detalhes para quaisquer VMs criadas a partir da imagem personalizada. Isso ocorre por design e, portanto, não aparece nos detalhes da VM
Porque é que a minha chamada para o serviço atingiu o tempo limite (ou não conseguiu ligar)?
As chamadas de metadados devem ser feitas a partir do endereço IP primário atribuído à placa de rede primária da VM. Além disso, se você alterou suas rotas, deve haver uma rota para o endereço 169.254.169.254/32 na tabela de roteamento local da VM.
Despeje sua tabela de roteamento local e procure a entrada IMDS. Por exemplo:
route printIPv4 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) ...Verifique se existe uma rota para
169.254.169.254, e anote a interface de rede correspondente (por exemplo,172.16.69.7).Descarregue a configuração da interface e encontre a interface que corresponde à referenciada na tabela de encaminhamento, anotando o endereço MAC (físico).
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) ...Confirme se a interface corresponde à NIC primária e ao IP primário da VM. Você pode encontrar a NIC e o IP primários examinando a configuração de rede no portal do Azure ou pesquisando-a com a CLI do Azure. Observe os IPs privados (e o endereço MAC se você estiver usando a CLI). Aqui está um exemplo de CLI do PowerShell:
$ResourceGroup = '<Resource_Group>' $VmName = '<VM_Name>' $NicNames = az vm nic list --resource-group $ResourceGroup --vm-name $VmName | ConvertFrom-Json | Foreach-Object { $_.id.Split('/')[-1] } foreach($NicName in $NicNames) { $Nic = az vm nic show --resource-group $ResourceGroup --vm-name $VmName --nic $NicName | ConvertFrom-Json Write-Host $NicName, $Nic.primary, $Nic.macAddress }wintest767 True 00-0D-3A-E5-1C-C0Se eles não corresponderem, atualize a tabela de roteamento para que a NIC e o IP primários sejam direcionados.
Cluster de Failover no Windows Server
Quando você está consultando o IMDS com clustering de failover, às vezes é necessário adicionar uma rota à tabela de roteamento. Saiba como:
Abra uma linha de comandos com privilégios de administrador.
Execute o seguinte comando e anote o endereço da Interface para Destino de Rede (
0.0.0.0) na Tabela de Rotas IPv4.
route printNota
A saída de exemplo a seguir é de uma VM do Windows Server com cluster de failover habilitado. Para simplificar, a saída contém apenas a Tabela de Rotas IPv4.
IPv4 Route Table =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 10.0.1.1 10.0.1.10 266 10.0.1.0 255.255.255.192 On-link 10.0.1.10 266 10.0.1.10 255.255.255.255 On-link 10.0.1.10 266 10.0.1.15 255.255.255.255 On-link 10.0.1.10 266 10.0.1.63 255.255.255.255 On-link 10.0.1.10 266 127.0.0.0 255.0.0.0 On-link 127.0.0.1 331 127.0.0.1 255.255.255.255 On-link 127.0.0.1 331 127.255.255.255 255.255.255.255 On-link 127.0.0.1 331 169.254.0.0 255.255.0.0 On-link 169.254.1.156 271 169.254.1.156 255.255.255.255 On-link 169.254.1.156 271 169.254.255.255 255.255.255.255 On-link 169.254.1.156 271 224.0.0.0 240.0.0.0 On-link 127.0.0.1 331 224.0.0.0 240.0.0.0 On-link 169.254.1.156 271 255.255.255.255 255.255.255.255 On-link 127.0.0.1 331 255.255.255.255 255.255.255.255 On-link 169.254.1.156 271 255.255.255.255 255.255.255.255 On-link 10.0.1.10 266Execute o comando a seguir e use o endereço da Interface para Destino de Rede (
0.0.0.0), que é (10.0.1.10) neste exemplo.route add 169.254.169.254/32 10.0.1.10 metric 1 -p
Suporte
Se não conseguir obter uma resposta de metadados após várias tentativas, pode criar um problema de suporte no portal do Azure.
Comentários sobre o produto
Você pode fornecer feedback e ideias de produtos para nosso canal de feedback do usuário no Serviço de Metadados de Instância de > Máquinas Virtuais aqui