Sdílet prostřednictvím


Přiřazení vlastních názvů domén k názvům MQTT a hostitelům HTTP služby Event Grid

Obor názvů Event Gridu se při vytváření automaticky přiřadí název hostitele HTTP. Pokud je pro obor názvů povolený MQTT, přiřadí se k oboru názvů také název hostitele MQTT. Vaši klienti používají tyto názvy hostitelů ke komunikaci s oborem názvů Služby Event Grid.

Vlastní názvy domén můžete přiřadit k názvům MQTT a hostitelů HTTP služby Event Grid spolu s výchozími názvy hostitelů. Konfigurace vlastních domén vám nejen pomáhají splňovat požadavky na zabezpečení a dodržování předpisů, ale také eliminuje nutnost upravovat klienty, kteří jsou už propojeni s vaší doménou.

Požadavky

Pokud chcete použít vlastní domény pro obory názvů, musíte mít následující požadavky:

  • Vlastní doména, kterou vlastníte, a může upravit její záznamy DNS (Domain Name System). Pokud chcete upravit záznamy DNS, potřebujete přístup k registru DNS pro svého poskytovatele domény, například GoDaddy.
  • Certifikát SSL (Secure Sockets Layer) pro vaši vlastní doménu z veřejné nebo privátní certifikační autority.
  • Účet služby Azure Key Vault pro hostování certifikátu SSL pro vaši vlastní doménu.

Základní kroky

Pokud chcete pro obory názvů používat vlastní domény, postupujte takto:

  1. Přidejte položky DNS, které odkazují na vlastní doménu na koncový bod oboru názvů Event Gridu.
  2. Povolte spravovanou identitu v oboru názvů Služby Event Grid.
  3. Vytvořte účet služby Azure Key Vault, který je hostitelem certifikátu serveru pro vaši vlastní doménu.
  4. Přidání přiřazení role ve službě Azure Key Vault pro spravovanou identitu oboru názvů
  5. Přidružte obor názvů event Gridu k vlastní doméně a zadejte vlastní název domény, název certifikátu a odkaz na instanci trezoru klíčů.
  6. Obor názvů Event Gridu vygeneruje záznam TXT, který použijete k prokázání vlastnictví vlastní domény.
  7. Ověření vlastnictví domény vytvořením záznamu TXT na základě hodnoty, kterou Služba Event Grid vygenerovala v předchozím kroku.
  8. Event Grid ověří záznamy TXT vlastní domény před aktivací vlastní domény pro použití vašich klientů.
  9. Klienti se můžou připojit k oboru názvů Event Gridu prostřednictvím vlastní domény.

Omezení

  • Konfigurace vlastní domény je jedinečná pro každou oblast napříč názvy hostitelů MQTT a HTTP.
  • Konfigurace vlastní domény nemůže být stejná pro názvy hostitelů MQTT a HTTP ve stejném oboru názvů.
  • Konfigurace vlastní domény nemůže kolidovat s žádným názvem hostitele MQTT nebo HTTP pro libovolný obor názvů ve stejné oblasti.

Přidání položek DNS

Vytvořte záznamy DNS ve vaší doméně tak, aby odkazovali na název hostitele vašeho oboru názvů Event Gridu, ke kterému chcete doménu přidružit. Další informace najdete v tématu Konfigurace vlastního názvu domény pro cloudovou službu Azure.

Název hostitele HTTP pro váš obor názvů je v následujícím formátu: <namespace name>.centraluseuap-1.eventgrid.azure.net

Název hostitele MQTT pro váš obor názvů je v následujícím formátu: <namespace name>.centraluseuap-1.ts.eventgrid.azure.net

Povolení spravované identity v oboru názvů služby Event Grid

Obor názvů používá spravovanou identitu pro přístup k instanci služby Azure Key Vault k získání certifikátu serveru pro vaši vlastní doménu. Pomocí následujícího příkazu povolte spravovanou identitu přiřazenou systémem v oboru názvů Event Gridu:

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

Informace o konfiguraci systémových a uživatelem přiřazených identit pomocí webu Azure Portal najdete v tématu Povolení spravované identity pro obor názvů Služby Event Grid.

Vytvoření účtu služby Azure Key Vault a nahrání certifikátu serveru

  1. Pomocí následujícího příkazu vytvořte účet služby Azure Key Vault:

    az keyvault create --name "<your-unique-keyvault-name>" --resource-group "<resource group name>" --location "centraluseaup" 
    
  2. Pomocí následujícího příkazu naimportujte certifikát do služby Azure Key Vault.

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

    Poznámka:

    Váš certifikát musí obsahovat název domény do alternativního názvu subjektu pro DNS. Další informace najdete v tématu Kurz: Import certifikátu ve službě Azure Key Vault.

Přidání přiřazení role ve službě Azure Key Vault pro spravovanou identitu oboru názvů

Přístup k oboru názvů potřebujete pro přístup k účtu služby Azure Key Vault pomocí následujícího postupu:

  1. Získání ID instančního objektu identity spravovaného systémem služby Event Grid pomocí následujícího příkazu

    $principalId=(az eventgrid namespace show --resource-group <resource group name> --name <namespace name> --query identity.principalId -o tsv) 
    
  2. Získejte ID prostředku služby Azure Key Vault.

    $keyVaultResourceId=(az keyvault show --resource-group <resource group name> --name <your key vault name> --query id -o tsv) 
    
  3. Přidání přiřazení role ve službě Key Vault pro spravovanou identitu oboru názvů

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

    Další informace o přístupu ke službě Key Vault a prostředí portálu najdete v tématu Poskytnutí přístupu k klíčům, certifikátům a tajným kódům služby Key Vault pomocí řízení přístupu na základě role v Azure.

