YAML 설정 (.yaml)

YAML 표준

YAML Ain’t Markup Language(YAML)는 현대 DevOps, 클라우드 인프라(Kubernetes, Docker Compose) 및 CI/CD 자동화에서 대표적으로 사용하는 데이터 직렬화 형식입니다. 공백 들여쓰기를 활용해 사람이 읽기 쉽게 만들었습니다.

YAML을(를) JSON(으)로 변환

무료 브라우저 내 YAML에서 JSON로 변환하는 도구입니다. 기기에서 파일을 즉시 변환할 수 있습니다.

검사 및 메타데이터

운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 YAML 파일을 식별합니다:

여기에 파일을 선택하거나 놓으십시오

비공개 - 파일은 기기를 벗어나지 않습니다

또는 붙여넣기 Ctrl+V
네트워크 전송 없음에 대한 개인정보 보호 보장: 외부 서버로 업로드된 데이터는 0바이트입니다. 모든 처리는 브라우저 샌드박스 내에서 로컬로 수행되었습니다.

바이트 단위 헤더 시그니처 (매직 바이트)

운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 YAML 파일을 식별합니다:

16진수 시그니처 (오프셋 0):

2D 2D 2D 0A

ASCII 표현: ---\n

표준화: YAML 1.2.2 Specification

기술 사양

컨테이너 아키텍처들여쓰기 기반의 가독성 높은 데이터 직렬화 형식으로 JSON의 상위 집합이며 앵커와 별칭을 지원
압축압축하지 않은 텍스트 스트림
바이트 엔디안UTF-8/유니코드 텍스트 스트림
색 공간해당 없음(데이터 직렬화)
채널 및 구조매핑(키-값 사전), 시퀀스(목록), 스칼라 유형(문자열, 숫자, 부울 값) 및 앵커(&ref/*ref)
최대 크기문서 크기 제한 없음(---로 구분한 여러 문서의 스트림 지원)
투명도없음
스트리밍 및 프로그레시브여러 문서를 문서별로 순차 처리하는 스트림 지원

기술 비교 매트릭스: YAML 대 경쟁사

기술적 속성YAML (현재)JSONTOMLXML
구문 스타일들여쓰기 공백 계층 구조엄격한 대괄호와 따옴표테이블과 key=value 쌍장황한 여닫기 태그
주석 지원네이티브 (# 주석)주석 허용 안 함네이티브 (# 주석)<!-- 주석 -->
DevOps 채택소프트웨어에 따라 지원 여부가 다릅니다.소프트웨어에 따라 지원 여부가 다릅니다.Rust/Python 패키지 구성엔터프라이즈 레거시 설정
데이터 재사용네이티브 앵커(&) 및 별칭(*)없음 (수동 중복)없음 (수동 중복)XML 엔티티

일반적인 손상 모드 및 헥스 복구 가이드

구문 분석기 오류: 'mapping values are not allowed here' 또는 들여쓰기 오류.

근본 원인: 탭과 공백을 혼용했거나 들여쓰기 수준이 잘못 정렬되었습니다.

복구: 탭을 공백으로 바꾸고 File2File.app YAML Formatter로 구문을 검증하십시오.

보안 분석 및 파서 공격 벡터

PyYAML의 yaml.load()처럼 사용자 정의 형식 태그를 지원하는 YAML 파서는 과거 임의 객체 인스턴스화를 통한 원격 코드 실행을 허용한 적이 있습니다.

알려진 공격 벡터

  • 안전하지 않은 객체 역직렬화 태그(예: !!python/object/apply)를 통한 임의 코드 실행
  • YAML 앵커와 별칭을 이용한 엔티티 확장 폭탄(“Billion Laughs” 공격과 유사)
  • 암시적 부울 및 타임스탬프 파싱으로 인한 형식 혼동 취약점

방어적 모범 사례: 항상 안전한 YAML 파서(Python의 경우 'yaml.safe_load()')를 사용하고 앵커 확장 깊이 제한을 강제 적용하십시오.

역사적 배경 및 주요 이력

2021JSON 호환성 및 공식 문법 정의를 개선한 YAML 1.2.2 개정판이 발행되었습니다.
2009YAML 1.2가 YAML을 JSON의 엄격한 상위 집합으로 표준화하여 유효한 JSON은 모두 유효한 YAML이 되도록 했습니다.
2001Clark Evans, Ingy döt Net 및 Oren Ben-Kiki가 XML보다 사람이 읽기 쉬운 대안으로 YAML을 만들었습니다.

주요 장점

  • YAML은 인프라 도구에서 널리 쓰이지만 지원 범위와 동작은 구현에 따라 다릅니다.
  • 깔끔하고 읽기 쉬운 구문으로 직관적인 들여쓰기를 사용해 중괄호, 대괄호, 따옴표를 줄입니다.
  • 앵커와 별칭(&anchor/*anchor)을 지원해 설정 블록을 중복 없이 재사용할 수 있습니다.

기술적 제한 사항 및 단점

  • 공백에 민감합니다. 탭을 잘못 넣거나 공백 하나가 추가되면 문서 계층 구조가 손상되거나 파싱 오류가 발생할 수 있습니다.
  • 악명 높은 형식 강제 오류: 따옴표 없이 쓴 no, on, yes 또는 국가 코드 NO(노르웨이)가 부울 값으로 조용히 변환될 수 있습니다.
  • 바이너리 형식이나 엄격한 JSON보다 파싱 속도가 현저히 느립니다.

흥미로운 기술적 상식

  • YAML은 처음에 “Yet Another Markup Language”의 약자였으나, 데이터 직렬화를 강조하기 위해 순환 약어인 “YAML Ain’t Markup Language”로 유머러스하게 바뀌었습니다.
  • '노르웨이 문제'는 YAML 파일의 국가 코드 'NO'가 부울 값 'false'로 구문 분석되던 유명한 프로그래밍 버그입니다.
  • 세상의 모든 유효한 JSON 파일은 동시에 100% 유효한 YAML 파일이기도 합니다.

자주 묻는 기술 질문

YAML은 어디에 사용됩니까?

YAML은 클라우드 컴퓨팅, Kubernetes 클러스터 배포, Docker Compose 파일, GitHub Actions 워크플로 및 소프트웨어 설정의 기본 구성 언어입니다.

YAML 파일에서 탭을 사용할 수 있습니까?

아니요. 공식 YAML 사양에서는 들여쓰기에 탭 문자 사용을 엄격히 금지합니다. 항상 공백을 사용해야 합니다(레벨당 일반적으로 공백 2개).

YAML을 JSON으로 어떻게 변환할 수 있습니까?

웹 브라우저에서 File2File.app을 사용해 YAML 파일을 한 번의 클릭으로 깔끔하고 검증된 JSON으로 변환할 수 있으며, 파일은 비공개로 유지됩니다.