Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: ✔️ mesin virtual Linux ✔️ mesin virtual Windows ✔️ Set skala fleksibel
Azure Instance Metadata Service (IMDS) menyediakan informasi tentang instans komputer virtual yang sedang berjalan. Anda dapat menggunakannya untuk mengelola dan mengonfigurasi komputer virtual Anda. Informasi ini mencakup SKU, penyimpanan, konfigurasi jaringan, dan peristiwa pemeliharaan yang akan datang. Untuk daftar lengkap data yang tersedia, lihat Ringkasan Kategori Titik Akhir.
IMDS tersedia untuk menjalankan instans komputer virtual (VM) dan instans himpunan skala. Semua titik akhir mendukung VM yang dibuat dan dikelola dengan Azure Resource Manager. Hanya kategori Dibuktikan dan bagian Jaringan dari kategori Instance yang mendukung VM yang dibuat dengan model penyebaran klasik. Titik akhir yang dibuktikan melakukannya hanya sampai batas tertentu.
IMDS adalah REST API yang tersedia di alamat IP terkenal dan tidak dapat dirutekan (169.254.169.254). Anda hanya dapat mengaksesnya dari dalam VM. Komunikasi antara VM dan IMDS tidak pernah meninggalkan host.
Minta klien HTTP Anda melewati proksi web dalam VM saat mengkueri IMDS.
Penggunaan
Mengakses Azure Instance Metadata Service
Untuk mengakses IMDS, buat VM dari Azure Resource Manager atau portal Microsoft Azure, dan gunakan sampel berikut. Untuk contoh selengkapnya, lihat Sampel Azure Instance Metadata.
Berikut adalah contoh kode untuk mengambil semua metadata untuk suatu instans. Untuk mengakses sumber data tertentu, lihat Kategori Titik Akhir untuk ringkasan tentang semua fitur yang tersedia.
Permintaan
Penting
Contoh ini menghindari proksi. Anda harus melewati proksi saat mengkueri IMDS. Lihat Proksi untuk informasi tambahan.
Catatan
Permintaan IMDS harus dikirim menggunakan NIC utama VM dan IP utama, dan DHCP harus diaktifkan.
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 membutuhkan PowerShell V6 atau lebih tinggi. Lihat repositori sampel kami untuk contoh dengan versi PowerShell yang lebih lama.
Respons
Catatan
Responsnya adalah string JSON. Contoh respons berikut diformat untuk keterbacaan.
{
"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"
}]
}
}
Keamanan dan autentikasi
Instance Metadata Service hanya dapat diakses dari dalam instans komputer virtual yang berjalan pada alamat IP yang tidak dapat dirutekan. VM hanya dapat berinteraksi dengan metadata/fungsionalitasnya sendiri. API hanya terdiri dari HTTP dan tidak pernah meninggalkan host.
Untuk memastikan bahwa permintaan ditujukan langsung ke IMDS dan untuk mencegah pengalihan yang tidak dimaksudkan atau tidak diinginkan, permintaan tersebut harus:
- Harus berisi header
-
Tidak boleh berisi header
X-Forwarded-For
Setiap permintaan yang tidak memenuhi kedua persyaratan ini ditolak oleh layanan.
Penting
IMDS bukan saluran untuk data sensitif. API tidak diautentikasi dan terbuka untuk semua proses pada VM. Informasi yang terpapar melalui layanan ini harus dianggap sebagai informasi bersama bagi semua aplikasi yang berjalan di dalam VM.
Jika tidak diperlukan untuk setiap proses pada VM untuk mengakses titik akhir IMDS, Anda dapat mengatur aturan firewall lokal untuk membatasi akses. Misalnya, jika hanya layanan sistem yang diketahui yang perlu mengakses layanan metadata instans, Anda dapat menetapkan aturan firewall pada titik akhir IMDS, hanya mengizinkan proses tertentu untuk mengakses, atau menolak akses untuk proses lainnya.
Proksi
IMDS tidak dimaksudkan untuk digunakan di belakang proksi, dan penggunaan seperti itu tidak didukung. Sebagian besar klien HTTP menyediakan opsi untuk menonaktifkan proksi atas permintaan Anda, dan fungsi ini harus digunakan saat berkomunikasi dengan IMDS. Lihat dokumentasi klien Anda untuk detailnya.
Penting
Bahkan jika Anda tidak mengetahui konfigurasi proksi apa pun dalam lingkungan, Anda masih harus mengganti setiap pengaturan proksi klien default. Konfigurasi proksi dapat ditemukan secara otomatis, dan jika Anda gagal untuk melewati konfigurasi tersebut, Anda dapat terpapar risiko pemadaman jika konfigurasi mesin diubah di masa depan.
Pembatasan tarif
Secara umum, permintaan ke IMDS dibatasi hingga 5 permintaan per detik (atas dasar per VM). Permintaan yang melebihi ambang ini akan ditolak dengan 429 tanggapan. Permintaan ke kategori Identitas Terkelola dibatasi hingga 20 permintaan per detik dan 5 permintaan bersamaan (per VM).
Kata kerja HTTP
Kata kerja HTTP berikut saat ini didukung:
| Kata kerja | Deskripsi |
|---|---|
GET |
Mengambil sumber daya yang diminta |
Parameter
Titik akhir mungkin mendukung parameter yang wajib dan/atau opsional. Lihat Skema dan dokumentasi untuk titik akhir tertentu yang dimaksud untuk detailnya.
Parameter kueri
Titik akhir IMDS mendukung parameter dalam string kueri HTTP. Contohnya:
http://169.254.169.254/metadata/instance/compute?api-version=2025-04-07&format=json
Menentukan parameter-parameternya:
| Nama | Nilai |
|---|---|
api-version |
2025-04-07 |
format |
json |
Permintaan dengan nama parameter kueri duplikat akan ditolak.
Parameter rute
Untuk beberapa titik akhir yang mengembalikan blob json yang lebih besar, kami mendukung penambahan parameter rute ke titik akhir permintaan untuk memfilter turun ke subset respons:
http://169.254.169.254/metadata/<endpoint>/[<filter parameter>/...]?<query parameters>
Parameter sesuai dengan indeks/kunci yang akan digunakan untuk menelusuri objek json dalam konteks interaksi dengan representasi yang sudah diurai.
Misalnya, /metadata/instance mengembalikan objek 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"
},
...
]
}
}
Jika kita ingin memfilter respons ke properti komputasi saja, kita akan mengirimkan permintaan:
http://169.254.169.254/metadata/instance/compute?api-version=<version>
Demikian pula, jika kita ingin memfilter properti bersarang atau elemen array tertentu, kita terus menambahkan kunci:
http://169.254.169.254/metadata/instance/network/interface/0?api-version=<version>
akan memfilter elemen pertama dari properti Network.interface dan mengembalikan:
{
"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"
}
Catatan
Saat memfilter ke node leaf, format=json tidak berfungsi. Untuk kueri ini, format=text perlu ditentukan secara eksplisit karena format defaultnya adalah json.
Skema
Format data
Secara default, IMDS mengembalikan data dalam format JSON (Content-Type: application/json). Namun, titik akhir yang mendukung pemfilteran respons (lihat Parameter Rute) juga mendukung format text.
Untuk mengakses format respons non-default, tentukan format yang diminta sebagai parameter string kueri dalam permintaan. Contohnya:
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance?api-version=2025-04-07&format=text"
Dalam Respons JSON, semua primitif akan bertipe string, dan nilai yang hilang atau tidak dapat diterapkan selalu disertakan namun akan ditetapkan ke string kosong.
Pengelolaan versi
IMDS memiliki versi serta menentukan versi API dalam permintaan HTTP adalah wajib. Satu-satunya pengecualian untuk persyaratan ini adalah titik akhir versi, yang dapat digunakan untuk mengambil secara dinamis versi API yang tersedia.
Saat versi baru ditambahkan, versi lama masih dapat diakses untuk kompatibilitas jika skrip Anda memiliki dependensi terhadap format data tertentu.
Jika Anda tidak menentukan versi, Anda akan mengalami kesalahan dengan daftar versi terbaru yang didukung:
{
"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"
]
}
Versi API yang didukung
- 2025-04-07
- 2024-07-17
- 2024-03-15
- 2023-11-15
- 2023-07-01
- 2021-12-13
- 2021-11-15
- 2021-11-01
- 01-10-2021
- 2021-08-01
- 2021-05-01
- 2021-03-01
- 2021-02-01
- 2021-01-01
- 2020-12-01
- 1 Oktober 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
- 2018-04-02
- 2018-02-01
- 2017-12-01
- 2017-10-01
- 2017-08-01
- 2017-04-02
- 2017-03-01
Swagger
Definisi Swagger lengkap untuk IMDS tersedia di: https://github.com/Azure/azure-rest-api-specs/blob/main/specification/imds/data-plane/InstanceMetadataService/readme.md
Ketersediaan regional
Layanan ini umumnya tersedia di semua cloud Azure.
Titik Akhir Utama
Titik akhir akarnya adalah http://169.254.169.254/metadata.
Kategori titik akhir
API IMDS berisi beberapa kategori titik akhir yang mewakili sumber data yang berbeda, yang masing-masing berisi satu atau beberapa titik akhir. Lihat setiap kategori untuk detailnya.
| Kategori utama | Deskripsi | Versi yang diperkenalkan |
|---|---|---|
/metadata/attested |
Lihat Data yang Dibuktikan | 2018-10-01 |
/metadata/identity |
Lihat Identitas Terkelola melalui IMDS | 2018-02-01 |
/metadata/instance |
Lihat Instance Metadata | 2017-04-02 |
/metadata/loadbalancer |
Lihat Ambil metadata Load Balancer melalui IMDS | 1 Oktober 2020 |
/metadata/scheduledevents |
Lihat Peristiwa Terjadwal melalui IMDS | 2017-08-01 |
/metadata/versions |
Lihat Versi | Tidak Berlaku / Tidak Tersedia |
Versi
Cantumkan versi API
Menampilkan sekumpulan versi API yang didukung.
GET /metadata/versions
Parameter
Tidak tersedia (titik akhir ini tidak memiliki versi).
Respons
{
"apiVersions": [
"2017-03-01",
"2017-04-02",
...
]
}
Metadata instans
Dapatkan metadata VM
Memaparkan metadata penting untuk instans VM, termasuk komputasi, jaringan, dan penyimpanan.
GET /metadata/instance
Parameter
| Nama | Diperlukan/Opsional | Deskripsi |
|---|---|---|
api-version |
Wajib diisi | Versi yang digunakan untuk melayani permintaan. |
format |
Opsional* | Format (json atau text) dari respons. *Catatan: Mungkin diperlukan saat menggunakan parameter permintaan |
Titik akhir ini mendukung pemfilteran respons melalui parameter rute.
Respons
{
"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"
}]
}
}
Perincian skema:
Compute
| Data | Deskripsi | Versi yang diperkenalkan |
|---|---|---|
azEnvironment |
Lingkungan Azure tempat VM berjalan | 2018-10-01 |
additionalCapabilities.hibernationEnabled |
Mengidentifikasi jika hibernasi diaktifkan di VM | 2021-11-01 |
customData |
Fitur ini tidak digunakan lagi dan dinonaktifkan dalam IMDS. Ini telah digantikan oleh userData |
2019-02-01 |
evictionPolicy |
Mengatur bagaimana VM Spot akan dibuang. | 2020-12-01 |
extendedLocation.type |
Jenis lokasi VM yang diperluas. | 2021-03-01 |
extendedLocation.name |
Nama lokasi VM yang diperluas | 2021-03-01 |
host.id |
Nama host dari VM. Perhatikan bahwa VM akan memiliki host atau grup host tetapi tidak keduanya. | 2021-11-15 |
hostGroup.id |
Nama grup host dari VM. Perhatikan bahwa VM akan memiliki host atau grup host tetapi tidak keduanya. | 2021-11-15 |
isHostCompatibilityLayerVm |
Mengidentifikasi apakah VM berjalan pada Lapisan Kompatibilitas Host | 2020-06-01 |
licenseType |
Jenis lisensi untuk Azure Hybrid Benefit. Ini hanya ada untuk VM yang didukung AHB | 2020-09-01 |
location |
Wilayah Azure tempat VM berjalan | 2017-04-02 |
name |
Nama dari VM | 2017-04-02 |
offer |
Menawarkan informasi untuk gambar VM dan hanya ada untuk gambar yang disebarkan dari galeri gambar Azure | 2017-04-02 |
osProfile.adminUsername |
Menentukan nama akun admin | 2020-07-15 |
osProfile.computerName |
Menentukan nama komputer | 2020-07-15 |
osProfile.disablePasswordAuthentication |
Menentukan apakah autentikasi kata sandi dinonaktifkan. Ini hanya ada untuk VM Linux | 1 Oktober 2020 |
osType |
Linux atau Windows | 2017-04-02 |
physicalZone |
Zona fisik dari VM | 2023-11-15 |
placementGroupId |
Grup Penempatan kelompok skala Anda | 2017-08-01 |
plan |
Plan yang berisi nama, produk, dan penerbit untuk VM jika ini adalah citra Marketplace Azure | 2018-04-02 |
platformUpdateDomain |
Perbarui domain tempat VM berjalan | 2017-04-02 |
platformFaultDomain |
Domain kesalahan tempat VM berjalan | 2017-04-02 |
platformSubFaultDomain |
Subdomain kesalahan tempat menjalankan mesin virtual, jika berlaku. | 01-10-2021 |
priority |
Prioritas VM. Lihat VM Spot untuk informasi selengkapnya | 2020-12-01 |
provider |
Penyedia VM | 2018-10-01 |
publicKeys |
Kumpulan Kunci Umum yang ditetapkan ke VM dan jalur | 2018-04-02 |
publisher |
Penerbit gambar VM | 2017-04-02 |
resourceGroupName |
Grup sumber daya untuk Komputer Virtual Anda | 2017-08-01 |
resourceId |
ID sumber daya yang sepenuhnya memenuhi syarat | 2019-03-11 |
sku |
SKU spesifik untuk gambar VM | 2017-04-02 |
securityProfile.secureBootEnabled |
Mengidentifikasi apakah boot aman UEFI diaktifkan pada VM | 2020-06-01 |
securityProfile.virtualTpmEnabled |
Mengidentifikasi apakah Modul Platform Tepercaya (TPM) virtual diaktifkan pada VM | 2020-06-01 |
securityProfile.encryptionAtHost |
Mengidentifikasi jika Enkripsi di Host diaktifkan pada VM | 2021-11-01 |
securityProfile.securityType |
Mengidentifikasi jika VM adalah VM Tepercaya atau VM Rahasia | 2021-12-13 |
storageProfile |
Lihat Profil Penyimpanan di bawah ini | 2019-06-01 |
subscriptionId |
Langganan Azure untuk Komputer Virtual | 2017-08-01 |
tags |
Tag untuk Komputer Virtual Anda | 2017-08-01 |
tagsList |
Tag yang diformat sebagai array JSON untuk penguraian terprogram yang lebih mudah | 2019-06-04 |
userData |
Kumpulan data yang ditentukan ketika VM dibuat untuk digunakan selama atau setelah provisi (terenkode Base64) | 2021-01-01 |
version |
Versi citra VM | 2017-04-02 |
virtualMachineScaleSet.id |
ID Set Skala Mesin Virtual yang dibuat dengan orkestrasi fleksibel di mana Mesin Virtual menjadi bagiannya. Bidang ini tidak tersedia untuk Virtual Machine Scale Sets yang dibuat dengan orkestrasi seragam. | 2021-03-01 |
vmId |
Pengidentifikasi unik untuk mesin virtual. Blog yang dirujuk hanya cocok untuk mesin virtual yang memiliki SMBIOS < 2.6. Untuk VM yang memiliki SMBIOS >= 2.6, UUID dari DMI ditampilkan dalam format little-endian, dengan demikian, tidak ada persyaratan untuk beralih byte. | 2017-04-02 |
vmScaleSetName |
Set Skala Komputer Virtual Nama dari set skala Anda | 2017-12-01 |
vmSize |
Ukuran komputer virtual | 2017-04-02 |
zone |
Zona Ketersediaan komputer virtual Anda | 2017-12-01 |
† Versi ini belum sepenuhnya tersedia dan mungkin belum didukung di semua wilayah.
Profil penyimpanan
Profil penyimpanan VM dibagi menjadi tiga kategori: referensi gambar, disk OS, dan disk data, ditambah objek tambahan untuk disk sementara lokal.
Objek referensi gambar berisi informasi berikut tentang gambar OS, harap dicatat bahwa gambar dapat berasal dari platform, marketplace, galeri komunitas, atau galeri bersama langsung tetapi tidak keduanya:
| Data | Deskripsi | Versi yang diperkenalkan |
|---|---|---|
id |
ID Sumber Daya | 2019-06-01 |
offer |
Penawaran platform atau gambar marketplace | 2019-06-01 |
publisher |
Penerbit citra platform atau marketplace | 2019-06-01 |
sku |
Sku platform atau gambar marketplace | 2019-06-01 |
version |
Versi dari gambar | 2019-06-01 |
communityGalleryImageId |
ID sumber daya dari gambar komunitas, kosong jika tidak ada | 2023-07-01 |
sharedGalleryImageId |
ID sumber daya untuk gambar yang dibagikan langsung, kosong jika sebaliknya | 2023-07-01 |
exactVersion |
Versi komunitas atau gambar yang dibagikan secara langsung | 2023-07-01 |
Objek disk OS berisi informasi tentang disk OS yang digunakan oleh VM berikut:
| Data | Deskripsi |
|---|---|
caching |
Persyaratan caching |
createOption |
Informasi tentang cara VM dibuat |
diffDiskSettings |
Pengaturan disk sementara |
diskSizeGB |
Ukuran disk dalam GB |
image |
Hard disk virtual gambar pengguna sumber |
managedDisk |
Parameter pengelolaan disk |
name |
Nama disk |
vhd |
Hard disk virtual |
writeAcceleratorEnabled |
Apakah writeAccelerator pada disk diaktifkan atau tidak |
Array disk data berisi daftar disk data yang terpasang ke VM. Setiap objek disk data berisi informasi berikut:
| Data | Deskripsi | Versi yang diperkenalkan |
|---|---|---|
bytesPerSecondThrottle* |
Kuota baca/tulis disk dalam byte | 2021-05-01 |
caching |
Persyaratan caching | 2019-06-01 |
createOption |
Informasi tentang cara VM dibuat | 2019-06-01 |
diffDiskSettings |
Pengaturan disk sementara | 2019-06-01 |
diskCapacityBytes* |
Ukuran disk dalam byte | 2021-05-01 |
diskSizeGB |
Ukuran disk dalam GB | 2019-06-01 |
encryptionSettings |
Pengaturan enkripsi untuk disk | 2019-06-01 |
image |
Hard disk virtual gambar pengguna sumber | 2019-06-01 |
isSharedDisk* |
Mengidentifikasi jika disk dibagi antara sumber daya | 2021-05-01 |
isUltraDisk |
Mengidentifikasi apakah disk data adalah Disk Ultra | 2021-05-01 |
lun |
Nomor unit logis disk | 2019-06-01 |
managedDisk |
Parameter pengelolaan disk | 2019-06-01 |
name |
Nama disk | 2019-06-01 |
opsPerSecondThrottle* |
Kuota baca/tulis disk dalam satuan IOPS | 2021-05-01 |
osType |
Jenis OS yang disertakan dalam disk | 2019-06-01 |
vhd |
Hard disk virtual | 2019-06-01 |
writeAcceleratorEnabled |
Apakah writeAccelerator pada disk diaktifkan atau tidak | 2019-06-01 |
*Bidang ini hanya diisi untuk Ultra Disks; untuk disk non-Ultra, bidang tersebut adalah string kosong.
Blob pengaturan enkripsi berisi data tentang bagaimana disk dienkripsi (jika dienkripsi):
| Data | Deskripsi | Versi yang diperkenalkan |
|---|---|---|
diskEncryptionKey.sourceVault.id |
Lokasi kunci enkripsi disk | 2021-11-01 |
diskEncryptionKey.secretUrl |
Lokasi rahasia | 2021-11-01 |
keyEncryptionKey.sourceVault.id |
Lokasi kunci enkripsi utama | 2021-11-01 |
keyEncryptionKey.keyUrl |
Lokasi kunci | 2021-11-01 |
Objek disk sumber daya berisi ukuran Disk Temp Lokal yang terpasang pada VM, jika ada, dalam kilobyte. Jika tidak ada disk sementara lokal untuk VM, nilai ini adalah 0.
| Data | Deskripsi | Versi yang diperkenalkan |
|---|---|---|
resourceDisk.size |
Ukuran disk temp lokal untuk VM (dalam kB) | 2021-02-01 |
Jaringan
| Data | Deskripsi | Versi yang diperkenalkan |
|---|---|---|
ipv4.ipAddress.privateIpAddress |
Alamat IPv4 lokal VM | 2017-04-02 |
ipv4.ipAddress.publicIpAddress |
Alamat IPv4 publik VM | 2017-04-02 |
ipv4.subnet.address |
Alamat subnet VM | 2017-04-02 |
ipv4.subnet.prefix |
Prefiks subnet, contoh 24 | 2017-04-02 |
ipv6.ipAddress.privateIpAddress |
Alamat IPv6 lokal VM | 2017-04-02 |
macAddress |
Alamat mac VM | 2017-04-02 |
Catatan
Nics yang dikembalikan oleh panggilan jaringan tidak dijamin teratur.
Mendapatkan data pengguna
Saat membuat VM baru, Anda dapat menentukan serangkaian data yang akan digunakan selama atau setelah provisi VM, dan mengambilnya melalui IMDS. Periksa pengalaman data pengguna ujung ke ujung di sini.
Untuk menyiapkan data pengguna, gunakan templat mulai cepat di sini. Contoh di bawah ini menunjukkan cara mengambil data ini melalui IMDS. Fitur ini dirilis dengan versi 2021-01-01 ke atas.
Catatan
Pemberitahuan keamanan: IMDS terbuka untuk semua aplikasi di VM, data sensitif tidak boleh ditempatkan dalam data pengguna.
$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))
Sampel 1: Melacak VM yang berjalan di Azure
Sebagai penyedia layanan, Anda mungkin perlu melacak jumlah VM yang menjalankan perangkat lunak Anda atau memiliki agen yang perlu melacak keunikan VM. Agar dapat memperoleh ID unik untuk VM, gunakan bidang vmId dari Instance Metadata Service.
Permintaan
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"
Respons
5c08b38e-4d57-4c23-ac45-aca61037f084
Sampel 2: Penempatan replika data yang berbeda
Untuk skenario tertentu, penempatan replika data yang berbeda sangat penting. Misalnya, penempatan replika HDFS atau penempatan kontainer melalui orkestrator mungkin mengharuskan Anda mengetahui platformFaultDomain dan platformUpdateDomain tempat VM berjalan.
Anda juga dapat menggunakan Zona Ketersediaan bagi instans untuk membuat keputusan ini.
Anda dapat mengkueri data ini secara langsung melalui IMDS.
Permintaan
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"
Respons
0
Sampel 3: Mendapatkan tag VM
Tag VM disertakan API instans pada titik akhir instans/komputasi/tag. Tag mungkin telah diterapkan ke VM Azure Anda untuk mengaturnya secara logis ke dalam taksonomi. Tag yang ditetapkan ke VM dapat diambil dengan menggunakan permintaan di bawah ini.
Permintaan
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"
Respons
Department:IT;ReferenceNumber:123456;TestStatus:Pending
Bidang tags adalah string dengan tag yang dibatasi oleh titik koma. Output ini dapat menjadi masalah jika titik koma digunakan dalam tag itu sendiri. Jika parser ditulis untuk mengekstrak tag secara terprogram, Anda harus mengandalkan bidang tagsList. Bidang tagsList ini adalah array JSON tanpa pemisah, sehingga akibatnya, lebih mudah diurai. TagsList yang ditetapkan ke VM dapat diambil dengan permintaan di bawah ini.
Permintaan
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
Respons
{
"value": [
{
"name": "Department",
"value": "IT"
},
{
"name": "ReferenceNumber",
"value": "123456"
},
{
"name": "TestStatus",
"value": "Pending"
}
],
"Count": 3
}
Sampel 4: Mendapatkan informasi selengkapnya tentang VM selama kasus dukungan
Sebagai penyedia layanan, Anda mungkin mendapatkan panggilan dukungan di mana Anda ingin mengetahui informasi selengkapnya tentang VM. Meminta pelanggan untuk berbagi metadata komputasi dapat memberikan informasi dasar bagi profesional dukungan untuk mengetahui tentang jenis VM di Azure.
Permintaan
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
Respons
Catatan
Responsnya adalah string JSON. Contoh respons berikut tercetak dengan baik agar mudah dibaca.
{
"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"
}
Sampel 5: Mendapatkan Lingkungan Azure tempat VM berjalan
Azure memiliki berbagai sovereign cloud seperti Azure Government. Terkadang Anda memerlukan Lingkungan Azure untuk membuat beberapa keputusan runtime. Sampel berikut menunjukkan kepada Anda cara untuk mencapai perilaku ini.
Permintaan
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"
Respons
AzurePublicCloud
Cloud dan nilai lingkungan Azure tercantum di sini.
| Cloud | Lingkungan Azure |
|---|---|
| Semua wilayah Azure global yang tersedia secara umum | AzurePublicCloud |
| Azure Government | AzureUSGovernmentCloud |
| Microsoft Azure dioperasikan oleh 21Vianet | AzureChinaCloud |
| Azure Jerman | AzureGermanCloud |
Sampel 6: Mengambil informasi jaringan
Permintaan
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
Respons
{
"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"
}
]
}
Sampel 7: Mengambil alamat IP publik
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"
Catatan
- Jika Anda ingin mengambil informasi IMDS untuk alamat IP Publik SKU Standar , tinjau Api Metadata Load Balancer untuk infomrasi selengkapnya.
Data yang dibuktikan
Mendapatkan data yang Dibuktikan
IMDS membantu memberikan jaminan bahwa data yang diberikan berasal dari Azure. Microsoft menandatangani bagian dari informasi ini, sehingga Anda dapat mengonfirmasi bahwa gambar di Marketplace Azure adalah gambar yang Anda jalankan di Azure.
GET /metadata/attested/document
Parameter
| Nama | Diperlukan/Opsional | Deskripsi |
|---|---|---|
api-version |
Wajib diisi | Versi yang digunakan untuk melayani permintaan. |
nonce |
Opsional | String 10-digit yang berfungsi sebagai nonce kriptografi. Jika tidak ada nilai yang disediakan, IMDS menggunakan tanda waktu UTC saat ini. |
Respons
{
"encoding":"pkcs7",
"signature":"MIIEEgYJKoZIhvcNAQcCoIIEAzCCA/8CAQExDzANBgkqhkiG9w0BAQsFADCBugYJKoZIhvcNAQcBoIGsBIGpeyJub25jZSI6IjEyMzQ1NjY3NjYiLCJwbGFuIjp7Im5hbWUiOiIiLCJwcm9kdWN0IjoiIiwicHVibGlzaGVyIjoiIn0sInRpbWVTdGFtcCI6eyJjcmVhdGVkT24iOiIxMS8yMC8xOCAyMjowNzozOSAtMDAwMCIsImV4cGlyZXNPbiI6IjExLzIwLzE4IDIyOjA4OjI0IC0wMDAwIn0sInZtSWQiOiIifaCCAj8wggI7MIIBpKADAgECAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBBAUAMCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tMB4XDTE4MTEyMDIxNTc1N1oXDTE4MTIyMDIxNTc1NlowKzEpMCcGA1UEAxMgdGVzdHN1YmRvbWFpbi5tZXRhZGF0YS5henVyZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAML/tBo86ENWPzmXZ0kPkX5dY5QZ150mA8lommszE71x2sCLonzv4/UWk4H+jMMWRRwIea2CuQ5RhdWAHvKq6if4okKNt66fxm+YTVz9z0CTfCLmLT+nsdfOAsG1xZppEapC0Cd9vD6NCKyE8aYI1pliaeOnFjG0WvMY04uWz2MdAgMBAAGjYDBeMFwGA1UdAQRVMFOAENnYkHLa04Ut4Mpt7TkJFfyhLTArMSkwJwYDVQQDEyB0ZXN0c3ViZG9tYWluLm1ldGFkYXRhLmF6dXJlLmNvbYIQZ8VuSofHbJRAQNBNpiASdDANBgkqhkiG9w0BAQQFAAOBgQCLSM6aX5Bs1KHCJp4VQtxZPzXF71rVKCocHy3N9PTJQ9Fpnd+bYw2vSpQHg/AiG82WuDFpPReJvr7Pa938mZqW9HUOGjQKK2FYDTg6fXD8pkPdyghlX5boGWAMMrf7bFkup+lsT+n2tRw2wbNknO1tQ0wICtqy2VqzWwLi45RBwTGB6DCB5QIBATA/MCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBCwUAMA0GCSqGSIb3DQEBAQUABIGAld1BM/yYIqqv8SDE4kjQo3Ul/IKAVR8ETKcve5BAdGSNkTUooUGVniTXeuvDj5NkmazOaKZp9fEtByqqPOyw/nlXaZgOO44HDGiPUJ90xVYmfeK6p9RpJBu6kiKhnnYTelUk5u75phe5ZbMZfBhuPhXmYAdjc7Nmw97nx8NnprQ="
}
Blob tanda tangan adalah versi dokumen yang ditandatangani dengan pkcs7. Ini berisi sertifikat yang digunakan untuk penandatanganan bersama dengan detail spesifik VM tertentu.
Untuk VM yang dibuat dengan Azure Resource Manager, dokumennya meliputi vmId, sku, nonce, subscriptionId, timeStamp untuk pembuatan dan kedaluwarsa dokumen, serta informasi rencana tentang gambar. Informasi rencana hanya tersedia untuk gambar di Azure Marketplace.
Untuk VM yang dibuat menggunakan model penyebaran klasik, hanya vmId dan subscriptionId yang dijamin akan terisi. Anda dapat mengekstrak sertifikat dari respons, dan menggunakannya untuk mengonfirmasi bahwa responsnya valid dan berasal dari Azure.
Dokumen yang didekode berisi bidang berikut:
| Data | Deskripsi | Versi yang diperkenalkan |
|---|---|---|
licenseType |
Jenis lisensi untuk Azure Hybrid Benefit. Ini hanya ada untuk VM yang didukung AHB. | 2020-09-01 |
nonce |
String yang dapat disediakan secara opsional dengan permintaan. Jika nonce tidak disediakan, tanda waktu UTC saat ini yang digunakan. |
2018-10-01 |
plan |
Rencana Gambar Azure Marketplace Berisi ID paket (nama), gambar produk atau penawaran (produk), dan ID penerbit (penerbit). | 2018-10-01 |
timestamp.createdOn |
Tanda waktu UTC saat dokumen yang ditandatangani dibuat | 2018-20-01 |
timestamp.expiresOn |
Tanda waktu UTC saat dokumen yang ditandatangani kedaluwarsa | 2018-10-01 |
vmId |
Pengidentifikasi unik untuk VM | 2018-10-01 |
subscriptionId |
Langganan Azure untuk Komputer Virtual | 2019-04-30 |
sku |
SKU khusus untuk citra mesin virtual (berkorelasi dengan properti compute/sku dari titik akhir Metadata Instans [/metadata/instance]) |
2019-11-01 |
Catatan
Untuk VM Klasik (Non-Azure Resource Manager), hanya vmId yang dijamin akan diisi.
Contoh dokumen:
{
"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"
}
Panduan Validasi Tanda Tangan
Saat memvalidasi tanda tangan, Anda harus mengonfirmasi bahwa tanda tangan dibuat dengan sertifikat dari Azure. Hal ini dilakukan dengan memvalidasi sertifikat Subject Alternative Name (SAN).
Contoh SAN DNS Name=eastus.metadata.azure.com, DNS Name=metadata.azure.com
Catatan
Domain untuk cloud publik dan setiap cloud berdaulat akan berbeda.
| Cloud | Domain di Jaringan Area Penyimpanan (SAN) |
|---|---|
| Semua wilayah Azure global yang tersedia secara umum | *.metadata.azure.com |
| Azure Government | *.metadata.azure.us |
| Azure dioperasikan oleh 21Vianet | *.metadata.azure.cn |
| Azure Jerman | *.metadata.microsoftazure.de |
Catatan
Sertifikat mungkin tidak memiliki kecocokan yang tepat untuk domain. Untuk alasan ini, validasi sertifikasi harus menerima subdomain apa pun (misalnya, di wilayah ketersediaan umum cloud publik menerima *.metadata.azure.com).
Kami tidak merekomendasikan penyematan sertifikat untuk sertifikasi perantara. Untuk panduan lebih lanjut, lihat Penyematan sertifikat - Penyematan sertifikat dan layanan Azure. Harap dicatat bahwa Azure Instance Metadata Service TIDAK akan menawarkan pemberitahuan untuk perubahan Otoritas Sertifikat di masa mendatang. Sebagai gantinya, Anda harus mengikuti artikel terpusat tentang detail Otoritas Sertifikat Azure untuk semua pembaruan di masa mendatang.
Sampel 1: Memvalidasi bahwa VM berjalan di Azure
Vendor di Azure Marketplace ingin memastikan bahwa perangkat lunak mereka hanya dilisensikan untuk dijalankan di Azure. Jika seseorang menyalin VHD ke lingkungan lokal, vendor harus dapat mendeteksinya. Melalui IMDS, vendor ini dapat memperoleh data bertanda tangan yang menjamin respons hanya dari Azure.
Catatan
Sampel ini membutuhkan utilitas jq untuk diinstal.
Validasi
# 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)
Verifikasi bahwa tanda tangan berasal dari Microsoft Azure dan periksa rantai sertifikat untuk kesalahan.
# 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
nonce dalam dokumen yang ditandatangani dapat dibandingkan jika Anda memberikan parameter nonce dalam permintaan awal.
Identitas yang dikelola
Identitas terkelola, yang ditetapkan oleh sistem, dapat diaktifkan pada VM. Anda juga dapat menetapkan satu atau beberapa identitas terkelola yang ditetapkan pengguna ke VM. Anda kemudian dapat meminta token untuk identitas terkelola dari IMDS. Gunakan token ini untuk mengautentikasi dengan layanan Azure lainnya, seperti Azure Key Vault.
Untuk langkah-langkah mendetail dalam mengaktifkan fitur ini, lihat Memperoleh token akses.
Metadata Penyeimbang Beban
Saat Anda menempatkan komputer virtual atau instans set komputer virtual di belakang Penyeimbang Muatan Standar Azure, Anda dapat menggunakan IMDS untuk mengambil metadata terkait penyeimbang muatan dan instans. Untuk informasi selengkapnya, lihat Mengambil informasi load balancer.
Acara terjadwal
Anda bisa mendapatkan status peristiwa terjadwal menggunakan IMDS. Kemudian pengguna dapat menentukan serangkaian tindakan yang akan dijalankan pada peristiwa ini. Untuk informasi selengkapnya, lihat Peristiwa terjadwal untuk Linux atau Peristiwa terjadwal untuk Windows.
Kode sampel dalam bahasa yang berbeda
Tabel berikut ini mencantumkan sampel pemanggilan IMDS menggunakan bahasa yang berbeda di dalam VM:
Kesalahan dan debugging
Jika ada elemen data yang tidak ditemukan atau permintaan cacat, Layanan Metadata Instans mengembalikan kesalahan HTTP standar. Contohnya:
| Kode status HTTP | Alasan |
|---|---|
200 OK |
Permintaan berhasil. |
400 Bad Request |
Kehilangan header Metadata: true atau kehilangan parameter format=json saat melakukan query pada simpul daun |
404 Not Found |
Elemen yang diminta tidak ada |
405 Method Not Allowed |
Metode HTTP (kata kerja) tidak didukung pada end point. |
410 Gone |
Coba lagi setelah beberapa saat selama maksimal 70 detik |
429 Too Many Requests |
Batas Penggunaan API telah terlampaui |
500 Service Error |
Coba lagi setelah beberapa saat |
Tanya jawab umum
Saya mendapatkan kesalahan
400 Bad Request, Required metadata header not specified. Apa artinya ini?- IMDS mengharuskan header
Metadata: trueagar diteruskan dalam permintaan tersebut. Meneruskan header ini dalam panggilan REST memungkinkan akses ke IMDS.
- IMDS mengharuskan header
Mengapa saya tidak mendapatkan informasi komputasi untuk VM saya?
- Saat ini, IMDS hanya mendukung instans yang dibuat dengan Azure Resource Manager.
Saya membuat VM melalui Azure Resource Manager beberapa waktu lalu. Mengapa saya tidak melihat informasi metadata komputasi?
- Jika Anda membuat VM setelah September 2016, tambahkan tag untuk mulai melihat metadata komputasi. Jika Anda membuat VM sebelum September 2016, tambahkan atau hapus ekstensi atau disk data ke instans VM untuk refresh metadata.
Apakah data pengguna sama dengan data kustom?
- Data pengguna menawarkan fungsi serupa dengan data kustom, yang memungkinkan Anda untuk meneruskan metadata Anda sendiri ke instans VM. Bedanya, data pengguna diambil melalui IMDS, dan persisten sepanjang masa pakai instans VM. Fitur data kustom yang sudah ada akan terus berfungsi seperti yang dijelaskan dalam artikel ini. Namun Anda hanya dapat memperoleh data kustom melalui folder sistem lokal, bukan melalui IMDS.
Mengapa saya tidak melihat semua data diisi untuk versi baru?
- Jika Anda membuat VM setelah September 2016, tambahkan tag untuk mulai melihat metadata komputasi. Jika Anda membuat VM sebelum September 2016, tambahkan atau hapus ekstensi atau disk data ke instans VM untuk refresh metadata.
Mengapa saya mendapatkan kesalahan
500 Internal Server Erroratau410 Resource Gone?- Coba lagi Permintaan Anda. Untuk informasi selengkapnya, lihat Penanganan kesalahan sementara. Jika masalah berlanjut, buat masalah dukungan di portal Microsoft Azure untuk VM.
Apakah ini berfungsi untuk instans set skala?
- Ya, IMDS tersedia untuk instans set-skala.
Saya memperbarui tag saya dalam kelompok skala saya, tetapi tidak tampak di instans (tidak seperti VM individu). Apakah saya melakukan suatu kesalahan?
- Saat ini, tag untuk set skala hanya ditampilkan pada VM ketika terjadi reboot, reimage, atau perubahan disk pada instans.
Mengapa saya tidak melihat informasi SKU untuk VM
instance/computesaya secara rinci?- Untuk gambar kustom yang dibuat dari Azure Marketplace, platform Azure tidak menyimpan informasi SKU untuk gambar kustom dan detail untuk VM apa pun yang dibuat dari gambar kustom. Ini telah dirancang demikian, oleh karena itu, tidak muncul dalam detail
instance/computeVM.
- Untuk gambar kustom yang dibuat dari Azure Marketplace, platform Azure tidak menyimpan informasi SKU untuk gambar kustom dan detail untuk VM apa pun yang dibuat dari gambar kustom. Ini telah dirancang demikian, oleh karena itu, tidak muncul dalam detail
Mengapa waktu permintaan saya habis (atau gagal tersambung) untuk panggilan saya ke layanan?
Panggilan metadata harus dilakukan dari alamat IP utama yang ditetapkan ke kartu jaringan utama VM. Selain itu, jika Anda telah mengubah rute, wajib ada rute untuk alamat 169.254.169.254/32 pada tabel perutean lokal VM Anda.
Cetak tabel perutean lokal Anda dan temukan entri IMDS. Contohnya:
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) ...Pastikan bahwa rute ada untuk
169.254.169.254, dan catat antarmuka jaringan yang sesuai (misalnya,172.16.69.7).Cetak konfigurasi antarmuka kemudian temukan antarmuka yang sesuai dengan referensi dalam tabel routing, dan catat alamat MAC (fisik).
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) ...Pasitikan bahwa antarmuka sesuai dengan NIC utama dan IP primer VM. Anda dapat menemukan NIC dan IP utama dengan melihat konfigurasi jaringan di portal Microsoft Azure, atau dengan mencarinya dengan Azure CLI. Catat IP pribadi (dan alamat MAC jika Anda menggunakan CLI). Berikut adalah contoh CLI 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-C0Jika tidak cocok, perbarui tabel perutean sehingga NIC dan IP utama ditargetkan.
Pemulihan otomatis kluster di Windows Server
Saat Anda melakukan kueri IMDS dengan pengklusteran failover, terkadang perlu menambahkan rute ke tabel perutean. Berikut caranya:
Buka perintah dengan hak istimewa admin.
Jalankan perintah berikut, lalu catat alamat Antarmuka untuk Tujuan Jaringan (
0.0.0.0) dalam Tabel Rute IPv4.
route printCatatan
Contoh output berikut ini berasal dari VM Windows Server dengan kluster failover diaktifkan. Untuk ringkasnya, output hanya berisi Tabel Rute 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 266Jalankan perintah berikut dan gunakan alamat Antarmuka untuk Tujuan Jaringan (
0.0.0.0), yang merupakan (10.0.1.10) dalam contoh ini.route add 169.254.169.254/32 10.0.1.10 metric 1 -p
Dukungan
Jika Anda tidak bisa mendapatkan respons metadata setelah beberapa upaya, Anda dapat membuat masalah dukungan di portal Microsoft Azure.
Umpan balik produk
Anda dapat memberikan umpan balik dan ide produk ke saluran umpan balik pengguna kami pada Virtual Machines > Instance Metadata Service di sini