تعيين أسماء المجالات المخصصة إلى أسماء مضيفي MQTT وHTTP لمساحة اسم شبكة الأحداث
يتم تعيين اسم شبكة الأحداث تلقائيا إلى اسم مضيف HTTP في وقت الإنشاء. إذا تم تمكين MQTT على مساحة الاسم، يتم تعيين اسم مضيف MQTT أيضا إلى مساحة الاسم. يستخدم العملاء أسماء المضيفين هذه للاتصال بمساحة اسم Event Grid.
يمكنك تعيين أسماء المجالات المخصصة إلى أسماء مضيفي MQTT وHTTP لمساحة اسم Event Grid، بالإضافة إلى أسماء المضيفين الافتراضية. لا تساعدك تكوينات المجال المخصصة على تلبية متطلبات الأمان والتوافق فحسب، بل تلغي أيضا الحاجة إلى تعديل العملاء المرتبطين بالفعل بمجالك.
المتطلبات الأساسية
لاستخدام المجالات المخصصة لمساحات الأسماء، تحتاج إلى المتطلبات الأساسية التالية:
- المجال المخصص الذي تملكه ويمكنك تعديل سجلات نظام أسماء المجالات (DNS) الخاصة به. لتعديل سجلات DNS، تحتاج إلى الوصول إلى سجل DNS لموفر المجال، مثل GoDaddy.
- شهادة طبقة مآخذ التوصيل الآمنة (SSL) لمجالك المخصص من مرجع مصدق عام أو خاص.
- حساب Azure Key Vault لاستضافة شهادة SSL لمجالك المخصص.
الخطوات عالية المستوى
لاستخدام المجالات المخصصة لمساحات الأسماء، اتبع الخطوات التالية:
- أضف إدخالات DNS لتوجيه المجال المخصص إلى نقطة نهاية مساحة اسم شبكة الأحداث.
- تمكين الهوية المدارة على مساحة اسم Event Grid.
- إنشاء حساب Azure Key Vault الذي يستضيف شهادة الخادم لمجالك المخصص.
- أضف تعيين الدور في Azure Key Vault للهوية المدارة لمساحة الاسم.
- قم بإقران مساحة اسم Event Grid بالمجال المخصص، مع تحديد اسم المجال المخصص واسم الشهادة ومرجع مثيل مخزن المفاتيح.
- تنشئ مساحة اسم Event Grid سجل TXT الذي تستخدمه لإثبات ملكية المجال المخصص.
- إثبات ملكية المجال الخاص بك عن طريق إنشاء سجل TXT استنادا إلى القيمة التي أنشأتها Event Grid في الخطوة السابقة.
- تتحقق Event Grid من صحة سجلات TXT للمجال المخصص قبل تنشيط المجال المخصص لاستخدام عملائك.
- يمكن لعملائك الاتصال بمساحة اسم Event Grid من خلال المجال المخصص.
القيود
- تكوين المجال المخصص فريد لكل منطقة عبر أسماء مضيفي MQTT وHTTP.
- لا يمكن أن يكون تكوين المجال المخصص متطابقا لأسماء مضيفي MQTT وHTTP ضمن نفس مساحة الاسم.
- لا يمكن أن يتعارض تكوين المجال المخصص مع أي اسم مضيف MQTT أو HTTP لأي مساحة اسم في نفس المنطقة.
إضافة إدخالات DNS
أنشئ سجلات DNS في مجالك للإشارة إلى اسم مضيف مساحة اسم شبكة الأحداث التي تريد إقران مجالك بها. لمعرفة المزيد، راجع تكوين اسم مجال مخصص لخدمة سحابة Azure.
اسم مضيف HTTP لمساحة الاسم بالتنسيق التالي: <namespace name>.centraluseuap-1.eventgrid.azure.net
اسم مضيف MQTT لمساحة الاسم بالتنسيق التالي: <namespace name>.centraluseuap-1.ts.eventgrid.azure.net
تمكين الهوية المدارة على مساحة اسم شبكة الأحداث
تستخدم مساحة الاسم الهوية المدارة للوصول إلى مثيل Azure Key Vault للحصول على شهادة الخادم لمجالك المخصص. استخدم الأمر التالي لتمكين الهوية المدارة المعينة من قبل النظام على مساحة اسم شبكة الأحداث:
az eventgrid namespace update --resource-group <resource group name> --name <namespace name> --identity "{type:systemassigned}"
للحصول على معلومات حول تكوين النظام والهويات المعينة من قبل المستخدم باستخدام مدخل Microsoft Azure، راجع تمكين الهوية المدارة لمساحة اسم شبكة الأحداث.
إنشاء حساب Azure Key Vault وتحميل شهادة الخادم
استخدم الأمر التالي لإنشاء حساب Azure Key Vault:
az keyvault create --name "<your-unique-keyvault-name>" --resource-group "<resource group name>" --location "centraluseuap"
استخدم الأمر التالي لاستيراد شهادة إلى Azure Key Vault
az keyvault certificate import --vault-name "<your-key-vault-name>" -n "<cert name>" -f "<path to your certificate pem file> "
إشعار
يجب أن تتضمن شهادتك اسم المجال في اسم بديل الموضوع ل DNS. لمزيد من المعلومات، راجع البرنامج التعليمي: استيراد شهادة في Azure Key Vault.
إضافة تعيين دور في Azure Key Vault للهوية المدارة لمساحة الاسم
تحتاج إلى توفير الوصول إلى مساحة الاسم للوصول إلى حساب Azure Key Vault الخاص بك باستخدام الخطوات التالية:
الحصول على معرف الهوية الأساسي لمساحة اسم شبكة الأحداث باستخدام الأمر التالي
$principalId=(az eventgrid namespace show --resource-group <resource group name> --name <namespace name> --query identity.principalId -o tsv)
احصل على معرف مورد Azure Key vault.
$keyVaultResourceId=(az keyvault show --resource-group <resource group name> --name <your key vault name> --query id -o tsv)
أضف تعيين الدور في Key Vault للهوية المدارة لمساحة الاسم.
az role assignment create --role "Key Vault Certificate User" --assignee $principalId --scope $keyVaultResourceId
لمزيد من المعلومات حول الوصول إلى Key Vault وتجربة المدخل، راجع توفير الوصول إلى مفاتيح Key Vault والشهادات والأسرار باستخدام التحكم في الوصول المستند إلى دور Azure.
إقران مساحة اسم Event Grid بالمجال المخصص
في هذه الخطوة، يمكنك إقران المجال المخصص الذي لم يتم التحقق منه بمساحة الاسم، ولكن لا يمكنك استخدامه حتى تثبت ملكيتك للمجال المخصص في الخطوة التالية.
استخدام مدخل Azure
استخدم الخطوات التالية لإضافة المجالات المخصصة:
انتقل إلى مساحة اسم شبكة الأحداث في مدخل Microsoft Azure
في صفحة Event Grid Namespace ، حدد Custom domains في قائمة التنقل اليسرى.
في صفحة Custom domains ، حدد + Custom domain.
في صفحة إضافة مجال مخصص، حدد قيما للخصائص التالية:
اسم المجال: اسم المجال المؤهل بالكامل الذي سيتم تعيينه لأحد أسماء مضيفي مساحة اسم شبكة الأحداث.
نوع اسم المضيف المقترن: نوع اسم المضيف الافتراضي الذي سيتم ربطه باسم المجال المخصص.
عنوان URL للشهادة: معرف الشهادة لشهادة الخادم في Azure Key Vault. قم بتضمين المعرف الأساسي للشهادة فقط عن طريق استبعاد الجزء الأخير من معرف الشهادة. يمكنك اختيار Select a certificate using a key vault بدلا من ذلك لتحديد الشهادة وkey vault من اشتراكاتك.
الهوية المدارة: الهوية المدارة المستخدمة للمصادقة مع Key Vault للوصول إلى شهادة الخادم التي تم إنشاؤها.
حدد إضافة
احفظ سجلات TXT عندما تحتاج إلى استخدام هذه القيم لإثبات ملكية المجال المخصص.
مثال Azure CLI
استخدم الأمر التالي لتحديث مساحة الاسم الخاصة بك بتكوين المجال المخصص. يتضمن الكائن التالي تكوينين مختلفين customDomains
: يتم تعيين التكوين ضمن topicSpacesConfiguration
إلى نقطة نهاية MQTT الخاصة بك، ويتم تعيين التكوين ضمن topicsConfiguration
إلى نقطة نهاية HTTP.
إشعار
يجب أن يكون كل تكوين مجال مخصص فريدا داخل نفس المنطقة.
az resource create --resource-type Microsoft.EventGrid/namespaces --id /subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/namespaces/<Namespace Name> --is-full-object --properties @./resources/NS.json
NS.json
{
"properties": {
"topicsConfiguration": {
"hostname": "HOSTNAME",
"customDomains": [
{
"fullyQualifiedDomainName": "www.HTTPDOMAINNAME.com",
"identity": {
"type": "SystemAssigned"
},
"certificateInfo": {
"keyVaultArmId": " /subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUPNAME/providers/Microsoft.KeyVault/vaults/KEYVAULTNAME",
"certificateName": "CERTIFICATENAME"
}
}
]
},
"topicSpacesConfiguration": {
"state": " Enabled",
"routeTopicResourceId": " /subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUPNAME/providers/Microsoft.EventGrid/namespaces/NAMESPACENAME/topics/TOPICNAME",
"hostname": "NAMESPACENAME.westus2-1.ts.eventgrid.azure.net",
"routingIdentityInfo": {
"type": "None"
},
"customDomains": [
{
"fullyQualifiedDomainName": " www.MQTTDOMAINNAME.com ",
"identity": {
"type": "SystemAssigned"
},
"certificateInfo": {
"keyVaultArmId": "/subscriptions/SUBSCRIPTIONNAME/resourceGroups/RESOURCEGROUPNAME/providers/Microsoft.KeyVault/vaults/KEYVAULTNAME",
"certificateName": "CERTIFICATENAME"
}
}
]
}
}
}
استبدل العناصر النائبة التالية بالقيم المناسبة، واحفظها في ملف يسمى NS.json
، وقم بتشغيل الأمر CLI.
صاحب المكان | الوصف |
---|---|
HOSTNAME |
يمكنك الحصول على اسم المضيف من صفحة Overview لمساحة اسم Event Grid في مدخل Microsoft Azure. |
NAMESPACENAME |
اسم مساحة اسم شبكة الأحداث. |
TOPICNAME |
اسم الموضوع في مساحة الاسم. |
HTTPDOMAINNAME |
اسم مجال HTTP. |
MQTTDOMAINNAME |
اسم مجال MQTT. |
SUBSCRIPTIONID |
مُعرّف اشتراك Azure. |
RESOURCEGROUPNAME |
اسم مجموعة موارد Azure. |
KEYVAULTNAME |
اسم key vault. |
CERTIFICATENAME |
اسم الشهادة. |
يمكن أن يكون نوع الهوية (type
) إما SystemAssigned
أو UserAssigned
. إذا UserAssigned
تم تحديد، حدد الهوية المعينة من قبل المستخدم باستخدام الخاصية userAssignedIdentity
.
تتضمن الاستجابة لهذه العملية معلومات DNS في شكل الخصائص التالية: expectedTxtRecordName
و expectedTxtRecordValue
. احفظ هذه المعلومات عندما تحتاج إلى استخدام هذه القيم لإثبات ملكية المجال المخصصة. فيما يلي نموذج استجابة:
{
"properties": {
"topicsConfiguration": {
"hostname": "HOSTNAME",
"customDomains": [
{
"fullyQualifiedDomainName": "www.HTTPDOMAINNAME.com",
"validationState": "Pending",
"identity": {
"type": "SystemAssigned"
},
"certificateInfo": {
"keyVaultArmId": " /subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUPNAME/providers/Microsoft.KeyVault/vaults/KEYVAULTNAME",
"certificateName": "CERTIFICATENAME"
},
"expectedTxtRecordName": "_eg. www.contoso-http.com",
"expectedTxtRecordValue": "<random string>"
}
]
},
"topicSpacesConfiguration": {
"state": " Enabled",
"routeTopicResourceId": " /subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUPNAME/providers/Microsoft.EventGrid/namespaces/MSNS/topics/TOPICNAME",
"hostname": "HOSTNAME",
"routingIdentityInfo": {
"type": "None"
},
"customDomains": [
{
"fullyQualifiedDomainName": " www.MQTTDOMAINNAME.com ",
"validationState": "Pending",
"identity": {
"type": "SystemAssigned"
},
"certificateInfo": {
"keyVaultArmId": "/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUPNAME/providers/Microsoft.KeyVault/vaults/KEYVAULTNAME",
"certificateName": "CERTIFICATENAME"
},
"expectedTxtRecordName": "_eg. www.contoso-mqtt.com",
"expectedTxtRecordValue": "<random string>"
}
]
}
}
}
إثبات ملكية المجال المخصص
لإثبات ملكية المجال، اتبع الخطوات التالية:
إضافة معلومات DNS.
ارجع إلى جهة تسجيل المجالات وأنشئ سجل TXT جديدا لمجالك استنادا إلى معلومات DNS المنسخة من الخطوة السابقة. يؤدي إنشاء TXT هذا لمجالك إلى التحقق من ملكية اسم المجال الخاص بك. قم بتعيين وقت البقاء (TTL) إلى 3600 ثانية (60 دقيقة)، ثم احفظ السجل.
تحقق من اسم المجال المخصص خاصتك.
لاستخدام مدخل Microsoft Azure، اتبع الخطوات التالية للتحقق من صحة المجالات المخصصة:
- في صفحة Custom domains ، حدد Validate domains.
- في صفحة Validate domains ، حدد Validate.
استخدم الأمر التالي لتحديث مساحة الاسم بتكوين مجال مخصص متطابق. يقوم هذا الأمر بتشغيل التحقق من صحة ملكية المجال المخصص. يجب نشر سجلات DNS قبل أن تتمكن من التحقق من المجال ويعتمد وقت نشر إعدادات DNS على جهة تسجيل المجالات.
في الاستجابة للأمر الخاص بك، تحقق من أن
validationState
هوApproved
.az resource create --resource-type Microsoft.EventGrid/namespaces --id /subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/namespaces/<Namespace Name> --is-full-object --properties @./resources/NS.json
NS.json:
{ "properties": { "topicsConfiguration": { "hostname": "HOSTNAME", "customDomains": [ { "fullyQualifiedDomainName": "www.HTTPDOMAINNAME.com", "identity": { "type": "SystemAssigned" }, "certificateInfo": { "keyVaultArmId": " /subscriptions/AZURESUBSCRIPTIONID/resourceGroups/RESOURCEGROUPNAME/providers/Microsoft.KeyVault/vaults/KEYVAULTNAME", "certificateName": "CERTIFICATENAME" } } ] }, "topicSpacesConfiguration": { "state": " Enabled", "routeTopicResourceId": " /subscriptions/AZURESUBSCRIPTIONID/resourceGroups/RESOURCEGROUPNAME/providers/Microsoft.EventGrid/namespaces/NAMESPACENAME/topics/TOPICNAME", "hostname": "HOSTNAME", "routingIdentityInfo": { "type": "None" }, "customDomains": [ { "fullyQualifiedDomainName": "www.MQTTDOMAINNAME.com ", "identity": { "type": "SystemAssigned" }, "certificateInfo": { "keyVaultArmId": "/subscriptions/AZURESUBSCRIPTIONID/resourceGroups/RESOURCEGROUPNAME/providers/Microsoft.KeyVault/vaults/KEYVAULTNAME", "certificateName": "CERTIFICATENAME" } } ] } } }