Azure Instance Metadata Service
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 set 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.
Biarkan klien HTTP Anda melewati proksi web di dalam VM saat mengkuerikan IMDS, dan memperlakukan 169.254.169.254
sama seperti 168.63.129.16
.
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 melewati proksi. Anda harus melewati proksi saat mengkueri IMDS. Lihat Proksi untuk informasi tambahan.
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance?api-version=2021-02-01" | ConvertTo-Json -Depth 64
-NoProxy
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 tercetak dengan baik agar mudah dibaca.
{
"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 secara langsung ditujukan untuk IMDS dan mencegah pengalihan permintaan yang tidak dimaksudkan atau tidak diinginkan, permintaan:
- Harus berisi header
Metadata: true
- 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 tidak didukung untuk melakukannya. 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 gagal melewati konfigurasi tersebut akan memaparkan Anda pada risiko pemadaman jika konfigurasi mesin diubah di masa mendatang.
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 string kueri HTTP. Contohnya:
http://169.254.169.254/metadata/instance/compute?api-version=2021-01-01&format=json
Menentukan parameter:
Nama | Nilai |
---|---|
api-version |
2021-01-01 |
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 berjalan menyusuri objek json yang Anda gunakan untuk berinteraksi dengan representasi terurai.
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": [
]
},
"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": [
]
},
"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=2017-08-01&format=text"
Dalam respons json, semua primitif akan berupa jenis string
, dan nilai yang hilang atau tidak dapat diterapkan selalu disertakan namun akan ditetapkan ke string kosong.
Penerapan versi
IMDS dibuat versinya dan menentukan versi API dalam permintaan HTTP bersifat 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 was not specified in the request. For more information refer to aka.ms/azureimds",
"newest-versions": [
"2020-10-01",
"2020-09-01",
"2020-07-15"
]
}
Versi API yang didukung
Catatan
Versi 2023-11-15 masih diluncurkan, mungkin tidak tersedia di beberapa wilayah.
- 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
- 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
- 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/readme.md
Ketersediaan regional
Layanan ini umumnya tersedia di semua cloud Azure.
Titik akhir akar
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 akar | 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 |
Lha Instance Metadata | 2017-04-02 |
/metadata/loadbalancer |
Lihat Mengambil metadata Load Balancer melalui IMDS | 01-10-2020 |
/metadata/scheduledevents |
Lihat Peristiwa Terjadwal melalui IMDS | 2017-08-01 |
/metadata/versions |
Lihat Versi | T/A |
Versi
Cantumkan versi API
Menampilkan sekumpulan versi API yang didukung.
GET /metadata/versions
Parameter
Tidak ada (titik akhir ini tidak dibuat versinya).
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 VM. Perhatikan bahwa VM akan memiliki host atau hostGroup tetapi tidak keduanya. | 2021-11-15 |
hostGroup.id |
Nama hostGroup VM. Perhatikan bahwa VM akan memiliki host atau hostGroup 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 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 | 01-10-2020 |
osType |
Linux atau Windows | 2017-04-02 |
physicalZone |
Zona fisik VM | 2023-11-15 |
placementGroupId |
Grup Penempatan set skala Anda | 2017-08-01 |
plan |
Paket yang berisi nama, produk, dan penerbit untuk VM jika merupakan Gambar Marketplace Azure | 2018-04-02 |
platformUpdateDomain |
Domain pembaruan tempat VM berjalan | 2017-04-02 |
platformFaultDomain |
Domain kesalahan tempat VM berjalan | 2017-04-02 |
platformSubFaultDomain |
Domain sub kesalahan tempat mesin virtual berjalan, 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 |
Set data yang ditentukan ketika VM dibuat untuk digunakan selama atau setelah provisi (Base64-encoded) | 2021-01-01 |
version |
Versi gambar VM | 2017-04-02 |
virtualMachineScaleSet.id |
ID Set Skala Mesin Virtual yang dibuat dengan orkestrasi fleksibel yang mana Mesin Virtual adalah bagian darinya. 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 |
Nama Set Skala Komputer Virtual 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 platform atau gambar marketplace | 2019-06-01 |
sku |
Sku platform atau gambar marketplace | 2019-06-01 |
version |
Versi gambar | 2019-06-01 |
communityGalleryImageId |
ID sumber daya gambar komunitas, kosong jika tidak | 2023-07-01 |
sharedGalleryImageId |
ID sumber daya o gambar bersama langsung, kosong jika tidak | 2023-07-01 |
exactVersion |
Versi komunitas atau gambar bersama 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 cakram sementara |
diskSizeGB |
Ukuran disk dalam GB |
image |
Hard disk virtual gambar pengguna sumber |
managedDisk |
Parameter disk terkelola |
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 cakram 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 disk terkelola | 2019-06-01 |
name |
Nama disk | 2019-06-01 |
opsPerSecondThrottle * |
Kuota baca/tulis disk di 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 Disk; mereka adalah string kosong dari disk non-Ultra.
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.privateIpAddress |
Alamat IPv4 lokal VM | 2017-04-02 |
ipv4.publicIpAddress |
Alamat IPv4 publik VM | 2017-04-02 |
subnet.address |
Alamat subnet VM | 2017-04-02 |
subnet.prefix |
Prefiks subnet, contoh 24 | 2017-04-02 |
ipv6.ipAddress |
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=2021-01-01&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=2017-08-01&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=2017-08-01&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=2017-08-01&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=2019-06-04" | 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=2020-09-01" | 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=2018-10-01&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 Germany | 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=2017-08-01" | 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": []
},
"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=2017-08-01&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-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 paket hanya diisi untuk gambar 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":"8d10da13-8125-4ba9-a717-bf7490507b3d",
"timeStamp":{
"createdOn":"11/30/20 21:19:19 -0000",
"expiresOn":"11/30/20 21:19:24 -0000"
},
"vmId":"02aab8a4-74ef-476e-8182-f6d2ba4166a6"
}
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 sovereign cloud akan berbeda.
Cloud | Domain di 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 Germany | *.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 detail Otoritas Sertifikat Azure terpusat 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=2020-09-01
# 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 terkelola
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 Load Balancer
Saat Anda menempatkan komputer virtual atau instans set komputer virtual di belakang Azure Standard Load Balancer, Anda dapat menggunakan IMDS untuk mengambil metadata yang terkait dengan 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 penelusuran kesalahan
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 mengkueri node leaf |
404 Not Found |
Elemen yang diminta tidak ada |
405 Method Not Allowed |
Metode HTTP (kata kerja) tidak didukung pada titik akhir. |
410 Gone |
Coba lagi setelah beberapa saat selama maksimal 70 detik |
429 Too Many Requests |
Batas Laju API 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: true
agar diteruskan dalam permintaan. 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 Error
atau410 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 set skala saya, tetapi tidak muncul dalam instans (tidak seperti VM instans tunggal). Apakah saya melakukan suatu kesalahan?
- Saat ini tag untuk set skala hanya ditampilkan ke VM pada reboot, reimage, atau perubahan disk ke instans.
Mengapa saya tidak melihat informasi SKU untuk VM
instance/compute
saya 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/compute
VM.
- 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, harus ada rute untuk alamat 169.254.169.254/32 pada tabel perutean lokal VM Anda.
Kopi rekam cadang tabel perutean lokal Anda lalu cari entri IMDS. Contohnya:
route print
IPv4 Route Table =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 172.16.69.1 172.16.69.7 10 127.0.0.0 255.0.0.0 On-link 127.0.0.1 331 127.0.0.1 255.255.255.255 On-link 127.0.0.1 331 127.255.255.255 255.255.255.255 On-link 127.0.0.1 331 168.63.129.16 255.255.255.255 172.16.69.1 172.16.69.7 11 169.254.169.254 255.255.255.255 172.16.69.1 172.16.69.7 11 ... (continues) ...
Pastikan bahwa rute ada untuk
169.254.169.254
, dan catat antarmuka jaringan yang sesuai (misalnya,172.16.69.7
).Kopi rekam cadang konfigurasi antarmuka dan temukan antarmuka yang sesuai dengan yang direferensikan dalam tabel perutean, yang mencatat 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-C0
Jika tidak cocok, perbarui tabel perutean sehingga NIC dan IP utama ditargetkan.
Failover pengklusteran di Windows Server
Saat Anda mengkueri 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 print
Catatan
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 266
Jalankan 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 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