Konfiguracja YAML (.yaml)

YAML Standardowy

YAML Ain't Markup Language (YAML) to dominujący format serializacji danych dla nowoczesnych rozwiązań DevOps, infrastruktury chmurowej (Kubernetes, Docker Compose) oraz automatyzacji CI/CD, kładący nacisk na czytelność dla człowieka dzięki przejrzystym wcięciom spacjami.

Konwertuj YAML na JSON

Darmowy konwerter z YAML na JSON w przeglądarce. Konwertuj pliki natychmiast na swoim urządzeniu.

Inspekcja i metadane

Systemy operacyjne i analizatory plików identyfikują pliki YAML, sprawdzając początkową sekwencję bajtów binarnych:

Wybierz lub upuść pliki tutaj

Konwersja w 100% prywatna w przeglądarce - pliki nigdy nie opuszczają Twojego urządzenia

lub wklej Ctrl+V
Gwarancja prywatności bez przesyłania danych do sieci: 0 bajtów przesłanych na zewnętrzne serwery. Całe przetwarzanie odbyło się lokalnie w piaskownicy przeglądarki.

Podpis nagłówka na poziomie bajtów (Magic Bytes)

Systemy operacyjne i analizatory plików identyfikują pliki YAML, sprawdzając początkową sekwencję bajtów binarnych:

PODPIS HEX (OFFSET 0):

2D 2D 2D 0A

REPREZENTACJA ASCII: ---\n

Normalizacja: YAML 1.2.2 Specification

Specyfikacja techniczna

Architektura konteneraIndentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases
KompresjaUncompressed text stream
Kolejność bajtów (Endianness)UTF-8 / Unicode text stream
Przestrzenie kolorówN/A (Data Serialization)
Kanały i strukturaMappings (key-value dictionaries), sequences (lists), scalar types (strings, numbers, booleans), and anchors (&ref/*ref)
Maks. wymiaryUnbounded document size (supports multi-document streams separated by '---')
PrzezroczystośćNone
Streaming i progresywne ładowanieMulti-document streams allow sequential document-by-document processing

Techniczna macierz porównawcza: YAML a konkurencja

Atrybut technicznyYAML (Bieżący)JSONTOMLXML
Styl składniHierarchia wcięć za pomocą białych znakówŚcisłe nawiasy i cudzysłowyTabele i pary klucz=wartośćRozwlekłe znaczniki otwierające/zamykające
Obsługa komentarzyNatywna (komentarze #)Brak dozwolonych komentarzyNatywna (komentarze #)<!-- komentarze -->
Adopcja w DevOpsUniwersalny standard (Kubernetes, CI/CD)Uniwersalny standard APIKonfiguracja pakietów Rust/PythonKorporacyjna konfiguracja dziedziczona
Ponowne użycie danychNatywne kotwice (&) i aliasy (*)Brak (ręczne powielanie)Brak (ręczne powielanie)Encje XML

Typowe tryby uszkodzeń i przewodnik odzyskiwania szesnastkowego

Błąd parsera: 'mapping values are not allowed here' lub błąd wcięć.

Główna przyczyna: Mieszanie tabulatorów ze spacjami lub niedopasowane poziomy wcięć.

Odzyskiwanie: Zamień tabulatory na spacje i zweryfikuj składnię za pomocą formatera YAML w File2File.

Analiza bezpieczeństwa i wektory ataku na parser

Analizatory YAML obsługujące niestandardowe znaczniki typów (takie jak 'yaml.load()' w PyYAML) historycznie pozwalały na zdalne wykonanie kodu poprzez dowolne instancjonowanie obiektów.

Znane wektory ataku

  • Zdalne wykonanie kodu za pomocą niezabezpieczonych znaczników deserializacji obiektów (np. '!!python/object/apply').
  • Bomby ekspansji encji (odpowiednik ataku 'billion laughs' z użyciem kotwic i aliasów YAML).
  • Podatności na pomylenie typów (type confusion) wynikające z niejawnego parsowania wartości logicznych i znaczników czasu.

Najlepsze praktyki obronne:

Pochodzenie historyczne i kamienie milowe

2021Publikacja rewizji YAML 1.2.2, dopracowująca kompatybilność z formatem JSON i formalne definicje gramatyki.
2009Standard YAML 1.2 ustala YAML jako ścisłe nadzbiór JSON, co oznacza, że każdy poprawny plik JSON jest poprawnym plikiem YAML.
2001Clark Evans, Ingy döt Net oraz Oren Ben-Kiki tworzą YAML jako przyjazną dla człowieka alternatywę dla języka XML.

Główne zalety

  • Bezdyskusyjny standard dla nowoczesnej infrastruktury chmurowej: powszechnie stosowany w manifestach Kubernetes, Docker Compose oraz GitHub Actions.
  • Czysta, czytelna składnia: eliminuje bałagan związany z klamrami, nawiasami kwadratowymi i cudzysłowami dzięki intuicyjnym wcięciom.
  • Obsługuje referencje i kotwice (&anchor / *anchor) w celu ponownego używania powtarzalnych bloków konfiguracyjnych bez ich powielania.

Ograniczenia techniczne i wady

  • Wrażliwość na białe znaki: przypadkowy tabulator lub pojedyncza dodatkowa spacja może uszkodzić hierarchię dokumentu lub spowodować błędy parsowania.
  • Cieszące się złą sławą błędy dopasowywania typów: ujęte w cudzysłów słowa takie jak 'no', 'on', 'yes' lub kody krajów ('NO' dla Norwegii) mogą po cichu zamienić się w wartości logiczne (boolean).
  • Znacznie mniejsza prędkość parsowania w porównaniu do formatów binarnych lub ścisłego JSON.

Ciekawe informacje techniczne

  • YAML pierwotnie rozwijało się jako skrót od 'Yet Another Markup Language', ale zostało żartobliwie przemianowane na rekurencyjny akronim 'YAML Ain't Markup Language', aby podkreślić serializację danych.
  • „Problem z Norwegią" to słynny błąd programistyczny, w którym kod kraju 'NO' w pliku YAML został zinterpretowany jako wartość logiczna 'false'.
  • Każdy poprawny plik JSON na świecie jest jednocześnie w 100% poprawnym plikiem YAML.

Często zadawane pytania techniczne

Do czego służy YAML?

YAML to główny język konfiguracyjny dla chmury obliczeniowej, wdrażania klastrów Kubernetes, plików Docker Compose, przepływów pracy GitHub Actions oraz ustawień oprogramowania.

Czy mogę używać znaków tabulacji w plikach YAML?

Nie. Oficjalna specyfikacja YAML surowo zabrania używania znaków tabulacji do wcięć; zawsze należy używać spacji (zazwyczaj 2 spacji na poziom).

Jak mogę przekonwertować YAML na JSON?

Możesz przekonwertować pliki YAML na czysty, zweryfikowany format JSON jednym kliknięciem za pomocą File2File.app bezpośrednio w przeglądarce internetowej z zachowaniem pełnej prywatności.