Dela via


Tilldela anpassade domännamn till Event Grid-namnområdets MQTT- och HTTP-värdnamn

Event Grid-namnområdet tilldelas automatiskt ett HTTP-värdnamn när det skapas. Om MQTT är aktiverat på namnområdet tilldelas även MQTT-värdnamnet till namnområdet. Dina klienter använder dessa värdnamn för att kommunicera med Event Grid-namnområdet.

Du kan tilldela dina anpassade domännamn till Event Grid-namnområdets MQTT- och HTTP-värdnamn, tillsammans med standardvärdnamnen. Anpassade domänkonfigurationer hjälper dig inte bara att uppfylla dina säkerhets- och efterlevnadskrav, utan eliminerar också behovet av att ändra dina klienter som redan är länkade till din domän.

Förutsättningar

Om du vill använda anpassade domäner för namnområden måste du ha följande förutsättningar:

  • Anpassad domän som du äger och kan ändra dns-poster (Domain Name System). Om du vill ändra DNS-poster behöver du åtkomst till DNS-registret för domänprovidern, till exempel GoDaddy.
  • SSL-certifikat (Secure Sockets Layer) för din anpassade domän från en offentlig eller privat certifikatutfärdare.
  • Azure Key Vault-konto som värd för SSL-certifikatet för din anpassade domän.

Steg på hög nivå

Följ dessa steg om du vill använda anpassade domäner för namnområden:

  1. Lägg till DNS-poster för att peka din anpassade domän till Event Grid-namnområdesslutpunkten.
  2. Aktivera hanterad identitet i Event Grid-namnområdet.
  3. Skapa ett Azure Key Vault-konto som är värd för servercertifikatet för din anpassade domän.
  4. Lägg till rolltilldelning i Azure Key Vault för namnområdets hanterade identitet.
  5. Associera Event Grid-namnområdet med den anpassade domänen och ange din anpassade domännamns-, certifikatnamn- och key vault-instansreferens.
  6. Event Grid-namnområdet genererar en TXT-post som du använder för att bevisa ägarskap för den anpassade domänen.
  7. Bevisa ditt domänägarskap genom att skapa en TXT-post baserat på värdet som Event Grid genererade i föregående steg.
  8. Event Grid verifierar TXT-posterna för den anpassade domänen innan du aktiverar den anpassade domänen för dina klienters användning.
  9. Dina klienter kan ansluta till Event Grid-namnområdet via den anpassade domänen.

Begränsningar

  • Konfiguration av anpassad domän är unik per region mellan MQTT- och HTTP-värdnamn.
  • Anpassad domänkonfiguration kan inte vara identisk för MQTT- och HTTP-värdnamnen under samma namnområde.
  • Konfiguration av anpassad domän kan inte krocka med MQTT- eller HTTP-värdnamn för något namnområde i samma region.

Lägga till DNS-poster

Skapa DNS-poster i domänen för att peka på värdnamnet för det Event Grid-namnområde som du vill associera domänen med. Mer information finns i Konfigurera ett anpassat domännamn för en Azure-molntjänst.

HTTP-värdnamnet för namnområdet är i följande format: <namespace name>.centraluseuap-1.eventgrid.azure.net

MQTT-värdnamnet för namnområdet är i följande format: <namespace name>.centraluseuap-1.ts.eventgrid.azure.net

Aktivera hanterad identitet i Event Grid-namnområdet

Namnområdet använder den hanterade identiteten för att komma åt din Azure Key Vault-instans för att hämta servercertifikatet för din anpassade domän. Använd följande kommando för att aktivera systemtilldelad hanterad identitet i Event Grid-namnområdet:

az eventgrid namespace update --resource-group <resource group name> --name <namespace name> --identity "{type:systemassigned}" 

Information om hur du konfigurerar system- och användartilldelade identiteter med hjälp av Azure-portalen finns i Aktivera hanterad identitet för ett Event Grid-namnområde.

Skapa ett Azure Key Vault-konto och ladda upp servercertifikatet

  1. Använd följande kommando för att skapa ett Azure Key Vault-konto:

    az keyvault create --name "<your-unique-keyvault-name>" --resource-group "<resource group name>" --location "centraluseaup" 
    
  2. Använd följande kommando för att importera ett certifikat till Azure Key Vault

    az keyvault certificate import --vault-name "<your-key-vault-name>" -n "<cert name>" -f "<path to your certificate pem file> " 
    

    Kommentar

    Certifikatet måste innehålla domännamnet i alternativt namn på certifikatmottagaren för DNS. Mer information finns i Självstudie: Importera ett certifikat i Azure Key Vault.

Lägga till rolltilldelning i Azure Key Vault för namnområdets hanterade identitet

Du måste ge åtkomst till namnområdet för att få åtkomst till ditt Azure Key Vault-konto med hjälp av följande steg:

  1. Hämta Event Grid-namnområdessystemets hanterade identitetshuvudnamns-ID med hjälp av följande kommando

    $principalId=(az eventgrid namespace show --resource-group <resource group name> --name <namespace name> --query identity.principalId -o tsv) 
    
  2. Hämta ditt Resurs-ID för Azure Key Vault.

    $keyVaultResourceId=(az keyvault show --resource-group <resource group name> --name <your key vault name> --query id -o tsv) 
    
  3. Lägg till rolltilldelning i Key Vault för namnområdets hanterade identitet.

    az role assignment create --role "Key Vault Certificate User" --assignee $principalId --scope $keyVaultResourceId 
    

    Mer information om Åtkomst till Key Vault och portalen finns i Ge åtkomst till Key Vault-nycklar, certifikat och hemligheter med en rollbaserad åtkomstkontroll i Azure.

