Udostępnij za pośrednictwem


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:

  1. Dodaj wpisy DNS, aby wskazać domenę niestandardową do punktu końcowego przestrzeni nazw usługi Event Grid.
  2. Włącz tożsamość zarządzaną w przestrzeni nazw usługi Event Grid.
  3. Utwórz konto usługi Azure Key Vault, które hostuje certyfikat serwera dla domeny niestandardowej.
  4. Dodaj przypisanie roli w usłudze Azure Key Vault dla tożsamości zarządzanej przestrzeni nazw.
  5. 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.
  6. Przestrzeń nazw usługi Event Grid generuje rekord TXT używany do udowodnienia własności domeny niestandardowej.
  7. Udowodnij własność domeny, tworząc rekord TXT na podstawie wartości wygenerowanej w poprzednim kroku przez usługę Event Grid.
  8. Usługa Event Grid weryfikuje rekordy TXT domeny niestandardowej przed aktywowanie domeny niestandardowej dla użycia klientów.
  9. 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

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

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

  1. Przejdź do przestrzeni nazw usługi Event Grid w witrynie Azure Portal

  2. Na stronie Przestrzeń nazw usługi Event Grid wybierz pozycję Domeny niestandardowe w menu nawigacji po lewej stronie.

  3. Na stronie Domeny niestandardowe wybierz pozycję + Domena niestandardowa.

    Zrzut ekranu przedstawiający stronę Domeny niestandardowe dla przestrzeni nazw usługi Azure Event Grid z wybranym przyciskiem + Domena niestandardowa.

  4. Na stronie Dodawanie domeny niestandardowej określ wartości następujących właściwości:

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

    2. Skojarzony typ nazwy hosta: domyślny typ nazwy hosta, który ma być skojarzony z niestandardową nazwą domeny.

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

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

    5. Wybierz Dodaj

      Zrzut ekranu przedstawiający stronę Dodawanie domeny niestandardowej.

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

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

  2. Zweryfikuj niestandardową nazwę domeny.

    1. Aby użyć witryny Azure Portal, wykonaj następujące kroki, aby zweryfikować domeny niestandardowe:

      1. Na stronie Domeny niestandardowe wybierz pozycję Weryfikuj domeny.
      2. Na stronie Weryfikowanie domen wybierz pozycję Weryfikuj.
    2. 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"
                          }
                      }
                  ]
              }
          }
      }