Bagikan melalui


Menetapkan nama domain kustom ke nama host MQTT dan HTTP namespace layanan Event Grid

Namespace Layanan Event Grid secara otomatis diberi nama host HTTP pada saat pembuatan. Jika MQTT diaktifkan pada namespace layanan, nama host MQTT juga ditetapkan ke namespace layanan. Klien Anda menggunakan nama host ini untuk berkomunikasi dengan namespace Layanan Event Grid.

Anda dapat menetapkan nama domain kustom ke nama host MQTT dan HTTP namespace layanan Event Grid, bersama dengan nama host default. Konfigurasi domain kustom tidak hanya membantu Anda memenuhi persyaratan keamanan dan kepatuhan Anda, tetapi juga menghilangkan kebutuhan untuk memodifikasi klien Anda yang sudah ditautkan ke domain Anda.

Prasyarat

Untuk menggunakan domain kustom untuk namespace, Anda harus memiliki prasyarat berikut:

  • Domain kustom yang Anda miliki dan bisa mengubah catatan Sistem Nama Domain (DNS) -nya. Untuk mengubah catatan DNS, Anda memerlukan akses ke registri DNS untuk penyedia domain Anda, seperti GoDaddy.
  • Sertifikat Secure Sockets Layer (SSL) untuk domain kustom Anda dari CA publik atau privat.
  • Akun Azure Key Vault untuk menghosting sertifikat SSL untuk domain kustom Anda.

Langkah-langkah tingkat tinggi

Untuk menggunakan domain kustom untuk namespace layanan, ikuti langkah-langkah berikut:

  1. Tambahkan entri DNS untuk mengarahkan domain kustom Anda ke titik akhir namespace Layanan Event Grid.
  2. Aktifkan identitas terkelola di namespace Layanan Event Grid Anda.
  3. Buat akun Azure Key Vault yang menghosting sertifikat server untuk domain kustom Anda.
  4. Tambahkan penetapan peran di Azure Key Vault untuk identitas terkelola namespace.
  5. Kaitkan namespace Layanan Event Grid Anda dengan domain kustom, menentukan nama domain kustom, nama sertifikat, dan referensi instans brankas kunci Anda.
  6. Namespace Layanan Event Grid menghasilkan catatan TXT yang Anda gunakan untuk membuktikan kepemilikan domain kustom.
  7. Buktikan kepemilikan domain Anda dengan membuat catatan TXT berdasarkan nilai yang dihasilkan Event Grid di langkah sebelumnya.
  8. Event Grid memvalidasi catatan TXT domain kustom sebelum mengaktifkan domain kustom untuk penggunaan klien Anda.
  9. Klien Anda dapat terhubung ke namespace Layanan Event Grid melalui domain kustom.

Batasan

  • Konfigurasi domain kustom unik per wilayah di seluruh nama host MQTT dan HTTP.
  • Konfigurasi domain kustom tidak boleh identik untuk nama host MQTT dan HTTP di bawah namespace yang sama.
  • Konfigurasi domain kustom tidak dapat berbenturan dengan nama host MQTT atau HTTP apa pun untuk namespace layanan apa pun di wilayah yang sama.

Menambahkan entri DNS

Buat catatan DNS di domain Anda untuk menunjuk ke nama host namespace Layanan Event Grid yang ingin Anda kaitkan dengan domain Anda. Untuk mempelajari selengkapnya, lihat Mengonfigurasi nama domain kustom untuk layanan cloud Azure.

Nama host HTTP untuk namespace Anda dalam format berikut: <namespace name>.centraluseuap-1.eventgrid.azure.net

Nama host MQTT Untuk namespace Anda dalam format berikut: <namespace name>.centraluseuap-1.ts.eventgrid.azure.net

Mengaktifkan identitas terkelola di namespace Layanan Event Grid Anda

Namespace menggunakan identitas terkelola untuk mengakses instans Azure Key Vault Anda untuk mendapatkan sertifikat server untuk domain kustom Anda. Gunakan perintah berikut untuk mengaktifkan identitas terkelola yang ditetapkan sistem pada namespace Layanan Event Grid Anda:

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

Untuk informasi mengonfigurasi sistem dan identitas yang ditetapkan pengguna menggunakan portal Azure, lihat Mengaktifkan identitas terkelola untuk namespace Layanan Event Grid.

Membuat akun Azure Key Vault dan mengunggah sertifikat server Anda

  1. Gunakan perintah berikut untuk membuat akun Azure Key Vault:

    az keyvault create --name "<your-unique-keyvault-name>" --resource-group "<resource group name>" --location "centraluseaup" 
    
  2. Gunakan perintah berikut untuk mengimpor sertifikat ke Azure Key Vault

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

    Catatan

    Sertifikat Anda harus menyertakan nama domain dalam Nama alternatif subjek untuk DNS. Untuk informasi selengkapnya, lihat Tutorial: Mengimpor sertifikat di Azure Key Vault.

Menambahkan penetapan peran di Azure Key Vault untuk identitas terkelola namespace

Anda perlu menyediakan akses ke namespace layanan untuk mengakses akun Azure Key Vault Anda menggunakan langkah-langkah berikut:

  1. Dapatkan ID prinsipal identitas terkelola sistem namespace Event Grid menggunakan perintah berikut

    $principalId=(az eventgrid namespace show --resource-group <resource group name> --name <namespace name> --query identity.principalId -o tsv) 
    
  2. Dapatkan ID sumber daya Azure Key Vault Anda.

    $keyVaultResourceId=(az keyvault show --resource-group <resource group name> --name <your key vault name> --query id -o tsv) 
    
  3. Tambahkan penetapan peran di Key Vault untuk identitas terkelola namespace.

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

    Untuk informasi selengkapnya tentang akses Key Vault dan pengalaman portal, lihat Menyediakan akses ke kunci, sertifikat, dan rahasia Key Vault dengan kontrol akses berbasis peran Azure.

