Gérer les enregistrements

La gestion des enregistrements DNS de l'API Cloud DNS implique l'envoi de requêtes de modification à l'API. Cette page décrit comment effectuer ces modifications, qui correspondent à des ajouts et à des suppressions d'éléments dans votre collection de jeux d'enregistrements de ressources. Cette page explique également comment envoyer les modifications souhaitées à l'API à l'aide des commandes import, export et transaction.

Avant de commencer

Vous devez déjà avoir créé une zone gérée et suivi les étapes préalables à cette tâche.

Ajouter ou supprimer un enregistrement

Lorsque vous ajoutez un enregistrement, vous pouvez insérer deux valeurs ou chaînes au jeu d'enregistrements, pour le même nom DNS. Lorsque vous ajoutez des jeux d'enregistrements, vous devez insérer un espace entre la première et la seconde valeur.

Vous pouvez ajouter ou supprimer des enregistrements DNS dans un jeu d'enregistrements en créant et en exécutant une transaction qui spécifie les opérations que vous souhaitez effectuer. Une transaction est un groupe d'une ou plusieurs modifications d'enregistrement qui doivent être appliquées conjointement. L'ensemble de la transaction ne peut que réussir ou échouer. Ainsi, vos données ne sont jamais laissées dans un état intermédiaire.

Console

Pour créer un jeu d'enregistrements dans Cloud Console, procédez comme suit :

  1. Accédez à la page "Cloud DNS".
  2. Cliquez sur le nom de la zone gérée à laquelle vous souhaitez ajouter l'enregistrement.
  3. Sur l'écran "Détails de la zone", cliquez sur Ajouter un jeu d'enregistrements.
  4. Sur l'écran "Créer un jeu d'enregistrements", dans le champ Nom DNS, saisissez le sous-domaine de la zone DNS. Exemple : mail Le point final est automatiquement ajouté.

    Pour créer un enregistrement DNS générique, saisissez un astérisque. Par exemple, *.example.com.

  5. Sélectionnez le Type d'enregistrement de la ressource. Exemple : MX

  6. Dans le champ TTL, saisissez une valeur numérique correspondant à la durée de vie (Time To Live) de l'enregistrement de la ressource, c'est-à-dire le délai pendant lequel il peut être mis en cache. Cette valeur doit être un nombre entier positif. Dans le menu déroulant Unité TTL, sélectionnez l'unité de temps. Par exemple, 30 minutes.

  7. Selon le type d'enregistrement sélectionné pour la ressource, remplissez les champs restants comme décrit dans le tableau.

  8. Pour saisir des informations supplémentaires, cliquez sur Ajouter un élément.

  9. Cliquez sur Créer.

gcloud

a. Pour lancer une transaction, utilisez la commande gcloud dns record-sets transaction start :

gcloud dns record-sets transaction start --zone="my-zone-name"
  

Où :

  • --zone est le nom de la zone gérée dont vous souhaitez gérer les jeux d'enregistrements.

b. Pour ajouter un jeu d'enregistrements dans le cadre d'une transaction, utilisez la commande gcloud dns record-sets transaction add :

gcloud dns record-sets transaction add 10.2.3.4 --name="test.example.com" \
  --ttl="30" \
  --type="A" \
  --zone="my-zone-name"
  

Où :

  • --name est le nom DNS ou nom de domaine du jeu d'enregistrements à ajouter.
  • --ttl est la valeur TTL (Time To Live), exprimée en nombre de secondes, pour le jeu d'enregistrements.
  • --type est le type d'enregistrement décrit dans le tableau.
  • --zone est le nom de la zone gérée dont vous souhaitez gérer les jeux d'enregistrements.

c. Pour exécuter la transaction, utilisez la commande gcloud dns record-sets transaction execute :

gcloud dns record-sets transaction execute --zone="my-zone-name"

Pour ajouter une transaction générique, procédez comme suit :

gcloud dns record-sets transaction add --zone="my-zone-name" \
    --name="*.example.com." \
    --type=CNAME \
    --ttl=300 "sinkhole.example.com"
 

Où :

  • --name est le nom DNS ou nom de domaine du jeu d'enregistrements à ajouter.
  • --ttl est la valeur TTL (Time To Live), exprimée en nombre de secondes, pour le jeu d'enregistrements.
  • --type est le type d'enregistrement décrit dans le tableau.
  • --zone est le nom de la zone gérée dont vous souhaitez gérer les jeux d'enregistrements.

Pour supprimer une transaction, utilisez la commande gcloud dns record-sets transaction remove :

gcloud dns record-sets transaction remove 10.2.3.4 --name="test.example.com" \
    --ttl="number of seconds" \
    --type="record type" \
    --zone="zone name"
  

Où :

  • --name est le nom DNS ou nom de domaine du jeu d'enregistrements à supprimer.
  • --ttl est la valeur TTL (Time To Live), exprimée en nombre de secondes, pour le jeu d'enregistrements.
  • --type est le type d'enregistrement décrit dans le tableau.

Pour remplacer un enregistrement existant, exécutez la commande remove suivie de la commande add.

API

POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/managedZone/changes

{
  "deletions": [
    {
      "name": "test.example.com.",
      "type": "A",
      "ttl": "30",
      "rrdatas": [
        "198.51.100.5"
      ]
    }
  ]
  "additions": [
    {
      "name": "test.example.com.",
      "type": "A",
      "ttl": "30",
      "rrdatas": [
        "203.0.113.1"
      ]
    }
  ]
}

PROJECT_ID est votre ID de projet et managedZone est votre nom ou ID de zone gérée.

Liste des types d'enregistrements DNS acceptés

