Azure – Azure DNS Public et délégation depuis OVH

LOGO_AzureDNS

Aujourd’hui nous allons parler Azure DNS. Non pas la version privée d’Azure DNS, que nous avons déjà abordée plusieurs fois, mais la partie Publique d’Azure DNS.

En effet, Azure propose un service de gestion des zones DNS.

Attention à ne pas confondre avec un fournisseur de nom de domaine tel qu’OVH, GoDaddy ou IONOS. Le service Azure DNS met à disposition des serveurs DNS exposés publiquement afin d’accueillir vos zones DNS publiques.

Au même titre qu’il est possible d’exposer le service DNS de Windows server par exemple sur internet afin d’héberger vos zones publiques et de déléguer la gestion de cette zone depuis votre fournisseur de nom de domaine à ce serveur. Avec le service Azure DNS, la logique reste la même, sauf que le service est fourni sous la forme PaaS. Ce qui permet de s’affranchir de la mise en HA de ce service ainsi que la gestion de la sécurité.

Azure DNS ne permet pas l’achat de nom de domaine. Cette action à l’heure où j’écris ces lignes reste une opération tiers à réaliser auprès de votre fournisseur de nom de domaine.

Sommaire

Pourquoi utiliser Azure DNS ?

Oui, les fournisseurs de nom de domaine proposent leurs propres serveurs DNS sur lesquels, il est possible de créer des enregistrements. De plus généralement ces mêmes fournisseurs offrent la possibilité de manager leur service DNS via API.

Et bien, je vois plusieurs avantages à utiliser le service DNS d’Azure.

  • L’utilisation d’une console unique, celle d’Azure. En effet, la console Azure, est déjà utilisée et connue par bon nombre de personnes. Alors que les consoles des fournisseurs de nom de domaine ne sont pas très intuitives et rarement utilisées.
  • Un seul langage et accès pour déployer à la fois les ressources Azure et les enregistrements DNS qui lui correspondent (AzureRM, Terraform …).
  • Pas besoin d’utiliser une API tierce interfacée au travers de méthodes maintenues par la communauté.
  • Disponibilité du service positionné au niveau multizone.
  • Vitesse de réplication des enregistrements (presque immédiat).
PICTO_NOTE_REMARQUE

Même si lors de sa création, comme pour toute ressource Azure, il est nécessaire de spécifier une région, le service Azure DNS est un service global et répliquer automatiquement au travers des régions Azure afin d’offrir une très haute disponibilité.

DNSPub_Azure_0040

Type d'enregistrement supportés

Vous trouverez ci-dessous la liste des types d’enregistrements supportés par Azure DNS :

    • A
    • AAAA
    • CAA
    • CNAME
    • MX
    • NS
    • PTR
    • SOA
    • SRV
    • TXT
DNSPub_Azure_0006
https://docs.microsoft.com/en-us/azure/dns/dns-zones-records#record-types

Créer une zone Azure DNS

La création d’une zone ne présente pas de difficulté particulière, comme pour chaque ressource Azure, il existe une multitude de manières différentes de créer une ressource (Powershell, GUI, AzureCLI, Biceps, Terraform …), nous allons utiliser la GUI et Terraform pour ce cas si.

Azure GUI

Pour créer une zone Azure DNS depuis la GUI d’Azure, il suffit de se rendre dans la market place et rechercher “DNS zone”. Puis de cliquer sur “créer” sur le produit “DNS zone”.

Je vous passe la phase d’architecture préliminaire afin de positionner les zones DNS dans les bonnes subscriptions /managment group …

Ensuite, sélectionner la “subscription” et le “resource group” où sera créée la zone DNS.

Renseigner le nom de la zone ici “teddycrop.xyz” et la région Azure.

Appliquer les tags si nécessaire et créer la nouvelle zone.

Après quelques secondes, notre nouvelle zone est crée. Il convient de noter les 4 “Name Server” qui gèrent cette nouvelle zone, ceux-ci devront être renseignés auprès de votre fournisseur de nom de domaine afin de déléguer la gestion de la zone à Azure. Chose que nous allons voir juste après.

Terraform

Étant donné que la gestion des zones Azure prend tout son sens dans le monde DevOps, vous trouverez ci-dessous un exemple de code Terraform (light) pour sa création.

resource "azurerm_resource_group" "publicdns_teddycorp_xyz_rg" {
  name     = "publicdns_rg"
  location = "West Europe"
}

resource "azurerm_dns_zone" "teddycorp_xyz_publicdns" {
  name                = "teddycorp.xyz"
  resource_group_name = azurerm_resource_group.publicdns_teddycorp_xyz_rg.name
}

Déléguer la gestion de la zone à Azure DNS

Pour cette démonstration, le domaine utilisé est “teddycorp.xyz”, pour ce domaine-ci, le fournisseur de nom de domaine est OVH. Cette procédure peut variée selon les fournisseurs de nom de domaine, mais la logique reste la même.

Depuis le Dashboard OVH, se rendre dans la section “Nom de domaine”.

Dans la liste des noms de domaine, sélectionner le domaine correspondant à votre zone Azure DNS. Dans notre cas, le domaine “teddycrop.xyz”.

Depuis le panneau de contrôle du domaine, sélectionner “Serveurs DNS”.

Par défaut, ce sont les serveurs DNS d’OVH qui sont utilisés pour gérer la zone DNS :

  • ns17.ovh.net
  • dns17.ovh.net

Ce sont ces serveurs que nous allons remplacer par ceux de Microsoft.

nslookup
set type=NS
teddycorp.xyz
set type=SOA
teddycorp.xyz
PICTO_NOTE_REMARQUE

Nous pouvons retrouver les enregistrements correspondant aux serveurs DNS maitre de la zone dans le contenu de la zone DNS sous le type “NS”.