Associera Event Grid-namnområdet med den anpassade domänen

I det här steget associerar du din overifierade anpassade domän med namnområdet, men du kan inte använda den förrän du bevisar ägarskapet för den anpassade domänen i nästa steg.

Använda Azure-portalen

Använd följande steg för att lägga till dina anpassade domäner:

  1. Navigera till Event Grid-namnområdet i Azure-portalen

  2. På sidan Event Grid-namnområde väljer du Anpassade domäner på den vänstra navigeringsmenyn.

  3. På sidan Anpassade domäner väljer du + Anpassad domän.

    Skärmbild som visar sidan Anpassade domäner för ett Azure Event Grid-namnområde med knappen + Anpassad domän markerad.

  4. På sidan Lägg till anpassad domän anger du värden för följande egenskaper:

    1. Domännamn: det fullständigt kvalificerade domännamn som ska tilldelas till ett av värdnamnen för Event Grid-namnområdet.

    2. Associerad värdnamnstyp: standardvärdens namntyp som ska associeras med ditt anpassade domännamn.

    3. Certifikat-URL: Certifikatidentifieraren för servercertifikatet i ditt Azure Key Vault. Inkludera endast certifikatets basidentifierare genom att exkludera det sista segmentet i certifikatidentifieraren. Du kan välja Välj ett certifikat med hjälp av ett nyckelvalv i stället för att välja certifikatet och nyckelvalvet från dina prenumerationer.

    4. Hanterad identitet: den hanterade identitet som används för att autentisera med Key Vault för att komma åt servercertifikatet som skapades.

    5. Markera Lägga till

      Skärmbild som visar sidan Lägg till anpassad domän.

  5. Spara TXT-posterna eftersom du behöver använda dessa värden för att bevisa ditt anpassade domänägarskap.

Azure CLI-exempel

Använd följande kommando för att uppdatera namnområdet med den anpassade domänkonfigurationen. Följande objekt innehåller två olika customDomains konfigurationer: konfigurationen under topicSpacesConfiguration är tilldelad till din MQTT-slutpunkt och konfigurationen under topicsConfiguration är tilldelad till HTTP-slutpunkten.

Kommentar

Varje anpassad domänkonfiguration måste vara unik inom samma region.

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"
                    }
                }
            ]
        }
    }
}

Ersätt följande platshållare med lämpliga värden, spara den i en fil med namnet NS.jsonoch kör CLI-kommandot.

Platshållare beskrivning
HOSTNAME Du kan hämta värdnamnet från sidan Översikt i Event Grid-namnområdet i Azure-portalen.
NAMESPACENAME Namn på Event Grid-namnområdet.
TOPICNAME Namnet på ämnet i namnområdet.
HTTPDOMAINNAME Namnet på HTTP-domänen.
MQTTDOMAINNAME Namnet på MQTT-domänen.
SUBSCRIPTIONID Prenumerations-ID för Azure.
RESOURCEGROUPNAME Namnet på Azure-resursgruppen.
KEYVAULTNAME Namnet på nyckelvalvet.
CERTIFICATENAME Namnet på certifikatet.

Identitetstypen (type) kan vara antingen SystemAssigned eller UserAssigned. Om UserAssigned är markerat anger du den användartilldelade identiteten userAssignedIdentity med hjälp av egenskapen .

Svaret på den här åtgärden innehåller DNS-informationen i form av följande egenskaper: expectedTxtRecordName och expectedTxtRecordValue. Spara den här informationen eftersom du behöver använda dessa värden för att bevisa ditt anpassade domänägarskap. Här är ett exempelsvar:

{
    "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>"
                }
            ]
        }
    }
}

Bevisa ditt anpassade domänägarskap

Följ dessa steg för att bevisa ditt domänägarskap:

  1. Lägg till DNS-informationen.

    Gå tillbaka till domänregistratorn och skapa en ny TXT-post för din domän baserat på din kopierade DNS-information från föregående steg. När du skapar den här TXT-filen för din domän verifieras ägarskapet för ditt domännamn. Ange time to live (TTL) till 3 600 sekunder (60 minuter) och spara sedan posten.

  2. Verifiera ditt anpassade domännamn.

    1. Följ dessa steg för att verifiera dina anpassade domäner om du vill använda Azure-portalen:

      1. På sidan Anpassade domäner väljer du Verifiera domäner.
      2. På sidan Verifiera domäner väljer du Verifiera.
    2. Använd följande kommando för att uppdatera namnområdet med en identisk anpassad domänkonfiguration. Det här kommandot utlöser verifieringen av det anpassade domänägarskapet. DNS-posterna måste spridas innan du kan verifiera domänen och spridningstiden för dns-inställningarna beror på domänregistratorn.

      I svaret på kommandot kontrollerar du att validationState är 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"
                          }
                      }
                  ]
              }
          }
      }