Cliquez ici pour l'essayer dans l'explorateur d'API.

Informations sur la sélection des types d'enregistrements de ressources

Type d'enregistrement concerné Saisir
A

Adresse IP numérique de l'hôte, au format décimal à point

AAAA

Adresse IP numérique de l'hôte, au format hexadécimal IPv6

CAA

Autorités de certification autorisées à délivrer des certificats pour ce domaine

CNAME

Nom canonique pour lequel le nom DNS est utilisé en tant qu'alias

DNSKEY

Clé DNSSEC d'un autre opérateur pour sécuriser le transfert. Ce type de jeu d'enregistrements peut uniquement être ajouté à une zone où DNSSEC est activé pour le transfert.

DS

Empreinte numérique de la clé DNSSEC pour sécuriser la zone déléguée. Ce type de jeu d'enregistrements n'active pas DNSSEC pour une zone déléguée, sauf si vous l'activez pour celle-ci.

IPSECVPNKEY

Clé publique VPN IPSec. DNSSEC est conseillé pour l'utilisation de ce type de jeu d'enregistrements, mais il n'est pas activé pour cette zone.

MX

Nombre suivi du nom DNS d'un serveur de messagerie, le nombre indiquant la priorité du serveur. Les serveurs associés à des nombres inférieurs sont essayés en premier. Assurez-vous qu'il y a un espace entre le nombre et le nom DNS.

NAPTR

Règles NAPTR pour le mappage des URN

NS

Nom DNS du serveur de noms faisant autorité. Vos enregistrements NS doivent correspondre aux serveurs de noms de votre zone.

PTR

Nom canonique de la ressource, généralement utilisé pour les recherches inversées

SPF

Type de jeu d'enregistrements SPF obsolète. Utilisez plutôt des enregistrements TXT commençant par "v=spf1". Les enregistrements de type SPF ne sont pas utilisés par les logiciels de messagerie modernes.

SRV

Données qui spécifient l'emplacement, c'est-à-dire le nom d'hôte et le numéro de port des serveurs pour un service particulier. Pour plus d'informations, reportez-vous au document RFC 2782.

SSHFP

Numéro d'algorithme, numéro du type d'empreinte numérique et empreinte numérique de la clé du serveur SSH. Utilisez ce type d'enregistrement si vous avez activé DNSSEC pour cette zone.

TLSA

Informations sur l'association des certificats DANE (DNS-based Authentication of Named Entities) et TLSA

TXT

Données textuelles pouvant contenir du texte arbitraire et permettant de définir des données exploitables par un ordinateur, telles que des informations de sécurité ou de prévention des abus. Un enregistrement TXT peut contenir une ou plusieurs chaînes de texte. La longueur maximale de chaque chaîne est de 255 caractères. Les agents de messagerie et d'autres agents logiciels rassemblent plusieurs chaînes. Placez chacune d'elles entre guillemets. Exemple :


"Hello world" "Bye world"

Importer et exporter des jeux d'enregistrements

Les fonctions import et export permettent de copier des jeux d'enregistrements à l'intérieur et à l'extérieur d'une zone gérée. Vous pouvez les importer et les exporter sous la forme d'un fichier de zone BIND ou d'enregistrements YAML.

Pour importer des jeux d'enregistrements, utilisez la commande dns record-sets import. L'option --zone-file-format informe la commande import qu'un fichier de zone au format BIND va lui être transmis. Si vous omettez cette option, la commande import s'attend à recevoir un fichier d'enregistrements au format YAML :

gcloud dns record-sets import -z=examplezonename \
   --zone-file-format path-to-example-zone-file

Pour exporter des jeux d'enregistrements, vous utilisez la commande dns record-sets export. Spécifiez l'option --zone-file-format pour indiquer à export d'exporter les jeux d'enregistrements dans un fichier au format BIND. Exemple :

example.com. 21600 IN NS ns-gcp-private.googledomains.com.
example.com. 21600 IN SOA ns-gcp-private.googledomains.com.
cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300
host1.example.com. 300 IN A 192.0.2.91

Si vous omettez cette option, export exporte le jeu d'enregistrements dans un fichier d'enregistrements au format YAML :

gcloud dns record-sets export example.zone -z=examplezonename \
   --zone-file-format
   

Exemple :

---
kind: dns#resourceRecordSet
name: example.com.
rrdatas:
- ns-gcp-private.googledomains.com.
ttl: 21600
type: NS
---
kind: dns#resourceRecordSet
name: example.com.
rrdatas:
- ns-gcp-private.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600
  259200 300
ttl: 21600
type: SOA
---
kind: dns#resourceRecordSet
name: host1.example.com.
rrdatas:
- 192.0.2.91
ttl: 300
type: A

Afficher le jeu d'enregistrements actuel

Pour afficher les enregistrements DNS actuels pour votre zone :

gcloud

gcloud dns record-sets list --zone="myzonename"
La commande génère la réponse JSON pour le jeu d'enregistrements de ressources pour les 100 premiers enregistrements. Vous pouvez spécifier les paramètres supplémentaires suivants :
  • limit : nombre maximal de jeux d'enregistrements à répertorier.
  • name : ne répertorie que les jeux d'enregistrements portant ce nom de domaine.
  • type : ne répertorie que les enregistrements de ce type. Si ce paramètre est présent, le paramètre --name doit également être spécifié.

Python

def list_resource_records(project_id, zone_name):
    client = dns.Client(project=project_id)
    zone = client.zone(zone_name)

    records = zone.list_resource_record_sets()

    return [(record.name, record.record_type, record.ttl, record.rrdatas)
            for record in records]

Étapes suivantes