Konfiguracja YAML (.yaml)

YAML Standard

YAML Ain’t Markup Language (YAML) to dominujący format serializacji danych używany w nowoczesnym DevOps, infrastrukturze chmurowej (Kubernetes, Docker Compose) i automatyzacji CI/CD. Stawia na czytelność dzięki przejrzystemu formatowaniu za pomocą wcięć.

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

Prywatnie - 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 konteneraPrzyjazny dla człowieka format serializacji danych oparty na wcięciach, będący nadzbiorem JSON i obsługujący kotwice oraz aliasy
KompresjaNieskompresowany strumień tekstu
Kolejność bajtów (Endianness)Strumień tekstu UTF-8 / Unicode
Przestrzenie kolorówNie dotyczy (serializacja danych)
Kanały i strukturaMapowania (słowniki klucz-wartość), sekwencje (listy), typy skalarne (ciągi znaków, liczby, wartości logiczne) oraz kotwice (&ref/*ref)
Maks. wymiaryNieograniczony rozmiar dokumentu; obsługuje strumienie wielu dokumentów oddzielonych przez „---”
PrzezroczystośćBrak
Streaming i progresywne ładowanieStrumień wielu dokumentów umożliwia sekwencyjne przetwarzanie dokumentów, jeden po drugim

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 -->
Zastosowanie w DevOpsObsługa zależy od programu.Obsługa zależy od programu.Konfiguracja pakietów Rust/PythonStarsze konfiguracje korporacyjne
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.app.

Analiza bezpieczeństwa i wektory ataku na parser

Parsery YAML obsługujące niestandardowe znaczniki typów (takie jak „yaml.load()” w PyYAML) historycznie pozwalały na zdalne wykonanie kodu przez tworzenie dowolnych obiektów.

Znane wektory ataku

  • Wykonanie dowolnego kodu przez niebezpieczne znaczniki deserializacji obiektów (np. „!!python/object/apply”).
  • Ataki polegające na eksplozji encji (odpowiednik „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: Zawsze używaj bezpiecznych parserów YAML (w Pythonie 'yaml.safe_load()') i ograniczaj głębokość rozwijania kotwic.

Pochodzenie historyczne i kamienie milowe

2021Opublikowano poprawkę YAML 1.2.2, dopracowującą zgodność z JSON i formalne definicje gramatyki.
2009Standard YAML 1.2 ustanawia YAML ścisłym nadzbiorem 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

  • YAML jest często używany w narzędziach infrastrukturalnych, ale obsługa i działanie zależą od implementacji.
  • Przejrzysta, czytelna składnia: dzięki intuicyjnym wcięciom eliminuje nadmiar klamer, nawiasów kwadratowych i cudzysłowów.
  • 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.
  • Znany problem z nieoczekiwaną konwersją typów: nieujęte w cudzysłów słowa takie jak „no”, „on” i „yes” lub kody krajów (np. „NO” dla Norwegii) mogą po cichu zamienić się w wartości logiczne.
  • Parsowanie jest znacznie wolniejsze niż w formatach binarnych lub w ściśle zdefiniowanym JSON.

Ciekawe informacje techniczne

  • Nazwa YAML pierwotnie rozwijała się jako „Yet Another Markup Language”, ale później, żartobliwie, zmieniono jej rozwinięcie na rekurencyjny akronim „YAML Ain’t Markup Language”, aby podkreślić, że format służy do serializacji danych.
  • „Problem z Norwegią” to znany błąd programistyczny: kod kraju „NO” w pliku YAML był odczytywany 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 jednym kliknięciem przekonwertować pliki YAML na przejrzysty, zweryfikowany JSON za pomocą File2File.app bezpośrednio w przeglądarce, z zachowaniem pełnej prywatności.