Przypisywanie niestandardowych nazw domen do nazw MQTT i HTTP przestrzeni nazw usługi Event Grid
Przestrzeń nazw usługi Event Grid jest automatycznie przypisywana jako nazwa hosta HTTP w momencie tworzenia. Jeśli protokół MQTT jest włączony w przestrzeni nazw, nazwa hosta MQTT jest również przypisywana do przestrzeni nazw. Klienci używają tych nazw hostów do komunikowania się z przestrzenią nazw usługi Event Grid.
Nazwy domen niestandardowych można przypisać do nazw hostów MQTT i HTTP przestrzeni nazw usługi Event Grid wraz z domyślnymi nazwami hostów. Konfiguracje domen niestandardowych nie tylko ułatwiają spełnienie wymagań dotyczących zabezpieczeń i zgodności, ale także eliminuje konieczność modyfikowania klientów, którzy są już połączeni z domeną.
Wymagania wstępne
Aby używać domen niestandardowych dla przestrzeni nazw, należy spełnić następujące wymagania wstępne:
- Domena niestandardowa, której jesteś właścicielem i może modyfikować rekordy systemu nazw domen (DNS). Aby zmodyfikować rekordy DNS, musisz mieć dostęp do rejestru DNS dostawcy domeny, takiego jak GoDaddy.
- Certyfikat Secure Sockets Layer (SSL) dla domeny niestandardowej z publicznego lub prywatnego urzędu certyfikacji.
- Konto usługi Azure Key Vault do hostowania certyfikatu SSL dla domeny niestandardowej.
Ogólne kroki
Aby użyć domen niestandardowych dla przestrzeni nazw, wykonaj następujące kroki:
- Dodaj wpisy DNS, aby wskazać domenę niestandardową do punktu końcowego przestrzeni nazw usługi Event Grid.
- Włącz tożsamość zarządzaną w przestrzeni nazw usługi Event Grid.
- Utwórz konto usługi Azure Key Vault, które hostuje certyfikat serwera dla domeny niestandardowej.
- Dodaj przypisanie roli w usłudze Azure Key Vault dla tożsamości zarządzanej przestrzeni nazw.
- Skojarz przestrzeń nazw usługi Event Grid z domeną niestandardową, określając niestandardową nazwę domeny, nazwę certyfikatu i odwołanie do wystąpienia magazynu kluczy.
- Przestrzeń nazw usługi Event Grid generuje rekord TXT używany do udowodnienia własności domeny niestandardowej.
- Udowodnij własność domeny, tworząc rekord TXT na podstawie wartości wygenerowanej w poprzednim kroku przez usługę Event Grid.
- Usługa Event Grid weryfikuje rekordy TXT domeny niestandardowej przed aktywowanie domeny niestandardowej dla użycia klientów.
- Klienci mogą łączyć się z przestrzenią nazw usługi Event Grid za pośrednictwem domeny niestandardowej.
Ograniczenia
- Konfiguracja domeny niestandardowej jest unikatowa dla poszczególnych regionów w nazwach hostów MQTT i HTTP.
- Konfiguracja domeny niestandardowej nie może być identyczna dla nazw hostów MQTT i HTTP w tej samej przestrzeni nazw.
- Konfiguracja domeny niestandardowej nie może kolidować z żadną nazwą hosta MQTT ani HTTP dla żadnej przestrzeni nazw w tym samym regionie.
Dodawanie wpisów DNS
Utwórz rekordy DNS w domenie, aby wskazać nazwę hosta przestrzeni nazw usługi Event Grid, z którą chcesz skojarzyć domenę. Aby dowiedzieć się więcej, zobacz Konfigurowanie niestandardowej nazwy domeny dla usługi w chmurze platformy Azure.
Nazwa hosta HTTP dla przestrzeni nazw ma następujący format: <namespace name>.centraluseuap-1.eventgrid.azure.net
Nazwa hosta MQTT dla przestrzeni nazw ma następujący format: <namespace name>.centraluseuap-1.ts.eventgrid.azure.net
Włączanie tożsamości zarządzanej w przestrzeni nazw usługi Event Grid
Przestrzeń nazw używa tożsamości zarządzanej do uzyskiwania dostępu do wystąpienia usługi Azure Key Vault w celu uzyskania certyfikatu serwera dla domeny niestandardowej. Użyj następującego polecenia, aby włączyć tożsamość zarządzaną przypisaną przez system w przestrzeni nazw usługi Event Grid:
az eventgrid namespace update --resource-group <resource group name> --name <namespace name> --identity "{type:systemassigned}"
Aby uzyskać informacje dotyczące konfigurowania tożsamości systemowych i przypisanych przez użytkownika przy użyciu witryny Azure Portal, zobacz Włączanie tożsamości zarządzanej dla przestrzeni nazw usługi Event Grid.
Tworzenie konta usługi Azure Key Vault i przekazywanie certyfikatu serwera
Użyj następującego polecenia, aby utworzyć konto usługi Azure Key Vault:
az keyvault create --name "<your-unique-keyvault-name>" --resource-group "<resource group name>" --location "centraluseaup"
Użyj następującego polecenia, aby zaimportować certyfikat do usługi Azure Key Vault
az keyvault certificate import --vault-name "<your-key-vault-name>" -n "<cert name>" -f "<path to your certificate pem file> "
Uwaga
Certyfikat musi zawierać nazwę domeny w alternatywnej nazwie podmiotu dla systemu DNS. Aby uzyskać więcej informacji, zobacz Samouczek: importowanie certyfikatu w usłudze Azure Key Vault.
Dodawanie przypisania roli w usłudze Azure Key Vault dla tożsamości zarządzanej przestrzeni nazw
Aby uzyskać dostęp do konta usługi Azure Key Vault, musisz zapewnić dostęp do przestrzeni nazw, wykonując następujące kroki:
Pobierz identyfikator podmiotu zabezpieczeń tożsamości zarządzanej systemu przestrzeni nazw usługi Event Grid przy użyciu następującego polecenia
$principalId=(az eventgrid namespace show --resource-group <resource group name> --name <namespace name> --query identity.principalId -o tsv)
Pobierz identyfikator zasobu usługi Azure Key Vault.
$keyVaultResourceId=(az keyvault show --resource-group <resource group name> --name <your key vault name> --query id -o tsv)
Dodaj przypisanie roli w usłudze Key Vault dla tożsamości zarządzanej przestrzeni nazw.
az role assignment create --role "Key Vault Certificate User" --assignee $principalId --scope $keyVaultResourceId
Aby uzyskać więcej informacji na temat dostępu do usługi Key Vault i środowiska portalu, zobacz Zapewnianie dostępu do kluczy, certyfikatów i wpisów tajnych usługi Key Vault przy użyciu kontroli dostępu opartej na rolach platformy Azure.
Kojarzenie przestrzeni nazw usługi Event Grid z domeną niestandardową
W tym kroku skojarzysz niezweryfikowaną domenę niestandardową z przestrzenią nazw, ale nie możesz jej używać, dopóki nie udowodnisz własności domeny niestandardowej w następnym kroku.
Korzystanie z witryny Azure Portal
Aby dodać domeny niestandardowe, wykonaj następujące czynności:
Przejdź do przestrzeni nazw usługi Event Grid w witrynie Azure Portal
Na stronie Przestrzeń nazw usługi Event Grid wybierz pozycję Domeny niestandardowe w menu nawigacji po lewej stronie.
Na stronie Domeny niestandardowe wybierz pozycję + Domena niestandardowa.
Na stronie Dodawanie domeny niestandardowej określ wartości następujących właściwości:
Nazwa domeny: w pełni kwalifikowana nazwa domeny, która ma zostać przypisana do jednej z nazw hostów przestrzeni nazw usługi Event Grid.
Skojarzony typ nazwy hosta: domyślny typ nazwy hosta, który ma być skojarzony z niestandardową nazwą domeny.
Adres URL certyfikatu: identyfikator certyfikatu serwera w usłudze Azure Key Vault. Uwzględnij tylko podstawowy identyfikator certyfikatu, wykluczając ostatni segment identyfikatora certyfikatu. Zamiast tego możesz wybrać pozycję Wybierz certyfikat przy użyciu magazynu kluczy, aby wybrać certyfikat i magazyn kluczy z subskrypcji.
Tożsamość zarządzana: tożsamość zarządzana używana do uwierzytelniania w usłudze Key Vault w celu uzyskania dostępu do utworzonego certyfikatu serwera.
Wybierz Dodaj
Zapisz rekordy TXT, ponieważ chcesz użyć tych wartości, aby udowodnić własność domeny niestandardowej.
Przykład interfejsu wiersza polecenia platformy Azure
Użyj następującego polecenia, aby zaktualizować przestrzeń nazw przy użyciu konfiguracji domeny niestandardowej. Następujący obiekt zawiera dwie różne customDomains
konfiguracje: konfiguracja w obszarze topicSpacesConfiguration
jest przypisana do punktu końcowego MQTT, a konfiguracja w obszarze topicsConfiguration
jest przypisana do punktu końcowego HTTP.
Uwaga
Każda konfiguracja domeny niestandardowej musi być unikatowa w tym samym regionie.
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"
}
}
]
}
}
}
Zastąp następujące symbole zastępcze odpowiednimi wartościami, zapisz je w pliku o nazwie NS.json
i uruchom polecenie interfejsu wiersza polecenia.
Uchwyt zastępczy | opis |
---|---|
HOSTNAME |
Nazwę hosta można uzyskać na stronie Przegląd przestrzeni nazw usługi Event Grid w witrynie Azure Portal. |
NAMESPACENAME |
Nazwa przestrzeni nazw usługi Event Grid. |
TOPICNAME |
Nazwa tematu w przestrzeni nazw. |
HTTPDOMAINNAME |
Nazwa domeny HTTP. |
MQTTDOMAINNAME |
Nazwa domeny MQTT. |
SUBSCRIPTIONID |
Identyfikator subskrypcji platformy Azure. |
RESOURCEGROUPNAME |
Nazwa grupy zasobów platformy Azure. |
KEYVAULTNAME |
Nazwa magazynu kluczy. |
CERTIFICATENAME |
Nazwa certyfikatu. |
Typ tożsamości (type
) może mieć wartość SystemAssigned
lub UserAssigned
. W przypadku UserAssigned
wybrania opcji określ tożsamość przypisaną przez użytkownika przy użyciu userAssignedIdentity
właściwości .
Odpowiedź na tę operację zawiera informacje DNS w postaci następujących właściwości: expectedTxtRecordName
i expectedTxtRecordValue
. Zapisz te informacje, ponieważ chcesz użyć tych wartości, aby udowodnić własność domeny niestandardowej. Oto przykładowa odpowiedź:
{
"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>"
}
]
}
}
}
Potwierdzanie własności domeny niestandardowej
Aby udowodnić własność domeny, wykonaj następujące kroki:
Dodaj informacje DNS.
Wróć do rejestratora domen i utwórz nowy rekord TXT dla domeny na podstawie skopiowanych informacji DNS z poprzedniego kroku. Utworzenie tego TXT dla domeny weryfikuje własność nazwy domeny. Ustaw czas wygaśnięcia (TTL) na 3600 sekund (60 minut), a następnie zapisz rekord.
Zweryfikuj niestandardową nazwę domeny.
Aby użyć witryny Azure Portal, wykonaj następujące kroki, aby zweryfikować domeny niestandardowe:
- Na stronie Domeny niestandardowe wybierz pozycję Weryfikuj domeny.
- Na stronie Weryfikowanie domen wybierz pozycję Weryfikuj.
Użyj następującego polecenia, aby zaktualizować przestrzeń nazw przy użyciu identycznej konfiguracji domeny niestandardowej. To polecenie wyzwala walidację własności domeny niestandardowej. Rekordy DNS muszą być propagowane, zanim będzie można zweryfikować domenę i czas propagacji ustawień DNS zależy od rejestratora domen.
W odpowiedzi na polecenie sprawdź, czy element
validationState
ma wartość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" } } ] } } }