DNSPub_OVH_0050

Dans la partie gauche de la page, sélectionner “Modifier les serveurs DNS”.

Supprimer les enregistrements correspondant aux serveurs DNS d’OVH et renseigner les 4 NS de Microsoft. Vous pouvez retrouver les noms des serveurs depuis la zone Azure DNS.

PICTO_AVERTISSEMENT

Les modifications auprès des fournisseurs de nom de domaine, en l’occurrence OVH prennent 48h pour la modification des NS. En cas d’erreur de configuration, bien que les corrections ne soient pas compliquées, celle-ci peut avoir un impact considérable dû à la durée de mise en œuvre.

DNSPub_OVH_0080

Après quelques heures d’attentes, les serveurs OVH ont été remplacés par ceux de Microsoft.

Pour que cette configuration soit pleinement fonctionnelle, il convient d’attendre les 48h indiqués par OVH. En effet, même si la configuration peut être validée avant, le TTL par défaut sur les enregistrements de type “NS” est de 48 heures.

Vous pouvez vérifier la configuration à l’aide de la commande “NSLOOKUP” :

nslookup
set type=NS
teddycorp.xyz
set type=SOA
teddycorp.xyz

Créer des enregistrements

Maintenant que la zone Azure DNS est opérationnelle depuis l’interface Azure, nous allons pouvoir commencer à créer nos premiers enregistrements.

Interface graphique

Pour commencer, depuis la zone DNS, cliquer sur “Record set”.

Une nouvelle fenêtre s’ouvre où vous pouvez renseigner le nom de l’enregistrement ainsi que son type, TTL et ça valeur /adresse /…

Dans l’exemple ci-dessous, il s’agit d’un enregistrement de type TXT pour renseigner le SPF du domaine.

Ou encore dans l’exemple ci-dessous, un enregistrement de type A.

Après quelques instants, les enregistrements sont ajoutés à la zone.

Pour avoir pratiqué bon nombre d’interfaces de DNS publiques, je trouve (ça n’engage que moi) que l’interface d’Azure est relativement simple.

Terraform

La version “light” en Terraform pour créer un enregistrement dans une zone Azure DNS déjà créée.

Pour chaque type d’enregistrements, il existe une ressource Terraform distincte :

data "azurerm_dns_zone" "dnszone_teddycorp_xyz" {
  name                = "teddycorp.xyz"
  resource_group_name = "publicdns_rg"
}

resource "azurerm_dns_a_record" "dns_a_record_type-a-record" {
  name                = "type-a-record"
  zone_name           = data.azurerm_dns_zone.dnszone_teddycorp_xyz.name
  resource_group_name = "publicdns_rg"
  ttl                 = 30
  records             = ["54.36.91.62"]
}

resource "azurerm_dns_cname_record" "dns_a_record_type-cname-record01" {
  name                = "type-cname-record01"
  zone_name           = data.azurerm_dns_zone.dnszone_teddycorp_xyz.name
  resource_group_name = "publicdns_rg"
  ttl                 = 30
  record              = "type-a-record.teddycorp.xyz"
}

Les sous-domaines

Les sous-domaines ou les répertoires contenus dans votre zone DNS peuvent être gérés depuis Azure DNS. Cette configuration se matérialisé par la création d’une nouvelle zone Azure DNS avec la particularité d’être une zone enfant de la zone principale. Azure DNS offre la possibilité de créer une hiérarchie entre les zones.

Pour réaliser cette opération, vous devez créer une nouvelle zone Azure DNS.

Depuis la zone parent, sélectionner “Child zone”.

Vous allez être automatiquement redirigé vers l’assistant de création de zones Azure DNS que nous avons utilisé précédemment pour créer notre première zone Azure DNS. À la différence que l’option “This zone is a child of existing zone already hosted in Azure DNS” est cochée, de plus les champs correspondant à la zone parent sont préremplis.

Il ne reste que le nom de la zone à saisir.

PICTO_NOTE_REMARQUE

Si vous créez une zone enfant depuis l’assistant de création de zones (sans passer par la zone parent), vous allez entre autres devoir renseigner la zone parent. Si vous ne commencez pas à renseigner le nom de la zone parent, la sélection reste vide. Il faut commencer à saisir le nom de la zone pour que celle-ci vous soit proposée.

Après quelques secondes, la zone enfant est créée.

PICTO_AVERTISSEMENT

Lors de l’utilisation d’une hiérarchie de zone DNS, il convient de faire attention à la zone dans laquelle les enregistrements sont créés afin de garder de la cohérence. En effet, bien qu’une zone enfant “api.teddycorp.xyz” est présente, il est tout à fait possible de créer une enregistrement “xxx.api.teddycorp.xyz” dans la zone parent “teddycorp.xyz”.

PICTO_NOTE_REMARQUE

Jusqu’à présent je n’ai pas réussi à créer des zones enfants nativement en Terraform.

Conclusion

Une fois le débat de mettre tous ses œufs dans le même panier et déléguer à Microsoft la gestion des enregistrements DNS, la solution Azure DNS est plutôt performante.

En effet, la création des enregistrements et leurs mises à jour sont instantanées au sein des serveurs DNS Microsoft. De plus, pour les entreprises qui ont leurs environnements hébergés sur Azure et utiliser l’IaaC (Terraform ou autre language), la création des zones DNS et des enregistrements devient très facile à industrialiser.

Personnellement, j’aurais aimé pouvoir importer /exporter et surtout backuper de manière native les zones. Ce qui sauf erreur de ma part n’est pas possible. Cependant, avec l’utilisation de l’IaaC, il est possible de recréer rapidement la zone et ses enregistrements, à condition que tout le monde joue le jeu et que les modifications manuelles soient proscrites.

Liens annexes

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.