خدمة بيانات التعريف لمثيل Azure
ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ أجهزة Windows الظاهرية ✔️ مجموعات مقياس مرنة
توفر Azure Instance Metadata Service (IMDS) البيانات حول مثيلات الجهاز الظاهري قيد التشغيل الآن. يمكنك استخدامها لإدارة أجهزتك الظاهرية وتكوينها. تتضمن هذه المعلومات رمز SKU والتخزين وتكوينات الشبكة وأحداث الصيانة القادمة. للحصول على قائمة كاملة بالبيانات المتوفرة، راجع ملخص فئات نقاط النهاية.
يتوفر IMDS لتشغيل مثيلات الأجهزة الظاهرية (VMs) ومثيلات مجموعة التحجيم. تدعم جميع نقاط النهاية الأجهزة الظاهرية التي تم إنشاؤها وإدارتها باستخدام Azure Resource Manager. تدعم الفئة المصدقة وجزء الشبكة من فئة المثيل فقط الأجهزة الظاهرية التي تم إنشاؤها باستخدام نموذج التوزيع الكلاسيكي. نقطة النهاية الموثقة تفعل ذلك فقط بمقدار محدود.
IMDS عبارة عن واجهة برمجة تطبيقات REST متوفرة على عنوان IP معروف وغير قابل للتوجيه (169.254.169.254
). لا يمكنك الوصول إليه إلا من داخل الجهاز الظاهري. الاتصال بين الجهاز الظاهري وIMDS لا يغادر المضيف أبدًا.
اطلب من عملاء HTTP تجاوز وكلاء الويب داخل الجهاز الظاهري عند الاستعلام عن IMDS، والتعامل مع 169.254.169.254
بنفس طريقة التعامل مع 168.63.129.16
.
الاستخدام
الوصول إلى Azure Instance Metadata Service
للوصول إلى IMDS، بادر بإنشاء جهاز ظاهري من Azure Resource Manager أو مدخل Azure، واستخدم العينات التالية. لمزيد من الأمثلة، راجع عينات بيانات تعريف مثيل Azure.
إليك نموذج التعليمات البرمجية لاسترداد جميع بيانات التعريف لمثيل. للوصول إلى مصدر بيانات معين، راجع فئات نقاط النهاية للحصول على نظرة عامة على جميع الميزات المتوفرة.
Request
هام
يتجاوز هذا المثال Proxies. يجب عليك تجاوز Proxies عند الاستعلام عن IMDS. راجع الوكلاء للحصول على معلومات إضافية.
إشعار
يجب إرسال طلبات IMDS باستخدام NIC الأساسي للجهاز الظاهري وIP الأساسي، ويجب تمكين DHCP.
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance?api-version=2021-02-01" | ConvertTo-Json -Depth 64
-NoProxy
يتطلب توفر PowerShell V6 أو أعلى. راجع مستودع العينات الذي نقدمه للحصول على أمثلة مع إصدارات PowerShell الأقدم.
Response
إشعار
الاستجابة عبارة عن سلسلة JSON. استجابة المثال التالي مطبوعة بشكل جميل لسهولة القراءة.
{
"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"
}]
}
}
الأمان والمصادقة
لا يمكن الوصول إلى Instance Metadata Service إلا من داخل مثيل جهاز ظاهري قيد التشغيل على عنوان IP غير قابل للتوجيه. يمكن للأجهزة الظاهرية التفاعل فقط مع بيانات التعريف/الوظائف الخاصة بها. واجهة برمجة التطبيقات هي HTTP فقط ولا تغادر المضيف أبدًا.
لضمان أن تكون الطلبات موجهة مباشرة إلى IMDS ومنع إعادة توجيه الطلبات غير المقصودة أو غير المرغوب فيها، فإن الطلبات:
- يجب أن تحتوي على الرأس
Metadata: true
- يجب ألا تحتوي على الرأس
X-Forwarded-For
ترفض الخدمة أي طلب لا يفي بكلا هذين المتطلبين .
هام
IMDS ليست قناة للبيانات الحساسة. واجهة برمجة التطبيقات غير مصادق عليها ومفتوحة لجميع العمليات على الجهاز الظاهري. يجب اعتبار المعلومات التي يتم الكشف عنها من خلال هذه الخدمة بمثابة معلومات مشتركة لجميع التطبيقات التي تعمل داخل الجهاز الظاهري.
إذا لم يكن من الضروري لكل عملية على الجهاز الظاهري الوصول إلى نقطة نهاية IMDS، يمكنك تعيين قواعد جدار الحماية المحلية للحد من الوصول. على سبيل المثال، إذا كانت خدمة نظام معروفة فقط بحاجة إلى الوصول إلى instance metadata service، فيمكنك تعيين قاعدة جدار حماية على نقطة نهاية IMDS، مما يسمح فقط للعملية (العمليات) المحددة بالوصول، أو رفض الوصول لبقية العمليات.
وكلاء
IMDS غير مخصصة لأن يستخدمها وكيل، وتنفيذ هذا غير مدعوم. توفر معظم عملاء HTTP خيارًا لك لتعطيل الوكلاء بناءً على طلباتك، ويجب استخدام هذه الوظيفة عند الاتصال بـ IMDS. راجع وثائق العميل لديك للحصول على التفاصيل.
هام
حتى إذا كنت لا تعرف أي تكوين وكيل في بيئتك، فلا يزال يتعين عليك تجاوز أي إعدادات افتراضية لوكيل العميل. يمكن اكتشاف تكوينات الوكيل تلقائيًا، والفشل في تجاوز مثل هذه التكوينات يعرضك لمخاطر انقطاع الخدمة في حالة تغيير تكوين الجهاز في المستقبل.
تحديد السعر
بوجهٍ عامٍ، تقتصر طلبات خدمة IMDS على خمسة طلبات في الثانية (على أساس كل جهاز ظاهري). ستُرفض الطلبات التي تتجاوز هذا الحد مع 429 استجابةً. تقتصر الطلبات إلى فئة الهوية المدارة على 20 طلبا في الثانية و5 طلبات متزامنة (على أساس كل جهاز ظاهري).
أفعال HTTP
يتم حاليًا دعم أفعال HTTP التالية:
الفعل | الوصف |
---|---|
GET |
استرداد المورد المطلوب |
المعلمات
قد تدعم نقاط النهاية المعلمات المطلوبة و/أو الاختيارية. راجع المخطط والوثائق الخاصة بنقطة النهاية المحددة المعنية للحصول على التفاصيل.
معلمات الاستعلام
تدعم نقاط نهاية IMDS معلمات سلسلة استعلام HTTP. على سبيل المثال:
http://169.254.169.254/metadata/instance/compute?api-version=2021-01-01&format=json
يحدد المعلمات:
الاسم | القيمة |
---|---|
api-version |
2021-01-01 |
format |
json |
سيتم رفض الطلبات التي تحتوي على أسماء معلمات استعلام مكررة.
معلمات المسار
بالنسبة لبعض نقاط النهاية التي ترجع كائنات ثنائية كبيرة الحجم من json أكبر، ندعم إلحاق معلمات المسار بنقطة نهاية الطلب للتصفية وصولاً إلى مجموعة فرعية من الاستجابة:
http://169.254.169.254/metadata/<endpoint>/[<filter parameter>/...]?<query parameters>
تتوافق المعلمات مع الفهارس/المفاتيح التي قد يتم استخدامها لتوجيه كائن json إذا كنت تتفاعل مع تمثيل محلل.
على سبيل المثال، يتم من خلال /metadata/instance
إرجاع كائن json:
{
"compute": { ... },
"network": {
"interface": [
{
"ipv4": {
"ipAddress": [{
"privateIpAddress": "10.144.133.132",
"publicIpAddress": ""
}],
"subnet": [{
"address": "10.144.133.128",
"prefix": "26"
}]
},
"ipv6": {
"ipAddress": [
]
},
"macAddress": "0011AAFFBB22"
},
...
]
}
}
إذا أردنا تصفية الاستجابة وصولاً إلى خاصية الحساب فقط، فسنرسل الطلب:
http://169.254.169.254/metadata/instance/compute?api-version=<version>
وبالمثل، إذا أردنا التصفية إلى خاصية متداخلة أو عنصر صفيف معين، نستمر في إلحاق المفاتيح:
http://169.254.169.254/metadata/instance/network/interface/0?api-version=<version>
ستتم التصفية إلى العنصر الأول من الخاصية Network.interface
وإرجاع:
{
"ipv4": {
"ipAddress": [{
"privateIpAddress": "10.144.133.132",
"publicIpAddress": ""
}],
"subnet": [{
"address": "10.144.133.128",
"prefix": "26"
}]
},
"ipv6": {
"ipAddress": [
]
},
"macAddress": "0011AAFFBB22"
}
إشعار
عند التصفية إلى عقدة طرفية، فإن format=json
لا يعمل. بالنسبة لهذه الاستعلامات يجب أن تحديد format=text
بشكل صريح لأن التنسيق الافتراضي هو json.
مخطط
تنسيق البيانات
بشكل افتراضي، يتم من خلال IMDS إرجاع البيانات بتنسيق JSON (Content-Type: application/json
). ومع ذلك، تدعم نقاط النهاية التي تدعم تصفية الاستجابة (راجع معلمات المسار) التنسيق text
أيضًا.
للوصول إلى تنسيق استجابة غير افتراضي، حدد التنسيق المطلوب كمعلمة سلسلة استعلام في الطلب. على سبيل المثال:
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance?api-version=2017-08-01&format=text"
في استجابات json، ستكون جميع البدائيات من النوع string
، ويتم دائمًا تضمين القيم المفقودة أو غير القابلة للتطبيق ولكن سيتم تعيينها إلى سلسلة فارغة.
تعيين الإصدار
يتم تعيين إصدار IMDS ويعتبر تحديد إصدار واجهة برمجة التطبيقات في طلب HTTP إلزاميًا. الاستثناء الوحيد لهذا المطلب هو نقطة نهاية الإصدارات، والتي يمكن استخدامها لاسترداد إصدارات واجهة برمجة التطبيقات المتوفرة ديناميكيًا.
مع إضافة إصدارات أحدث، لا يزال من الممكن الوصول إلى الإصدارات القديمة للتوافق إذا كانت البرامج النصية لديك تعتمد على تنسيقات بيانات محددة.
في حالة عدم تحديد إصدار، تظهر لك رسالة خطأ تضم قائمة بأحدث الإصدارات المدعومة:
{
"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"
]
}
إصدارات واجهة برمجة التطبيقات المعتمدة
إشعار
لا يزال الإصدار 2023-11-15 قيد التنفيذ، وقد لا يكون متوفرا في بعض المناطق.
- 2023-11-15
- 2023-07-01
- 2021-12-13
- 2021-11-15
- 2021-11-01
- 2021-10-01
- 2021-08-01
- 2021-05-01
- 2021-03-01
- 2021-02-01
- 2021-01-01
- 2020-12-01
- 2020-10-01
- 2020-09-01
- 2020-07-15
- 2020-06-01
- 2019-11-01
- 2019-08-15
- 2019-08-01
- 2019-06-04
- 2019-06-01
- 2019-04-30
- 2019-03-11
- 2019-02-01
- 2018-10-01
- 2018-04-02
- 2018-02-01
- 2017-12-01
- 2017-10-01
- 2017-08-01
- 2017-04-02
- 2017-03-01
Swagger
يتوفر تعريف Swagger الكامل لـ IMDS على: https://github.com/Azure/azure-rest-api-specs/blob/main/specification/imds/data-plane/readme.md
التوفر الإقليمي
تتوفر الخدمة بشكل عام في جميع سحب Azure.
نقطة نهاية الجذر
نقطة نهاية الجذر هي http://169.254.169.254/metadata
.
فئات نقاط النهاية
تحتوي واجهة برمجة تطبيقات IMDS على فئات نقاط نهاية متعددة تمثل مصادر بيانات مختلفة، يحتوي كل منها على نقطة نهاية واحدة أو أكثر. راجع أي فئة للحصول على التفاصيل.
جذر الفئة | الوصف | الإصدار المقدم |
---|---|---|
/metadata/attested |
راجع البيانات المصدقة | 2018-10-01 |
/metadata/identity |
راجع الهوية المُدارة عبر IMDS | 2018-02-01 |
/metadata/instance |
راجع بيانات تعريف المثيل | 2017-04-02 |
/metadata/loadbalancer |
راجع استرداد بيانات تعريف موازن التحميل عبر IMDS | 2020-10-01 |
/metadata/scheduledevents |
راجع الأحداث المجدولة عبر IMDS | 2017-08-01 |
/metadata/versions |
راجع الإصدارات | غير متوفر |
الإصدارات
قائمة بإصدارات واجهة برمجة التطبيقات
إرجاع مجموعة إصدارات واجهة برمجة التطبيقات المدعومة.
GET /metadata/versions
المعلمات
لا شيء (لم يتم تعيين إصدار نقطة النهاية هذه).
استجابة
{
"apiVersions": [
"2017-03-01",
"2017-04-02",
...
]
}
بيانات تعريف المثيل
الحصول على بيانات تعريف الجهاز الظاهري
يعرض بيانات التعريف المهمة لمثيل الجهاز الظاهري، بما في ذلك الحوسبة والشبكة والتخزين.
GET /metadata/instance
المعلمات
الاسم | مطلوب/اختياري | الوصف |
---|---|---|
api-version |
مطلوب | الإصدار المستخدم لخدمة الطلب. |
format |
اختياري* | تنسيق (json أو text ) الاستجابة. *ملاحظة: قد تكون هناك حاجة عند استخدام معلمات الطلب |
تدعم نقطة النهاية هذه تصفية الاستجابة عبر معلمات المسار.
استجابة
{
"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"
}]
}
}
تصنيف المخطط:
حسب
بيانات | الوصف | الإصدار المقدم |
---|---|---|
azEnvironment |
بيئة Azure حيث يتم تشغيل الجهاز الظاهري بالإصدار | 2018-10-01 |
additionalCapabilities.hibernationEnabled |
يحدد ما إذا كان وضع الإسبات ممكّنًا على الجهاز الظاهري | 2021-11-01 |
customData |
تم إهمال هذه الميزة وتعطيلها في IMDS. وقد حل محلها userData |
2019-02-01 |
evictionPolicy |
يحدد كيفية إخلاء جهاز ظاهري Spot. | 2020-12-01 |
extendedLocation.type |
نوع الموقع الموسع للجهاز الظاهري. | 2021-03-01 |
extendedLocation.name |
اسم الموقع الموسع للجهاز الظاهري | 2021-03-01 |
host.id |
اسم مضيف الجهاز الظاهري. لاحظ أن الجهاز الظاهري سيكون إما مضيف أو hostGroup ولكن ليس كليهما. | 2021-11-15 |
hostGroup.id |
اسم hostGroup للجهاز الظاهري. لاحظ أن الجهاز الظاهري سيكون إما مضيف أو hostGroup ولكن ليس كليهما. | 2021-11-15 |
isHostCompatibilityLayerVm |
يحدد ما إذا كان الجهاز الظاهري يعمل على طبقة توافق المضيف | 2020-06-01 |
licenseType |
نوع ترخيص Azure Hybrid Benefit. هذا موجود فقط للأجهزة الظاهرية التي تدعم AHB | 2020-09-01 |
location |
منطقة Azure التي يعمل فيها الجهاز الظاهري | 2017-04-02 |
name |
اسم الجهاز الظاهري | 2017-04-02 |
offer |
تقديم معلومات لصورة الجهاز الظاهري وهي موجودة فقط للصور التي تم توزيعها من معرض صور Azure | 2017-04-02 |
osProfile.adminUsername |
يحدد اسم حساب المسؤول | 2020-07-15 |
osProfile.computerName |
يحدد اسم الكمبيوتر | 2020-07-15 |
osProfile.disablePasswordAuthentication |
يحدد ما إذا كانت مصادقة كلمة المرور معطلة. هذا موجود فقط لأجهزة Linux الظاهرية | 2020-10-01 |
osType |
Linux أو Windows | 2017-04-02 |
physicalZone |
المنطقة الفعلية للجهاز الظاهري | 2023-11-15 |
placementGroupId |
مجموعة موضع مجموعة المقياس | 2017-08-01 |
plan |
خطة تحتوي على الاسم والمنتج والناشر لجهاز ظاهري إذا كان صورة Azure Marketplace | 2018-04-02 |
platformUpdateDomain |
تحديث المجال الذي يعمل عليه الجهاز الظاهري | 2017-04-02 |
platformFaultDomain |
مجال الخطأ الذي يعمل عليه الجهاز الظاهري | 2017-04-02 |
platformSubFaultDomain |
مجال الخطأ الفرعي الذي يعمل عليه الجهاز الظاهري، إن وجد. | 2021-10-01 |
priority |
أولوية الجهاز الظاهري. راجع الأجهزة الظاهرية Spot لمزيد من المعلومات | 2020-12-01 |
provider |
موفر الجهاز الظاهري | 2018-10-01 |
publicKeys |
مجموعة المفاتيح العامة المعينة إلى الجهاز الظاهري والمسارات | 2018-04-02 |
publisher |
ناشر صورة الجهاز الظاهري | 2017-04-02 |
resourceGroupName |
مجموعة الموارد للجهاز الظاهري | 2017-08-01 |
resourceId |
معرف المورد المؤهّل بالكامل | 2019-03-11 |
sku |
وحدة SKU محددة لصورة الجهاز الظاهري | 2017-04-02 |
securityProfile.secureBootEnabled |
يحدد ما إذا كان التمهيد الآمن UEFI ممكنًا على الجهاز الظاهري | 2020-06-01 |
securityProfile.virtualTpmEnabled |
يحدد ما إذا كانت الوحدة النمطية للنظام الأساسي الموثوق به الظاهري (TPM) ممكنة على الجهاز الظاهري | 2020-06-01 |
securityProfile.encryptionAtHost |
يحدد ما إذا كان التشفير في المضيف ممكنًا على الجهاز الظاهري | 2021-11-01 |
securityProfile.securityType |
يحدد ما إذا كان الجهاز الظاهري جهازًا ظاهريًا موثوقًا به أو جهازًا ظاهريًا سريًا | 2021-12-13 |
storageProfile |
راجع ملف تعريف التخزين أدناه | 2019-06-01 |
subscriptionId |
اشتراك Azure للجهاز الظاهري | 2017-08-01 |
tags |
علامات جهازك الظاهري | 2017-08-01 |
tagsList |
العلامات المنسقة كصفيف JSON لتحليل برمجي أسهل | 2019-06-04 |
userData |
مجموعة البيانات المحددة عند إنشاء الجهاز الظاهري للاستخدام أثناء التوفير أو بعده (ترميز Base64) | 2021-01-01 |
version |
إصدار صورة الجهاز الظاهري | 2017-04-02 |
virtualMachineScaleSet.id |
معرف مجموعة توسعة الجهاز الظاهري التي تم إنشاؤها باستخدام التنسيق المرن الذي يعد الجهاز الظاهري جزءًا منه. لا يتوفر هذا الحقل لمجموعات مقياس الجهاز الظاهري التي تم إنشاؤها بتنسيق موحد. | 2021-03-01 |
vmId |
معرّف فريد للجهاز الظاهري. المدونة المشار إليها فقط تناسب الأجهزة الظاهرية التي تحتوي على SMBIOS < 2.6. بالنسبة للأجهزة الظاهرية التي تحتوي على SMBIOS >= 2.6، يتم عرض UUID من DMI بتنسيق طرفي صغير، وبالتالي، لا يوجد أي شرط لتبديل وحدات البايت. | 2017-04-02 |
vmScaleSetName |
اسم مجموعة مقياس الجهاز الظاهري لمجموعة المقياس | 2017-12-01 |
vmSize |
حجم الجهاز الظاهري | 2017-04-02 |
zone |
منطقة توافر جهازك الظاهري | 2017-12-01 |
† هذا الإصدار غير متوفر بالكامل حتى الآن وقد لا يكون مدعوما في جميع المناطق.
ملف تعريف التخزين
ينقسم ملف تعريف التخزين للجهاز الظاهري إلى ثلاث فئات: مرجع الصورة وقرص نظام التشغيل وأقراص البيانات، بالإضافة إلى كائن إضافي للقرص المؤقت المحلي.
يحتوي الكائن المرجعي للصورة على المعلومات التالية حول صورة نظام التشغيل، يرجى ملاحظة أن الصورة قد تأتي إما من النظام الأساسي أو السوق أو معرض المجتمع أو المعرض المشترك المباشر ولكن ليس كليهما:
بيانات | الوصف | الإصدار المقدم |
---|---|---|
id |
معرف المورد | 2019-06-01 |
offer |
عرض النظام الأساسي أو صورة السوق | 2019-06-01 |
publisher |
ناشر صورة النظام الأساسي أو السوق | 2019-06-01 |
sku |
Sku لصورة النظام الأساسي أو السوق | 2019-06-01 |
version |
إصدار الصورة | 2019-06-01 |
communityGalleryImageId |
معرف المورد لصورة المجتمع، فارغة بخلاف ذلك | 2023-07-01 |
sharedGalleryImageId |
معرف المورد o صورة مشتركة مباشرة، فارغة خلاف ذلك | 2023-07-01 |
exactVersion |
إصدار المجتمع أو الصورة المشتركة المباشرة | 2023-07-01 |
يحتوي كائن قرص نظام التشغيل على المعلومات التالية حول قرص نظام التشغيل المستخدم بواسطة الجهاز الظاهري:
بيانات | الوصف |
---|---|
caching |
متطلبات التخزين المؤقت |
createOption |
معلومات حول كيفية إنشاء الجهاز الظاهري |
diffDiskSettings |
إعدادات القرص غير النهائية |
diskSizeGB |
حجم القرص بالجيجابايت |
image |
القرص الثابت الظاهري لصورة مستخدم المصدر |
managedDisk |
معلمات القرص المُدار |
name |
اسم القرص |
vhd |
القرص الثابت الظاهري |
writeAcceleratorEnabled |
ما إذا كان writeAccelerator ممكنًا على القرص أم لا |
يحتوي صفيف أقراص البيانات على قائمة بأقراص البيانات المرفقة بالجهاز الظاهري. يحتوي كل كائن قرص بيانات على المعلومات التالية:
بيانات | الوصف | الإصدار المقدم |
---|---|---|
bytesPerSecondThrottle * |
حصة القراءة/الكتابة على القرص بالبايت | 2021-05-01 |
caching |
متطلبات التخزين المؤقت | 2019-06-01 |
createOption |
معلومات حول كيفية إنشاء الجهاز الظاهري | 2019-06-01 |
diffDiskSettings |
إعدادات القرص غير النهائية | 2019-06-01 |
diskCapacityBytes * |
حجم القرص بالبايت | 2021-05-01 |
diskSizeGB |
حجم القرص بالجيجابايت | 2019-06-01 |
encryptionSettings |
إعدادات التشفير للقرص | 2019-06-01 |
image |
القرص الثابت الظاهري لصورة مستخدم المصدر | 2019-06-01 |
isSharedDisk * |
تحديد ما إذا كان القرص مشتركًا بين الموارد | 2021-05-01 |
isUltraDisk |
يحدد ما إذا كان قرص البيانات عبارة عن Ultra Disk | 2021-05-01 |
lun |
رقم الوحدة المنطقية للقرص | 2019-06-01 |
managedDisk |
معلمات القرص المُدار | 2019-06-01 |
name |
اسم القرص | 2019-06-01 |
opsPerSecondThrottle * |
حصة القراءة/الكتابة في IOPS | 2021-05-01 |
osType |
نوع نظام التشغيل المضمن في القرص | 2019-06-01 |
vhd |
القرص الثابت الظاهري | 2019-06-01 |
writeAcceleratorEnabled |
ما إذا كان writeAccelerator ممكنًا على القرص أم لا | 2019-06-01 |
*يتم تعبئة هذه الحقول فقط للأقراص الفائقة؛ وهي سلاسل فارغة من أقراص غير Ultra.
يحتوي كائن ثنائي كبير الحجم لإعدادات التشفير على بيانات حول كيفية تشفير القرص (إذا كان مشفرا):
بيانات | الوصف | الإصدار المقدم |
---|---|---|
diskEncryptionKey.sourceVault.id |
موقع مفتاح تشفير القرص | 2021-11-01 |
diskEncryptionKey.secretUrl |
موقع البيانات السرية | 2021-11-01 |
keyEncryptionKey.sourceVault.id |
موقع مفتاح تشفير المفتاح | 2021-11-01 |
keyEncryptionKey.keyUrl |
موقع المفتاح | 2021-11-01 |
يحتوي كائن قرص المورد على حجم القرص المؤقت المحلي المرفق بالجهاز الظاهري، إذا كان يحتوي على واحد، بالكيلوبايت. إذا لم يكن هناك قرص مؤقت محلي للجهاز الظاهري، فإن هذه القيمة هي 0.
بيانات | الوصف | الإصدار المقدم |
---|---|---|
resourceDisk.size |
حجم القرص المؤقت المحلي للجهاز الظاهري (بالكيلوبايت) | 2021-02-01 |
شبكة
بيانات | الوصف | الإصدار المقدم |
---|---|---|
ipv4.privateIpAddress |
عنوان IPv4 المحلي للجهاز الظاهري | 2017-04-02 |
ipv4.publicIpAddress |
عنوان IPv4 العام للجهاز الظاهري | 2017-04-02 |
subnet.address |
عنوان الشبكة الفرعية للجهاز الظاهري | 2017-04-02 |
subnet.prefix |
بادئة الشبكة الفرعية، مثال 24 | 2017-04-02 |
ipv6.ipAddress |
عنوان IPv6 المحلي للجهاز الظاهري | 2017-04-02 |
macAddress |
عنوان mac للجهاز الظاهري | 2017-04-02 |
إشعار
لا يضمن أن تكون nics التي يتم إرجاعها بواسطة استدعاء الشبكة سليمة.
الحصول على بيانات المستخدم
عند إنشاء جهاز ظاهري جديد، يمكنك تحديد مجموعة من البيانات لاستخدامها أثناء توفير الجهاز الظاهري أو بعده، واستردادها من خلال IMDS. تحقق من تجربة بيانات المستخدم النهائي الطرفية من هنا.
لإعداد بيانات المستخدم، استخدم قالب التشغيل السريع هنا. توضح العينة أدناه كيفية استرداد هذه البيانات من خلال IMDS. يتم إصدار هذه الميزة مع الإصدار 2021-01-01
والإصدارات الأحدث.
إشعار
إشعار الأمان: IMDS مفتوحة لجميع التطبيقات على الجهاز الظاهري، ويجب عدم وضع بيانات حساسة في بيانات المستخدم.
$userData = Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance/compute/userData?api-version=2021-01-01&format=text"
[System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($userData))
عينة 1: تعقب الجهاز الظاهري قيد التشغيل على Azure
بصفتك موفر خدمة، قد تحتاج إلى تتبع عدد الأجهزة الظاهرية التي تشغل برنامجك أو لديك وكلاء يحتاجون إلى تتبع تفرد الجهاز الظاهري. لتتمكن من الحصول على معرف فريد لجهاز ظاهري، استخدم الحقل vmId
من Instance Metadata Service.
Request
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"
Response
5c08b38e-4d57-4c23-ac45-aca61037f084
عينة 2: وضع نسخ متماثلة مختلفة من البيانات
بالنسبة لسيناريوهات معينة، يعد وضع نسخ متماثلة مختلفة من البيانات أمرًا بالغ الأهمية. على سبيل المثال، قد يتطلب منك وضع نسخة HDFS متماثلة أو وضع حاوية عبر مُنسق معرفة platformFaultDomain
وplatformUpdateDomain
الذين يعمل عليهما الجهاز الظاهري.
يمكنك أيضًا استخدام مناطق التوافر للمثيلات لاتخاذ هذه القرارات.
يمكنك الاستعلام عن هذه البيانات مباشرة عبر IMDS.
Request
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"
Response
0
عينة 3: الحصول على علامات الجهاز الظاهري
يتم تضمين علامات الجهاز الظاهري في واجهة برمجة تطبيقات المثيل ضمن نقطة نهاية المثيل/الحساب/العلامات. ربما تم تطبيق العلامات على جهاز Azure الظاهري لتنظيمها منطقيًا في تصنيف. يمكن استرداد العلامات المعينة إلى جهاز ظاهري باستخدام الطلب أدناه.
Request
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"
Response
Department:IT;ReferenceNumber:123456;TestStatus:Pending
الحقل tags
عبارة عن سلسلة ذات علامات محددة بفواصل منقوطة. يمكن أن يكون هذا الإخراج مشكلة إذا تم استخدام الفواصل المنقوطة في العلامات نفسها. إذا تمت كتابة محلل لغوي لاستخراج العلامات برمجيًا، فيجب عليك الاعتماد على الحقل tagsList
. الحقل tagsList
عبارة عن صفيف JSON بدون محددات، وبالتالي، يسهل تحليله. يمكن استرداد tagsList المعينة إلى جهاز ظاهري باستخدام الطلب أدناه.
Request
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
Response
{
"value": [
{
"name": "Department",
"value": "IT"
},
{
"name": "ReferenceNumber",
"value": "123456"
},
{
"name": "TestStatus",
"value": "Pending"
}
],
"Count": 3
}
عينة 4: الحصول على مزيد من المعلومات حول الجهاز الظاهري أثناء حالة الدعم
بصفتك موفر خدمة، قد تتلقى مكالمة دعم حيث ترغب في معرفة المزيد من المعلومات حول الجهاز الظاهري. يمكن أن توفر مطالبة العميل بمشاركة بيانات تعريف الحوسبة معلومات أساسية لمحترف الدعم لمعرفة نوع الجهاز الظاهري على Azure.
Request
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
Response
إشعار
الاستجابة عبارة عن سلسلة JSON. استجابة المثال التالي مطبوعة بشكل جميل لسهولة القراءة.
{
"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"
}
عينة 5: الحصول على بيئة Azure حيث يتم تشغيل الجهاز الظاهري
يحتوي Azure على العديد من السحب ذات السيادية مثل Azure Government. في بعض الأحيان تحتاج بيئة Azure لاتخاذ بعض قرارات وقت التشغيل. توضح لك العينة التالية كيفية تحقيق هذا السلوك.
Request
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"
Response
AzurePublicCloud
يتم سرد السحابة وقيم بيئة Azure هنا.
السحابة | بيئة Azure |
---|---|
جميع مناطق Azure العالمية المتوفرة بشكل عام | AzurePublicCloud |
Microsoft Azure Government | AzureUSGovernmentCloud |
Microsoft Azure المشغل بواسطة 21Vianet | AzureChinaCloud |
Azure Germany | AzureGermanCloud |
عينة 6: استرداد معلومات الشبكة
Request
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
Response
{
"interface": [
{
"ipv4": {
"ipAddress": [
{
"privateIpAddress": "10.1.0.4",
"publicIpAddress": "X.X.X.X"
}
],
"subnet": [
{
"address": "10.1.0.0",
"prefix": "24"
}
]
},
"ipv6": {
"ipAddress": []
},
"macAddress": "000D3AF806EC"
}
]
}
عينة 7: استرداد عنوان IP العام
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"
إشعار
- إذا كنت تبحث عن استرداد معلومات IMDS لعنوان IP العام ل SKU القياسي ، فراجع واجهة برمجة تطبيقات بيانات تعريف موازن التحميل لمزيد من المعلومات.
البيانات المصدقة
الحصول على البيانات المصدقة
تساعد IMDS على توفير ضمانات بأن البيانات المقدمة تأتي من Azure. توقع Microsoft جزءا من هذه المعلومات، حتى تتمكن من التأكد من أن الصورة في Azure Marketplace هي الصورة التي تقوم بتشغيلها على Azure.
GET /metadata/attested/document
المعلمات
الاسم | مطلوب/اختياري | الوصف |
---|---|---|
api-version |
مطلوب | الإصدار المستخدم لخدمة الطلب. |
nonce |
اختياري | سلسلة مكونة من 10 أرقام تعمل كرمز nonce مشفر. إذا لم يتم توفير أي قيمة، فستستخدم IMDS الطابع الزمني الحالي للتوقيت العالمي المتفق عليه UTC. |
استجابة
{
"encoding":"pkcs7",
"signature":"MIIEEgYJKoZIhvcNAQcCoIIEAzCCA/8CAQExDzANBgkqhkiG9w0BAQsFADCBugYJKoZIhvcNAQcBoIGsBIGpeyJub25jZSI6IjEyMzQ1NjY3NjYiLCJwbGFuIjp7Im5hbWUiOiIiLCJwcm9kdWN0IjoiIiwicHVibGlzaGVyIjoiIn0sInRpbWVTdGFtcCI6eyJjcmVhdGVkT24iOiIxMS8yMC8xOCAyMjowNzozOSAtMDAwMCIsImV4cGlyZXNPbiI6IjExLzIwLzE4IDIyOjA4OjI0IC0wMDAwIn0sInZtSWQiOiIifaCCAj8wggI7MIIBpKADAgECAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBBAUAMCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tMB4XDTE4MTEyMDIxNTc1N1oXDTE4MTIyMDIxNTc1NlowKzEpMCcGA1UEAxMgdGVzdHN1YmRvbWFpbi5tZXRhZGF0YS5henVyZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAML/tBo86ENWPzmXZ0kPkX5dY5QZ150mA8lommszE71x2sCLonzv4/UWk4H+jMMWRRwIea2CuQ5RhdWAHvKq6if4okKNt66fxm+YTVz9z0CTfCLmLT+nsdfOAsG1xZppEapC0Cd9vD6NCKyE8aYI1pliaeOnFjG0WvMY04uWz2MdAgMBAAGjYDBeMFwGA1UdAQRVMFOAENnYkHLa04Ut4Mpt7TkJFfyhLTArMSkwJwYDVQQDEyB0ZXN0c3ViZG9tYWluLm1ldGFkYXRhLmF6dXJlLmNvbYIQZ8VuSofHbJRAQNBNpiASdDANBgkqhkiG9w0BAQQFAAOBgQCLSM6aX5Bs1KHCJp4VQtxZPzXF71rVKCocHy3N9PTJQ9Fpnd+bYw2vSpQHg/AiG82WuDFpPReJvr7Pa938mZqW9HUOGjQKK2FYDTg6fXD8pkPdyghlX5boGWAMMrf7bFkup+lsT+n2tRw2wbNknO1tQ0wICtqy2VqzWwLi45RBwTGB6DCB5QIBATA/MCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBCwUAMA0GCSqGSIb3DQEBAQUABIGAld1BM/yYIqqv8SDE4kjQo3Ul/IKAVR8ETKcve5BAdGSNkTUooUGVniTXeuvDj5NkmazOaKZp9fEtByqqPOyw/nlXaZgOO44HDGiPUJ90xVYmfeK6p9RpJBu6kiKhnnYTelUk5u75phe5ZbMZfBhuPhXmYAdjc7Nmw97nx8NnprQ="
}
الكائن الثنائي كبير الحجم للتوقيع هو نسخة من المستند تحمل التوقيع pkcs7. يحتوي على الشهادة المستخدمة للتوقيع مع بعض التفاصيل الخاصة بالجهاز الظاهري.
بالنسبة للأجهزة الظاهرية التي تم إنشاؤها باستخدام Azure Resource Manager، يتضمن المستند vmId
وsku
وnonce
وsubscriptionId
وtimeStamp
لإنشاء المستند وانتهاء صلاحيته ومعلومات الخطة حول الصورة. لا تتم تعبئة معلومات الخطة إلا لصور Azure Marketplace.
بالنسبة للأجهزة الظاهرية التي تم إنشاؤها باستخدام نموذج التوزيع الكلاسيكي، لا يتم ضمان ملء سوى vmId
وsubscriptionId
. يمكنك استخراج الشهادة من الاستجابة، واستخدامها للتأكد من أن الاستجابة صالحة وأنها قادمة من Azure.
يحتوي المستند دون ترميز على الحقول التالية:
بيانات | الوصف | الإصدار المقدم |
---|---|---|
licenseType |
نوع ترخيص Azure Hybrid Benefit. هذا موجود فقط للأجهزة الظاهرية التي تدعم AHB. | 2020-09-01 |
nonce |
سلسلة يمكن توفيرها اختياريًا مع الطلب. إذا لم يتم توفير nonce ، فيتم استخدام الطابع الزمني الحالي للتوقيت العالمي المتفق عليه. |
2018-10-01 |
plan |
خطة صورة Azure Marketplace. يحتوي على معرف الخطة (الاسم) وصورة المنتج أو العرض (المنتج) ومعرف الناشر (الناشر). | 2018-10-01 |
timestamp.createdOn |
الطابع الزمني للتوقيت العالمي المتفق عليه UTC لوقت إنشاء المستند الموقع | 2018-20-01 |
timestamp.expiresOn |
الطابع الزمني للتوقيت العالمي المتفق عليه UTC لوقت انتهاء صلاحية المستند الموقع | 2018-10-01 |
vmId |
معرّف فريد للجهاز الظاهري | 2018-10-01 |
subscriptionId |
اشتراك Azure للجهاز الظاهري | 2019-04-30 |
sku |
وحدة SKU محددة لصورة الجهاز الظاهري (ترتبط بخاصية compute/sku من نقطة نهاية Instance Metadata [/metadata/instance ]) |
2019-11-01 |
إشعار
بالنسبة للأجهزة الظاهرية الكلاسيكية (غير Azure Resource Manager)، لا يتم ضمان ملء سوى vmId.
مثال لمستند:
{
"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"
}
إرشادات التحقق من صحة التوقيع
عند التحقق من صحة التوقيع، يجب عليك تأكيد إنشاء التوقيع بشهادة من Azure. يتم ذلك عن طريق التحقق من صحة الاسم البديل لموضوع الشهادة (SAN).
مثال على SAN DNS Name=eastus.metadata.azure.com, DNS Name=metadata.azure.com
إشعار
سيكون مجال السحابة العامة وكل سحابة ذات سيادة مختلفا.
السحابة | المجال في SAN |
---|---|
جميع مناطق Azure العالمية المتوفرة بشكل عام | *.metadata.azure.com |
Microsoft Azure Government | *.metadata.azure.us |
Azure المشغل بواسطة 21Vianet | *.metadata.azure.cn |
Azure Germany | *.metadata.microsoftazure.de |
إشعار
قد لا تحتوي الشهادات على تطابق تام للمجال. لهذا السبب، يجب أن يقبل التحقق من صحة الشهادة أي مجال فرعي (على سبيل المثال، في مناطق التوفر العامة للسحابة العامة تقبل *.metadata.azure.com
).
لا نوصي بتثبيت الشهادة للشهادات المتوسطة. لمزيد من الإرشادات، راجع تثبيت الشهادة - تثبيت الشهادة وخدمات Azure. يرجى ملاحظة أن Azure Instance Metadata Service لن تقدم إشعارات للتغييرات المستقبلية للمرجع المصدق. بدلا من ذلك، يجب عليك اتباع مقالة تفاصيل مرجع مصدق Azure المركزي لجميع التحديثات المستقبلية.
العينة 1: التحقق من أن الجهاز الظاهري يعمل على Azure
يرغب الموردون في Azure Marketplace التأكد من ترخيص برامجهم للعمل فقط في Azure. إذا قام شخص ما بنسخ VHD إلى بيئة محلية، يحتاج المورد إلى القدرة على اكتشاف ذلك. من خلال IMDS، يمكن لهؤلاء الموردين الحصول على بيانات موقعة تضمن الاستجابة فقط من Azure.
إشعار
تتطلب هذه العينة تثبيت الأداة المساعدة jq.
التحقق
# 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)
تحقق من أن التوقيع من Microsoft Azure وتحقق من سلسلة الشهادات من وجود أخطاء.
# 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
في المستند الموقع إذا قدمت معلمة nonce
في الطلب الأولي.
الهوية المُدارة
يمكن تمكين الهوية المدارة، التي يعينها النظام، على الجهاز الظاهري. يمكنك أيضًا تعيين هوية مدارة واحدة أو أكثر من الهويات المدارة المعينة من قِبل المستخدم إلى الجهاز الظاهري. يمكنك بعد ذلك طلب رموز مميزة للهويات المُدارة من IMDS. استخدم هذه الرموز المميزة للمصادقة مع خدمات Azure الأخرى، مثل Azure Key Vault.
للحصول على خطوات مفصلة لتمكين هذه الميزة، راجع الحصول على رمز مميز للوصول.
بيانات تعريف موازن التحميل
عندما تضع جهازاً ظاهرياً أو مثيلات مجموعة أجهزة ظاهرية خلف موازنة تحميل قياسية لـ Azure، يُمكنك استخدام IMDS من أجل استرداد البيانات التعريفية المتعلقة بموازنة التحميل والمثيلات. لمزيد من المعلومات، راجع استرداد معلومات موازن التحميل.
الأحداث المجدولة
يمكنك الحصول على حالة الأحداث المجدولة باستخدام IMDS. ثم يمكن للمستخدم تحديد مجموعة من الإجراءات لتشغيلها على هذه الأحداث. لمزيد من المعلومات، راجع الأحداث المجدولة لنظام التشغيل Linux أو الأحداث المجدولة لنظام التشغيل Windows.
عينة تعليمات برمجية بلغات مختلفة
يسرد الجدول التالي عينات من استدعاء IMDS باستخدام لغات مختلفة داخل الجهاز الظاهري:
الأخطاء وتصحيح الأخطاء
إذا لم يتم العثور على عنصر بيانات أو طلب مشوه، فإن خدمة بيانات تعريف المثيل ترجع أخطاء HTTP القياسية. على سبيل المثال:
رمز حالة HTTP | السبب |
---|---|
200 OK |
الطلب ناجح. |
400 Bad Request |
رأس مفقود Metadata: true أو معلمة format=json مفقودة عند الاستعلام عن عقدة طرفية |
404 Not Found |
العنصر المطلوب غير موجود |
405 Method Not Allowed |
أسلوب HTTP (الفعل) غير مدعوم في نقطة النهاية. |
410 Gone |
أعد المحاولة بعد مرور بعض الوقت لمدة أقصاها 70 ثانية |
429 Too Many Requests |
تم تجاوز حدود معدل واجهة برمجة التطبيقات |
500 Service Error |
إعادة المحاولة بعد مرور بعض الوقت |
الأسئلة الشائعة
أتلقى الخطأ
400 Bad Request, Required metadata header not specified
. ما معنى ذلك؟- يتطلب IMDS تمرير الرأس
Metadata: true
في الطلب. يسمح تمرير هذا الرأس في استدعاء REST بالوصول إلى IMDS.
- يتطلب IMDS تمرير الرأس
لماذا لا أحصل على معلومات الحوسبة لجهازي الظاهري؟
- حاليًا، يدعم IMDS فقط المثيلات التي تم إنشاؤها باستخدام Azure Resource Manager.
أنشأت جهازي الظاهري من خلال Azure Resource Manager منذ بعض الوقت. لماذا لا أرى معلومات بيانات تعريف الحوسبة؟
- إذا أنشأت جهازك الظاهري بعد سبتمبر 2016، فأضف علامة لبدء عرض بيانات تعريف الحوسبة. إذا أنشأت الجهاز الظاهري قبل سبتمبر 2016، فأضف ملحقات أو أقراص بيانات أو أزلها إلى مثيل الجهاز الظاهري لتحديث بيانات التعريف.
هل بيانات المستخدم هي نفسها البيانات المخصصة؟
- توفر بيانات المستخدم وظائف مماثلة للبيانات المخصصة، مما يسمح لك بتمرير بيانات التعريف الخاصة بك إلى مثيل الجهاز الظاهري. الفرق هو أنه يتم استرداد بيانات المستخدم من خلال IMDS، وهي ثابتة طوال عمر مثيل الجهاز الظاهري. ستستمر ميزة البيانات المخصصة الموجودة في العمل كما هو موضح في هذه المقالة. ومع ذلك، يمكنك فقط الحصول على بيانات مخصصة من خلال مجلد النظام المحلي، وليس من خلال IMDS.
لماذا لا أرى جميع البيانات مملوءة بإصدار جديد؟
- إذا أنشأت جهازك الظاهري بعد سبتمبر 2016، فأضف علامة لبدء عرض بيانات تعريف الحوسبة. إذا أنشأت الجهاز الظاهري قبل سبتمبر 2016، فأضف ملحقات أو أقراص بيانات أو أزلها إلى مثيل الجهاز الظاهري لتحديث بيانات التعريف.
لماذا أتلقى الخطأ
500 Internal Server Error
أو410 Resource Gone
؟- جرّب الطلب من جديد. لمزيد من المعلومات، راجع معالجة الأخطاء العابرة. إذا استمرت المشكلة، فأنشئ مشكلة دعم في مدخل Azure للجهاز الظاهري.
هل سيعمل هذا مع مثيلات مجموعة التحجيم؟
- نعم، يتوفر IMDS لمثيلات مجموعة التحجيم.
لقد قمت بتحديث علاماتي في مجموعات المقياس الخاصة بي، ولكنها لا تظهر في المثيلات (على عكس الأجهزة الظاهرية لمثيل واحد). هل أفعل شيئًا خاطئًا؟
- تظهر علامات مجموعات المقياس حاليا فقط على الجهاز الظاهري عند إعادة التشغيل أو إعادة الرسم أو تغيير القرص إلى المثيل.
لماذا لا أرى معلومات SKU لجهازي الظاهري في
instance/compute
التفاصيل؟- بالنسبة للصور المخصصة التي تم إنشاؤها من Azure Marketplace، لا يحتفظ النظام الأساسي لـ Azure بمعلومات SKU للصورة المخصصة وتفاصيل أي أجهزة ظاهرية تم إنشاؤها من الصورة المخصصة. هذا حسب التصميم وبالتالي لا يظهر في تفاصيل
instance/compute
للجهاز الظاهري.
- بالنسبة للصور المخصصة التي تم إنشاؤها من Azure Marketplace، لا يحتفظ النظام الأساسي لـ Azure بمعلومات SKU للصورة المخصصة وتفاصيل أي أجهزة ظاهرية تم إنشاؤها من الصورة المخصصة. هذا حسب التصميم وبالتالي لا يظهر في تفاصيل
لماذا انتهت مهلة طلبي (أو فشل الاتصال) لمكالمتي بالخدمة؟
يجب إجراء استدعاءات بيانات التعريف من عنوان IP الأساسي المعين لبطاقة الشبكة الأساسية للجهاز الظاهري. بالإضافة إلى ذلك، إذا قمت بتغيير مساراتك، فيجب أن يكون هناك مسار للعنوان 169.254.169.254/32 في جدول التوجيه المحلي للجهاز الظاهري.
انسخ جدول التوجيه المحلي احتياطيًا وابحث عن إدخال IMDS. على سبيل المثال:
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) ...
تحقق من وجود مسار لـ
169.254.169.254
، ولاحظ واجهة الشبكة المقابلة (على سبيل المثال،172.16.69.7
).انسخ تكوين الواجهة احتياطيًا وابحث عن الواجهة التي تتوافق مع الواجهة المشار إليها في جدول التوجيه، مع ملاحظة عنوان MAC (الفعلي).
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) ...
تأكد من أن الواجهة تتوافق مع NIC الأساسي للجهاز الظاهري وعنوان IP الأساسي. يمكنك العثور على NIC الأساسي وعنوان IP من خلال النظر إلى تكوين الشبكة في مدخل Azure، أو من خلال البحث عنه باستخدام Azure CLI. لاحظ عناوين IP الخاصة (وعنوان MAC إذا كنت تستخدم CLI). فيما يلي مثال على PowerShell CLI:
$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
إذا لم تتطابقا، فقم بتحديث جدول التوجيه بحيث يتم استهداف NIC وIP الأساسيين.
تجاوز الفشل للمجموعات في Windows Server
عند الاستعلام عن IMDS باستخدام تجميع تجاوز الفشل، يكون من الضروري أحيانًا إضافة مسار إلى جدول التوجيه. وإليك الطريقة:
افتح موجه الأوامر باستخدام امتيازات المسؤول.
بادر بتشغيل الأمر التالي، ولاحظ عنوان واجهة وجهة الشبكة (
0.0.0.0
) في جدول توجيه IPv4.
route print
إشعار
إخراج المثال التالي من جهاز ظاهري لخادم Windows مع تمكين نظام مجموعة تجاوز الفشل. للتبسيط، يحتوي الإخراج فقط على جدول توجيه 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
بادر بتشغيل الأمر التالي، واستخدم عنوان واجهة وجهة الشبكة (
0.0.0.0
)، وهو (10.0.1.10
) في هذا المثال.route add 169.254.169.254/32 10.0.1.10 metric 1 -p
يدعم
إذا لم تتمكن من الحصول على استجابة بيانات التعريف بعد محاولات متعددة، يمكنك إنشاء مشكلة دعم في مدخل Microsoft Azure.
ملاحظات حول المنتج
يمكنك تقديم ملاحظات وأفكار حول المنتج إلى قناة ملاحظات المستخدمين الخاصة بنا ضمن > Instance Metadata Service للأجهزة الظاهرية هنا