Configuration YAML (.yaml)
Spécification StandardYAML Ain’t Markup Language (YAML) est le format de sérialisation de données le plus utilisé dans le DevOps et les infrastructures cloud modernes (Kubernetes, Docker Compose), ainsi que pour l’automatisation CI/CD. Son indentation claire en facilite la lecture.
Convertir YAML en JSON
Outil de conversion gratuit de YAML vers JSON dans le navigateur. Convertissez des fichiers instantanément sur votre appareil.
Inspection et métadonnées
Les systèmes d'exploitation et les analyseurs de fichiers identifient les fichiers YAML en inspectant leur séquence initiale d'octets binaires :
Signature d'en-tête au niveau des octets (octets magiques)
Les systèmes d'exploitation et les analyseurs de fichiers identifient les fichiers YAML en inspectant leur séquence initiale d'octets binaires :
SIGNATURE HEXADÉCIMALE (DÉCALAGE 0) :
2D 2D 2D 0AREPRÉSENTATION ASCII : ---\n
Normalisation : Spécification YAML 1.2.2
Spécifications techniques
| Architecture de conteneur | Format de sérialisation de données lisible, fondé sur l’indentation ; surensemble de JSON prenant en charge les ancres et les alias |
| Compression | Flux de texte non compressé |
| Ordre des octets | Flux de texte UTF-8 / Unicode |
| Espaces colorimétriques | Sans objet (sérialisation de données) |
| Canaux et structure | Mappages (dictionnaires clé-valeur), séquences (listes), types scalaires (chaînes, nombres, booléens) et ancres (&ref/*ref) |
| Dimensions maximales | Taille de document illimitée (prend en charge les flux multi-documents séparés par '---') |
| Transparence | Aucune |
| Prise en charge du traitement en continu | Les flux multi-documents permettent un traitement séquentiel document par document |
Matrice de comparaison technique : YAML face aux concurrents
| Attribut technique | YAML (Actuel) | JSON | TOML | XML |
|---|---|---|---|---|
| Style de syntaxe | Hiérarchie définie par l’indentation | Crochets et guillemets stricts | Tables et paires clé=valeur | Balises d'ouverture/fermeture verbeuses |
| Prise en charge des commentaires | Natif (commentaires #) | Aucun commentaire autorisé | Natif (commentaires #) | <!-- commentaires --> |
| Adoption DevOps | La prise en charge varie selon le logiciel. | La prise en charge varie selon le logiciel. | Configuration de paquet Rust/Python | Configuration d’entreprise ancienne |
| Réutilisation des données | Ancres natives (&) et alias (*) | Aucune (duplication manuelle) | Aucune (duplication manuelle) | Entités XML |
Modes de corruption courants et guide de restauration hexadécimale
Erreur d'analyseur : 'mapping values are not allowed here' ou erreur d'indentation.
Cause initiale: Mélange de tabulations et d'espaces ou niveaux d'indentation mal alignés.
Récupération: Convertissez les tabulations en espaces et validez la syntaxe à l'aide du formateur YAML File2File.app.
Analyse de sécurité et vecteurs d'attaque de l'analyseur
Les analyseurs YAML qui prennent en charge les balises de type personnalisées (comme la fonction « yaml.load() » de PyYAML) ont historiquement permis l’exécution de code à distance en instanciant des objets arbitraires.
Vecteurs d’attaque connus
- Exécution de code arbitraire par le biais de balises de désérialisation d'objets non sécurisées (par exemple, '!!python/object/apply').
- Bombes d’expansion (équivalent YAML de l’attaque « Billion Laughs », fondée sur les ancres et les alias).
- Vulnérabilités liées à une confusion de types due à l'analyse implicite des booléens et des horodatages.
Bonnes pratiques de défense: Utilisez toujours des analyseurs YAML sécurisés ('yaml.safe_load()' en Python) et appliquez des limites de profondeur d'expansion d'ancres.
Origines historiques et jalons
Principaux avantages
- YAML est courant dans les outils d’infrastructure, mais la prise en charge et le comportement varient selon l’implémentation.
- Syntaxe propre et lisible : élimine l'encombrement des accolades, des crochets et des guillemets grâce à une indentation intuitive.
- Prend en charge les ancres et les alias (&anchor / *anchor), qui permettent de réutiliser des blocs de configuration sans les dupliquer.
Limites techniques
- Le format est sensible aux espaces : une tabulation ou un espace de trop peut fausser la hiérarchie du document ou provoquer une erreur d’analyse.
- La coercition de type est une source connue de problèmes : des mots non entourés de guillemets, comme « no », « on » ou « yes », ainsi que des codes de pays (par exemple « NO » pour la Norvège), peuvent être convertis silencieusement en booléens.
- Vitesse d'analyse nettement plus lente par rapport aux formats binaires ou au JSON strict.
Faits intéressants
- YAML signifiait à l’origine « Yet Another Markup Language ». Son nom a ensuite été remplacé, sur le ton de l’humour, par l’acronyme récursif « YAML Ain’t Markup Language » pour souligner sa vocation à la sérialisation de données.
- Le « Problème norvégien » est un bogue de programmation célèbre où le code pays 'NO' dans un fichier YAML était analysé comme le booléen 'false'.
- Tout fichier JSON valide est également un fichier YAML valide.
Foire aux questions techniques
À quoi sert YAML ?
YAML est principalement utilisé pour décrire la configuration de services cloud, de clusters Kubernetes, de fichiers Docker Compose, de workflows GitHub Actions et de logiciels.
Puis-je utiliser des tabulations dans les fichiers YAML ?
Non. La spécification YAML officielle interdit strictement l'utilisation de caractères de tabulation pour l'indentation ; vous devez toujours utiliser des espaces (généralement 2 espaces par niveau).
Comment puis-je convertir YAML en JSON ?
Avec File2File.app, convertissez des fichiers YAML en JSON propre et validé en un clic, directement dans votre navigateur et en toute confidentialité.
Conversions associées à YAML
La conversion de fichiers de configuration YAML au format JSON transforme des structures de texte indentées et faciles à lire en objets stricts lisibles par machine pour les applications web.
La conversion de fichiers de configuration JSON au format YAML transforme des structures de données rigides destinées aux programmes en documents clairs et lisibles par l'homme, beaucoup plus faciles à modifier pour les administrateurs système.