Partager via


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 :

  1. Ajoutez des entrées DNS pour pointer votre domaine personnalisé vers le point de terminaison de l’espace de noms Event Grid.
  2. Activez l’identité managée sur votre espace de noms Event Grid.
  3. Créez un compte Azure Key Vault qui héberge le certificat de serveur de votre domaine personnalisé.
  4. Ajoutez l’attribution de rôle dans Azure Key Vault pour l’identité managée de l’espace de noms.
  5. 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.
  6. L’espace de noms Event Grid génère un enregistrement TXT que vous utilisez pour prouver votre propriété du domaine personnalisé.
  7. 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.
  8. Event Grid valide les enregistrements TXT du domaine personnalisé avant d’activer l’utilisation du domaine personnalisé par vos clients.
  9. 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

  1. 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" 
    
  2. 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 :

  1. 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) 
    
  2. 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) 
    
  3. 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 :

  1. Accédez à votre espace de noms Event Grid dans le Portail Azure

  2. Sur la page Espace de noms Event Grid, sélectionnez Domaines personnalisés sur le menu de navigation de gauche.

  3. Sur la page Domaines personnalisés, sélectionnez Domaine personnalisé +.

    Capture d’écran qui montre la page Domaines personnalisés d’un espace de noms Azure Event Grid avec le bouton Domaine personnalisé + sélectionné.

  4. Sur la page Ajouter un domaine personnalisé, spécifiez les valeurs des propriétés suivantes :

    1. Nom de domaine : le nom de domaine complet à attribuer à l’un de des noms d’hôte de votre espace de noms Event Grid.

    2. Type de nom d’hôte associé : le type de nom d’hôte par défaut à associer au nom de votre domaine personnalisé.

    3. 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.

    4. 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éé.

    5. Sélectionnez Ajouter

      Capture d’écran qui montre la page Ajouter un domaine personnalisé.

  5. 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 :

  1. 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.

  2. Vérifiez votre nom de domaine personnalisé.

    1. Pour utiliser le Portail Azure, procédez comme suit pour valider vos domaines personnalisés :

      1. Sur la page Domaines personnalisés, sélectionnez Valider les domaines.
      2. Sur la page Valider les domaines , sélectionnez Valider.
    2. 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 est 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/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"
                          }
                      }
                  ]
              }
          }
      }