Přidružení oboru názvů Event Gridu k vlastní doméně

V tomto kroku přidružíte neověřenou vlastní doménu k oboru názvů, ale nemůžete ji použít, dokud v dalším kroku neprokážete vlastnictví vlastní domény.

Použití webu Azure Portal

Pomocí následujícího postupu přidejte vlastní domény:

  1. Na webu Azure Portal přejděte do svého oboru názvů Event Gridu .

  2. Na stránce Obor názvů služby Event Grid vyberte v levé navigační nabídce vlastní domény.

  3. Na stránce Vlastní domény vyberte + Vlastní doména.

    Snímek obrazovky se stránkou Vlastní domény pro obor názvů služby Azure Event Grid s vybraným tlačítkem + Vlastní doména

  4. Na stránce Přidat vlastní doménu zadejte hodnoty následujících vlastností:

    1. Název domény: plně kvalifikovaný název domény, který se má přiřadit k jednomu z názvů hostitelů oboru názvů Event Gridu.

    2. Přidružený typ názvu hostitele: výchozí typ názvu hostitele, který se má přidružit k vašemu vlastnímu názvu domény.

    3. Adresa URL certifikátu: Identifikátor certifikátu serveru ve službě Azure Key Vault. Zahrňte pouze základní identifikátor certifikátu vyloučením posledního segmentu identifikátoru certifikátu. Místo toho můžete vybrat certifikát pomocí trezoru klíčů a vybrat certifikát a trezor klíčů z vašich předplatných.

    4. Spravovaná identita: spravovaná identita použitá k ověření ve službě Key Vault pro přístup k vytvořenému certifikátu serveru.

    5. Vyberte Přidat.

      Snímek obrazovky se stránkou Přidat vlastní doménu

  5. Záznamy TXT uložte, protože je potřeba použít tyto hodnoty k prokázání vlastního vlastnictví domény.

Příklad Azure CLI

Pomocí následujícího příkazu aktualizujte obor názvů pomocí vlastní konfigurace domény. Následující objekt obsahuje dvě různé customDomains konfigurace: konfigurace v části topicSpacesConfiguration je přiřazena k vašemu koncovému bodu MQTT a konfigurace v části topicsConfiguration je přiřazena k vašemu koncovému bodu HTTP.

Poznámka:

Každá konfigurace vlastní domény musí být v rámci stejné oblasti jedinečná.

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

Nahraďte následující zástupné symboly příslušnými hodnotami, uložte ho do souboru s názvem NS.jsona spusťte příkaz rozhraní příkazového řádku.

Držák místa Popis
HOSTNAME Název hostitele můžete získat ze stránky Přehled vašeho oboru názvů Event Gridu na webu Azure Portal.
NAMESPACENAME Název oboru názvů Event Gridu
TOPICNAME Název tématu v oboru názvů
HTTPDOMAINNAME Název domény HTTP.
MQTTDOMAINNAME Název domény MQTT.
SUBSCRIPTIONID ID předplatného Azure
RESOURCEGROUPNAME Název skupiny prostředků Azure
KEYVAULTNAME Název trezoru klíčů
CERTIFICATENAME Název certifikátu.

Typ identity (type) může být buď SystemAssigned nebo UserAssigned. Pokud UserAssigned je vybraná, zadejte identitu přiřazenou uživatelem pomocí userAssignedIdentity vlastnosti.

Odpověď na tuto operaci zahrnuje informace DNS ve formě následujících vlastností: expectedTxtRecordName a expectedTxtRecordValue. Tyto informace uložte, protože tyto hodnoty potřebujete použít k prokázání vlastnictví vlastní domény. Tady je ukázková odpověď:

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

Ověření vlastnictví vlastní domény

Pokud chcete prokázat vlastnictví domény, postupujte takto:

  1. Přidejte informace o DNS.

    Vraťte se k doménovému registrátorovi a vytvořte nový záznam TXT pro vaši doménu na základě zkopírovaných informací DNS z předchozího kroku. Vytvoření tohoto TXT pro vaši doménu ověří vlastnictví vašeho názvu domény. Nastavte hodnotu TTL (Time to Live) na 3 600 sekund (60 minut) a pak záznam uložte.

  2. Ověřte vlastní název domény.

    1. Pokud chcete použít Azure Portal, pomocí následujícího postupu ověřte vlastní domény:

      1. Na stránce Vlastní domény vyberte Ověřit domény.
      2. Na stránce Ověřit domény vyberte Ověřit.
    2. Pomocí následujícího příkazu aktualizujte obor názvů s identickou konfigurací vlastní domény. Tento příkaz aktivuje ověření vlastnictví vlastní domény. Záznamy DNS se musí rozšířit, než ověříte doménu a čas šíření nastavení DNS závisí na vašem doménovém registrátorovi.

      V odpovědi na příkaz ověřte, že je Approved.validationState

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