Attribuer des noms de domaine personnalisés aux noms d’hôtes MQTT et HTTP de l’espace de noms Event Grid
Un nom d’hôte HTTP est attribué automatiquement à l’espace de noms Event Grid au moment de la création. Si MQTT est activé sur l’espace de noms, le nom d’hôte MQTT est également attribué à l’espace de noms. Vos clients utilisent ces noms d’hôtes pour communiquer avec l’espace de noms Event Grid.
Vous pouvez attribuer vos noms de domaine personnalisés aux noms d’hôtes MQTT et HTTP de votre espace de noms Event Grid, ainsi que des noms d’hôtes par défaut. Les configurations de domaine personnalisées vous aident non seulement à répondre à vos exigences de sécurité et de conformité, mais aussi à éliminer la nécessité de modifier ceux de vos clients qui sont déjà liés à votre domaine.
Prérequis
Pour utiliser des domaines personnalisés pour les espaces de noms, vous devez disposer des prérequis suivants :
- Domaine personnalisé que vous possédez et dont vous pouvez modifier les enregistrements DNS (Domain Name System). Pour modifier les enregistrements DNS, vous devez accéder au registre DNS de votre fournisseur de domaine, comme GoDaddy.
- Certificat SSL (Secure Sockets Layer) pour votre domaine personnalisé provenant d’une autorité de certification publique ou privée.
- Compte Azure Key Vault pour héberger le certificat SSL de votre domaine personnalisé.
Étapes générales
Pour utiliser des domaines personnalisés pour les espaces de noms, procédez comme suit :
- Ajoutez des entrées DNS pour pointer votre domaine personnalisé vers le point de terminaison de l’espace de noms Event Grid.
- Activez l’identité managée sur votre espace de noms Event Grid.
- Créez un compte Azure Key Vault qui héberge le certificat de serveur de votre domaine personnalisé.
- Ajoutez l’attribution de rôle dans Azure Key Vault pour l’identité managée de l’espace de noms.
- Associez votre espace de noms Event Grid au domaine personnalisé, en spécifiant votre nom de domaine personnalisé, votre nom de certificat et votre référence d’instance de coffre de clés.
- L’espace de noms Event Grid génère un enregistrement TXT que vous utilisez pour prouver votre propriété du domaine personnalisé.
- Prouvez la propriété de votre domaine en créant un enregistrement TXT basé sur la valeur générée par Event Grid à l’étape précédente.
- Event Grid valide les enregistrements TXT du domaine personnalisé avant d’activer l’utilisation du domaine personnalisé par vos clients.
- Vos clients peuvent se connecter à l’espace de noms Event Grid via le domaine personnalisé.
Limites
- La configuration du domaine personnalisé est unique par région entre les noms d’hôtes MQTT et HTTP.
- La configuration du domaine personnalisé ne peut pas être identique pour les noms d’hôtes MQTT et HTTP sous le même espace de noms.
- La configuration du domaine personnalisé ne peut pas entrer en conflit avec un nom d’hôte MQTT ou HTTP pour tout espace de noms dans la même région.
Ajouter des entrées DNS
Créez des enregistrements DNS dans votre domaine pour pointer vers le nom d’hôte de votre espace de noms Event Grid auquel vous voulez associer votre domaine. Pour en savoir plus, consultez Configurer un nom de domaine personnalisé pour un service cloud Azure.
Le nom d’hôte HTTP de votre espace de noms est au format suivant : <namespace name>.centraluseuap-1.eventgrid.azure.net
Le nom d’hôte MQTT de votre espace de noms est au format suivant : <namespace name>.centraluseuap-1.ts.eventgrid.azure.net
Activer l’identité managée sur votre espace de noms Event Grid
L’espace de noms utilise l’identité managée pour accéder à votre instance Azure Key Vault, pour obtenir le certificat de serveur de votre domaine personnalisé. Utilisez la commande suivante pour activer l’identité managée attribuée par le système sur votre espace de noms Event Grid :
az eventgrid namespace update --resource-group <resource group name> --name <namespace name> --identity "{type:systemassigned}"
Pour plus d’informations sur la configuration des identités système et attribuées par l’utilisateur en utilisant le Portail Azure, consultez Activer l’identité managée pour un espace de noms Event Grid.
Créer un compte Azure Key Vault et charger votre certificat de serveur
Utilisez la commande suivante pour créer un compte Azure Key Vault :
az keyvault create --name "<your-unique-keyvault-name>" --resource-group "<resource group name>" --location "centraluseaup"
Utilisez la commande suivante pour importer un certificat dans votre Azure Key Vault
az keyvault certificate import --vault-name "<your-key-vault-name>" -n "<cert name>" -f "<path to your certificate pem file> "
Remarque
Votre certificat doit inclure le nom de domaine dans le Subject Alternative Name (SAN) pour DNS. Pour plus d’informations, consultez Tutoriel : Importation d’un certificat dans Azure Key Vault.
Ajouter une attribution de rôle dans Azure Key Vault pour l’identité managée de l’espace de noms
Vous devez fournir un accès à l’espace de noms pour accéder à votre compte Azure Key Vault en procédant comme suit :
Obtenez l’ID du principal d’identité managée par le système de l’espace de noms Event Grid en utilisant de la commande suivante
$principalId=(az eventgrid namespace show --resource-group <resource group name> --name <namespace name> --query identity.principalId -o tsv)
Obtenez l’ID de votre ressource Azure Key Vault.
$keyVaultResourceId=(az keyvault show --resource-group <resource group name> --name <your key vault name> --query id -o tsv)
Ajoutez l’attribution de rôle dans Key Vault pour l’identité managée de l’espace de noms.
az role assignment create --role "Key Vault Certificate User" --assignee $principalId --scope $keyVaultResourceId
Pour plus d’informations sur l’accès à Key Vault et l’expérience du portail, consultez Fournir un accès aux clés, certificats et secrets Key Vault avec un contrôle d’accès en fonction du rôle Azure.
Associer votre espace de noms Event Grid au domaine personnalisé
Dans cette étape, vous associez votre domaine personnalisé non vérifié à l’espace de noms, mais vous ne pouvez pas l’utiliser tant que vous n’avez pas prouvé la propriété de votre domaine personnalisé à l’étape suivante.
Utiliser le portail Azure
Pour ajouter vos domaines personnalisés, procédez comme suit :
Accédez à votre espace de noms Event Grid dans le Portail Azure
Sur la page Espace de noms Event Grid, sélectionnez Domaines personnalisés sur le menu de navigation de gauche.
Sur la page Domaines personnalisés, sélectionnez Domaine personnalisé +.
Sur la page Ajouter un domaine personnalisé, spécifiez les valeurs des propriétés suivantes :
Nom de domaine : le nom de domaine complet à attribuer à l’un de des noms d’hôte de votre espace de noms Event Grid.
Type de nom d’hôte associé : le type de nom d’hôte par défaut à associer au nom de votre domaine personnalisé.
URL du certificat : l’identificateur de certificat du certificat de serveur dans votre Azure Key Vault. Incluez uniquement l’identificateur de base du certificat en excluant le dernier segment de l’identificateur de certificat. Vous pouvez choisir Sélectionner un certificat en utilisant un coffre de clés pour sélectionner le certificat et le coffre de clés depuis vos abonnements.
Identité managée : l’identité managée utilisée pour s’authentifier auprès du Key Vault pour accéder au certificat de serveur créé.
Sélectionnez Ajouter
Sauvegardez les enregistrements TXT car vous devez utiliser ces valeurs pour prouver la propriété de votre domaine personnalisé.
Exemple Azure CLI
Utilisez la commande suivante pour mettre à jour votre espace de noms avec la configuration de domaine personnalisé. L’objet suivant comprend deux configurations customDomains
différentes : la configuration sous topicSpacesConfiguration
est attribuée à votre point de terminaison MQTT et la configuration sous topicsConfiguration
est attribuée à votre point de terminaison HTTP.
Remarque
Chaque configuration de domaine personnalisé doit être unique dans la même région.
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"
}
}
]
}
}
}
Remplacez les espaces réservés suivants par les valeurs appropriées, sauvegardez-les dans un fichier nommé NS.json
, puis exécutez la commande CLI.
Espace réservé | Description |
---|---|
HOSTNAME |
Vous pouvez obtenir le nom d’hôte depuis la page Vue d’ensemble de votre espace de noms Event Grid dans le Portail Azure. |
NAMESPACENAME |
Nom de l’espace de noms Event Grid. |
TOPICNAME |
Nom de la rubrique dans l’espace de noms. |
HTTPDOMAINNAME |
Nom du domaine HTTP. |
MQTTDOMAINNAME |
Nom du domaine MQTT. |
SUBSCRIPTIONID |
ID d’abonnement Azure. |
RESOURCEGROUPNAME |
Nom du groupe de ressources Azure. |
KEYVAULTNAME |
Nom du coffre de clés. |
CERTIFICATENAME |
Nom du certificat. |
Le type d’identité (type
) peut être ou SystemAssigned
UserAssigned
. Si UserAssigned
est sélectionné, spécifiez l’identité attribuée par l’utilisateur en utilisant la propriété userAssignedIdentity
.
La réponse à cette opération inclut les informations DNS sous la forme des propriétés suivantes : expectedTxtRecordName
et expectedTxtRecordValue
. Sauvegardez ces informations car vous devez utiliser ces valeurs pour prouver la propriété de votre domaine personnalisé. Voici un exemple de réponse :
{
"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>"
}
]
}
}
}
Prouver la propriété de votre domaine personnalisée
Pour prouver la propriété de votre domaine, procédez comme suit :
Ajoutez les informations DNS.
Revenez à votre registrar de domaine et créez un nouvel enregistrement TXT pour votre domaine en fonction des informations DNS copiées lors de l’étape précédente. Créer ce TXT pour votre domaine entraîne la vérification de la propriété de votre nom de domaine. Définissez la durée de vie (TTL) sur 3600 secondes (60 minutes), puis sauvegardez l’enregistrement.
Vérifiez votre nom de domaine personnalisé.
Pour utiliser le Portail Azure, procédez comme suit pour valider vos domaines personnalisés :
- Sur la page Domaines personnalisés, sélectionnez Valider les domaines.
- Sur la page Valider les domaines , sélectionnez Valider.
Utilisez la commande suivante pour mettre à jour votre espace de noms avec une configuration de domaine personnalisé identique. Cette commande déclenche la validation de la propriété du domaine personnalisé. Les enregistrements DNS doivent se propager avant de pouvoir vérifier le domaine et la durée de propagation de vos paramètres DNS dépend de votre registrar de domaine.
Dans la réponse à votre commande, vérifiez que la valeur
validationState
estApproved
.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/AZURESUBCRIPTIONID/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" } } ] } } }