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:
- Lägg till DNS-poster för att peka din anpassade domän till Event Grid-namnområdesslutpunkten.
- Aktivera hanterad identitet i Event Grid-namnområdet.
- Skapa ett Azure Key Vault-konto som är värd för servercertifikatet för din anpassade domän.
- Lägg till rolltilldelning i Azure Key Vault för namnområdets hanterade identitet.
- Associera Event Grid-namnområdet med den anpassade domänen och ange din anpassade domännamns-, certifikatnamn- och key vault-instansreferens.
- Event Grid-namnområdet genererar en TXT-post som du använder för att bevisa ägarskap för den anpassade domänen.
- Bevisa ditt domänägarskap genom att skapa en TXT-post baserat på värdet som Event Grid genererade i föregående steg.
- Event Grid verifierar TXT-posterna för den anpassade domänen innan du aktiverar den anpassade domänen för dina klienters användning.
- 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
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"
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:
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)
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)
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:
Navigera till Event Grid-namnområdet i Azure-portalen
På sidan Event Grid-namnområde väljer du Anpassade domäner på den vänstra navigeringsmenyn.
På sidan Anpassade domäner väljer du + Anpassad domän.
På sidan Lägg till anpassad domän anger du värden för följande egenskaper:
Domännamn: det fullständigt kvalificerade domännamn som ska tilldelas till ett av värdnamnen för Event Grid-namnområdet.
Associerad värdnamnstyp: standardvärdens namntyp som ska associeras med ditt anpassade domännamn.
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.
Hanterad identitet: den hanterade identitet som används för att autentisera med Key Vault för att komma åt servercertifikatet som skapades.
Markera Lägga till
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.json
och 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:
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.
Verifiera ditt anpassade domännamn.
Följ dessa steg för att verifiera dina anpassade domäner om du vill använda Azure-portalen:
- På sidan Anpassade domäner väljer du Verifiera domäner.
- På sidan Verifiera domäner väljer du Verifiera.
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
ärApproved
.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" } } ] } } }