Mengaitkan namespace Layanan Event Grid Anda dengan domain kustom

Dalam langkah ini, Anda mengaitkan domain kustom yang belum diverifikasi dengan namespace layanan, tetapi Anda tidak dapat menggunakannya sampai Anda membuktikan kepemilikan domain kustom di langkah berikutnya.

Menggunakan portal Microsoft Azure

Gunakan langkah-langkah berikut untuk menambahkan domain kustom Anda:

  1. Navigasi ke namespace Layanan Event Grid Anda di portal Azure

  2. Pada halaman Namespace Layanan Event Grid, pilih Domain kustom di menu navigasi kiri.

  3. Pada halaman Domain kustom, pilih + Domain kustom.

    Cuplikan layar yang memperlihatkan halaman Domain kustom untuk namespace Azure Event Grid dengan tombol + Domain kustom dipilih.

  4. Pada halaman Tambahkan domain kustom, tentukan nilai untuk properti berikut ini:

    1. Nama domain: nama domain yang sepenuhnya memenuhi syarat untuk ditetapkan ke salah satu nama host namespace Layanan Event Grid Anda.

    2. Jenis nama host terkait: jenis nama host default yang akan dikaitkan dengan nama domain kustom Anda.

    3. URL Sertifikat: Pengidentifikasi Sertifikat sertifikat server di Azure Key Vault Anda. Sertakan hanya pengidentifikasi dasar sertifikat dengan mengecualikan segmen terakhir Pengidentifikasi Sertifikat. Anda dapat memilih Pilih sertifikat menggunakan brankas kunci sebagai gantinya untuk memilih sertifikat dan brankas kunci dari langganan Anda.

    4. Identitas terkelola: identitas terkelola yang digunakan untuk mengautentikasi dengan Key Vault untuk mengakses sertifikat server yang dibuat.

    5. Pilih Tambahkan

      Cuplikan layar yang memperlihatkan halaman Tambahkan domain kustom.

  5. Simpan catatan TXT karena Anda perlu menggunakan nilai-nilai ini untuk membuktikan kepemilikan domain kustom Anda.

Contoh Azure CLI

Gunakan perintah berikut untuk memperbarui namespace Anda dengan konfigurasi domain kustom. Objek berikut mencakup dua konfigurasi berbeda customDomains : konfigurasi di bawah topicSpacesConfiguration ditetapkan ke titik akhir MQTT Anda, dan konfigurasi di bawah topicsConfiguration ditetapkan ke titik akhir HTTP Anda.

Catatan

Setiap konfigurasi domain kustom harus unik dalam wilayah yang sama.

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

Ganti tempat penampung berikut dengan nilai yang sesuai, simpan ke file bernama NS.json, dan jalankan perintah CLI.

Tempat penampung Deskripsi
HOSTNAME Anda bisa mendapatkan nama host dari halaman Gambaran Umum namespace Layanan Event Grid Anda di portal Azure.
NAMESPACENAME Nama namespace Layanan Event Grid.
TOPICNAME Nama topik di namespace layanan.
HTTPDOMAINNAME Nama domain HTTP.
MQTTDOMAINNAME Nama domain MQTT.
SUBSCRIPTIONID ID Langganan Azure.
RESOURCEGROUPNAME Nama grup sumber daya Azure.
KEYVAULTNAME Nama brankas kunci.
CERTIFICATENAME Nama sertifikat.

Jenis identitas (type) dapat berupa SystemAssigned atau UserAssigned. Jika UserAssigned dipilih, tentukan identitas yang ditetapkan pengguna menggunakan userAssignedIdentity properti .

Respons terhadap operasi ini mencakup informasi DNS dalam bentuk properti berikut: expectedTxtRecordName dan expectedTxtRecordValue. Simpan informasi ini karena Anda perlu menggunakan nilai-nilai ini untuk membuktikan kepemilikan domain kustom Anda. Berikut adalah contoh respons:

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

Membuktikan kepemilikan domain kustom Anda

Untuk membuktikan kepemilikan domain Anda, ikuti langkah-langkah berikut:

  1. Tambahkan informasi DNS.

    Kembali ke pencatat domain Anda dan buat catatan TXT baru untuk domain Anda berdasarkan informasi DNS yang disalin dari langkah sebelumnya. Membuat TXT ini untuk domain Anda memverifikasi kepemilikan nama domain Anda. Atur waktu hidup (TTL) ke 3.600 detik (60 menit), lalu simpan catatan.

  2. Verifikasi nama domain kustom Anda.

    1. Untuk menggunakan portal Azure, ikuti langkah-langkah berikut untuk memvalidasi domain kustom Anda:

      1. Pada halaman Domain kustom, pilih Validasi domain.
      2. Pada halaman Validasi domain , pilih Validasi.
    2. Gunakan perintah berikut untuk memperbarui namespace Anda dengan konfigurasi domain kustom yang identik. Perintah ini memicu validasi kepemilikan domain kustom. Catatan DNS harus disebarluaskan sebelum Anda bisa memverifikasi domain dan waktu penyebaran pengaturan DNS Anda bergantung pada pencatat domain Anda.

      Dalam respons terhadap perintah Anda, verifikasi bahwa validationState adalah 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"
                          }
                      }
                  ]
              }
          }
      }