Konfiguracja YAML (.yaml)
YAML StandardYAML 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:
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 0AREPREZENTACJA ASCII: ---\n
Normalizacja: YAML 1.2.2 Specification
Specyfikacja techniczna
| Architektura kontenera | Przyjazny dla człowieka format serializacji danych oparty na wcięciach, będący nadzbiorem JSON i obsługujący kotwice oraz aliasy |
| Kompresja | Nieskompresowany strumień tekstu |
| Kolejność bajtów (Endianness) | Strumień tekstu UTF-8 / Unicode |
| Przestrzenie kolorów | Nie dotyczy (serializacja danych) |
| Kanały i struktura | Mapowania (słowniki klucz-wartość), sekwencje (listy), typy skalarne (ciągi znaków, liczby, wartości logiczne) oraz kotwice (&ref/*ref) |
| Maks. wymiary | Nieograniczony rozmiar dokumentu; obsługuje strumienie wielu dokumentów oddzielonych przez „---” |
| Przezroczystość | Brak |
| Streaming i progresywne ładowanie | Strumień wielu dokumentów umożliwia sekwencyjne przetwarzanie dokumentów, jeden po drugim |
Techniczna macierz porównawcza: YAML a konkurencja
| Atrybut techniczny | YAML (Bieżący) | JSON | TOML | XML |
|---|---|---|---|---|
| Styl składni | Hierarchia wcięć za pomocą białych znaków | Ścisłe nawiasy i cudzysłowy | Tabele i pary klucz=wartość | Rozwlekłe znaczniki otwierające/zamykające |
| Obsługa komentarzy | Natywna (komentarze #) | Brak dozwolonych komentarzy | Natywna (komentarze #) | <!-- komentarze --> |
| Zastosowanie w DevOps | Obsługa zależy od programu. | Obsługa zależy od programu. | Konfiguracja pakietów Rust/Python | Starsze konfiguracje korporacyjne |
| Ponowne użycie danych | Natywne 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
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.
Powiązane pary konwersji YAML
Konwersja plików konfiguracyjnych YAML na format JSON przekształca czytelne dla człowieka struktury tekstowe z wcięciami w obiekty o ściśle określonej strukturze, które aplikacje internetowe mogą przetwarzać.
Konwersja plików konfiguracyjnych JSON na format YAML przekształca sztywne struktury danych programistycznych w czytelne dokumenty, które administratorom systemów znacznie łatwiej edytować.