Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пространству имен Event Grid автоматически назначается имя узла HTTP во время создания. Если MQTT включен в пространстве имен, имя узла MQTT также назначается пространству имен. Клиенты используют эти имена узлов для взаимодействия с пространством имен Сетки событий.
Вы можете назначить имена пользовательских доменов именам пространства имен Сетки событий MQTT и HTTP-узлов вместе с именами узлов по умолчанию. Конфигурации личного домена не только помогают соответствовать требованиям безопасности и соответствия требованиям, но и устраняют необходимость изменения клиентов, которые уже связаны с вашим доменом.
Предварительные условия
Чтобы использовать пользовательские домены для пространств имен, необходимо иметь следующие предварительные требования:
- Пользовательский домен, которым вы владеете и можете изменять его записи системы доменных имен (DNS). Чтобы изменить записи DNS, необходимо получить доступ к реестру DNS для поставщика домена, например GoDaddy.
- Сертификат SSL для пользовательского домена от общедоступного или частного УЦ.
- Учетная запись Azure Key Vault для размещения SSL-сертификата для личного домена.
Пошаговые действия
Чтобы использовать пользовательские домены для пространств имен, выполните следующие действия.
- Добавьте записи DNS, чтобы направить кастомный домен на конечную точку пространства имен Event Grid.
- Включите управляемое удостоверение в пространстве имен Event Grid.
- Создайте учетную запись Azure Key Vault, на котором размещен сертификат сервера для личного домена.
- Добавьте назначение ролей в Azure Key Vault для управляемого удостоверения пространства имен.
- Ассоциируйте пространство имен Event Grid с пользовательским доменом, указав имя пользовательского домена, имя сертификата и ссылку на экземпляр Key Vault.
- Пространство имен Сетки событий создает запись TXT, используемую для подтверждения владения личным доменом.
- Докажите владение доменом, создав запись TXT на основе значения, созданного сеткой событий на предыдущем шаге.
- Event Grid проверяет записи TXT пользовательского домена перед его активацией для использования клиентами.
- Клиенты могут подключаться к пространству имен Сетки событий через личный домен.
Ограничения
- Конфигурация личного домена уникальна для каждого региона в именах узлов 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
Включение управляемого удостоверения в пространстве имен Event Grid
Пространство имен использует управляемое удостоверение для доступа к экземпляру Azure Key Vault, чтобы получить сертификат сервера для настраиваемого домена. Используйте следующую команду, чтобы включить назначенное системой управляемое удостоверение в пространстве имен Event Grid:
az eventgrid namespace update --resource-group <resource group name> --name <namespace name> --identity "{type:systemassigned}"
Сведения о настройке системных и назначаемых пользователем удостоверений с помощью портала Azure смотрите в разделе Включение управляемого удостоверения для пространства имен Event Grid.
Создание учетной записи 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 необходимо предоставить доступ к пространству имен, выполнив следующие действия.
Получите идентификатор управляющей системы Event Grid с помощью следующей команды
$principalId=(az eventgrid namespace show --resource-group <resource group name> --name <namespace name> --query identity.principalId -o tsv)Получите идентификатор ресурса Хранилища ключей Azure.
$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
Чтобы добавить личные домены, выполните следующие действия.
Перейдите к пространству имен Event Grid в портале Azure.
На странице Event Grid Namespace выберите Custom domains в меню навигации слева.
На странице "Личные домены" выберите +Пользовательский домен.
На странице "Добавление личного домена" укажите значения для следующих свойств:
Доменное имя: полное доменное имя, которое будет назначено одному из имен пространства имен сетки событий.
Связанный тип имени узла: тип имени узла по умолчанию, связанный с именем личного домена.
URL-адрес сертификата: идентификатор сертификата сервера в Azure 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"
},
}
]
},
"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 |
Имя узла можно получить на странице обзора пространства имен Event Grid в портале Azure. |
NAMESPACENAME |
Имя пространства имен Event Grid. |
TOPICNAME |
Имя темы в пространстве имен. |
HTTPDOMAINNAME |
Имя домена HTTP. |
MQTTDOMAINNAME |
Имя домена MQTT. |
SUBSCRIPTIONID |
Идентификатор подписки Azure. |
RESOURCEGROUPNAME |
Имя группы ресурсов Azure. |
KEYVAULTNAME |
Имя хранилища ключей. |
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 минут), а затем сохраните запись.
Проверка имени личного домена.
Чтобы использовать портал Azure, выполните следующие действия, чтобы проверить пользовательские домены:
- На странице "Личные домены" выберите "Проверить домены".
- На странице "Проверка доменов" выберите "Проверить".
Используйте следующую команду, чтобы обновить пространство имен с идентичной конфигурацией личного домена. Эта команда активирует проверку владения личным доменом. Записи 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.jsonNS.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" } } ] } } }