Configuração YAML (.yaml)

Especificação Padrão

YAML Ain't Markup Language (YAML) é o formato de serialização de dados dominante para DevOps modernos, infraestrutura em nuvem (Kubernetes, Docker Compose) e automação de CI/CD, enfatizando a facilidade de leitura por meio de indentação limpa de espaços em branco.

Converter YAML para JSON

Conversor gratuito de YAML para JSON no navegador. Converta arquivos instantaneamente no seu dispositivo.

Inspeção e metadados

Sistemas operacionais e analisadores de arquivos identificam arquivos YAML pela sequência inicial de bytes:

Selecione ou solte os arquivos aqui

Privado - os arquivos nunca saem do seu dispositivo

ou colar Ctrl+V
Garantia de privacidade sem transmissão pela rede 0 bytes enviados a servidores externos. Todo o processamento ocorreu localmente no ambiente isolado do navegador.

Assinatura do arquivo em bytes (magic bytes)

Sistemas operacionais e analisadores de arquivos identificam arquivos YAML pela sequência inicial de bytes:

ASSINATURA HEXADECIMAL (DESLOCAMENTO 0):

2D 2D 2D 0A

REPRESENTAÇÃO ASCII: ---\n

Padronização: Especificação YAML 1.2.2

Especificações técnicas

Estrutura do contêinerFormato de serialização de dados baseado em indentação, fácil de ler e com suporte a âncoras e aliases; é um superconjunto de JSON
CompressãoFluxo de texto não compactado
Ordem dos bytes (endianness)Fluxo de texto UTF-8 / Unicode
Espaços de corNão se aplica (serialização de dados)
Canais e EstruturaMapeamentos (dicionários chave-valor), sequências (listas), tipos escalares (strings, números, booleanos) e âncoras (&ref/*ref)
Dimensões MáximasTamanho de documento ilimitado (suporta fluxos de vários documentos separados por '---')
TransparênciaNenhum
Streaming e ProgressivoFluxos com vários documentos permitem processá-los sequencialmente

Matriz de comparação técnica: YAML e formatos concorrentes

Atributo técnicoYAML (Atual)JSONTOMLXML
Estilo de SintaxeHierarquia de espaços em branco de indentaçãoColchetes e aspas estritosTabelas e pares chave=valorTags de abertura/fechamento prolixas
Suporte a ComentáriosNativo (comentários com #)Nenhum comentário permitidoNativo (comentários com #)<!-- comentários -->
Adoção em DevOpsO suporte varia conforme o programa.O suporte varia conforme o programa.Configuração de pacotes Rust/PythonConfiguração herdada corporativa
Reutilização de DadosÂncoras nativas (&) e Apelidos (*)Nenhum (duplicação manual)Nenhum (duplicação manual)Entidades XML

Modos comuns de corrupção e guia de recuperação com editor hexadecimal

Erro do analisador: 'mapping values are not allowed here' ou erro de indentação.

Causa principal: Mistura de tabulações com espaços ou níveis de indentação desalinhados.

Recuperação: Converta tabulações em espaços e valide a sintaxe usando o Formatador YAML do File2File.app.

Análise de segurança e vetores de ataque a analisadores

Analisadores YAML que suportam tags de tipo personalizadas (como 'yaml.load()' do PyYAML) historicamente permitiam a execução remota de código por meio de instanciação arbitrária de objetos.

Vetores de ataque conhecidos

  • Execução arbitrária de código por meio de tags de desserialização de objetos inseguras (por exemplo, '!!python/object/apply').
  • Bombas de expansão de entidades (equivalente ao ataque “bilhão de risadas” usando âncoras e apelidos YAML).
  • Vulnerabilidades de confusão de tipo devido à análise implícita de booleanos e carimbos de data/hora.

Melhores práticas defensivas: Sempre use analisadores YAML seguros ('yaml.safe_load()' em Python) e imponha limites de profundidade de expansão de âncoras.

Origens históricas e marcos

2021Publicada a revisão YAML 1.2.2, refinando a compatibilidade com JSON e definições formais de gramática.
2009YAML 1.2 padroniza o YAML como um superconjunto estrito de JSON, o que significa que todo JSON válido é YAML válido.
2001Clark Evans, Ingy döt Net e Oren Ben-Kiki criam o YAML como uma alternativa amigável aos humanos para o XML.

Principais vantagens

  • YAML é comum em ferramentas de infraestrutura, mas o suporte e o comportamento variam conforme a implementação.
  • Sintaxe limpa e legível: elimina a desordem de chaves, colchetes e aspas por meio de indentação intuitiva.
  • Suporta referências e âncoras (&anchor / *anchor) para reutilizar blocos de configuração repetidos sem duplicação.

Limitações técnicas e desvantagens

  • Sensível a espaços em branco: uma tabulação acidental ou um único espaço extra pode corromper a hierarquia do documento ou causar erros de análise.
  • Notórios bugs de coerção de tipo: palavras sem aspas como 'no', 'on', 'yes' ou códigos de país ('NO' para a Noruega) podem se tornar booleanos sem aviso.
  • Velocidade de análise significativamente mais lenta em comparação com formatos binários ou JSON estrito.

Curiosidades técnicas

  • YAML originalmente significava 'Yet Another Markup Language', mas foi renomeado de forma humorística para o acrônimo recursivo 'YAML Ain't Markup Language' para enfatizar a serialização de dados.
  • O 'Problema da Noruega' é um famoso bug de programação em que o código do país 'NO' em um arquivo YAML foi analisado como o booleano 'false'.
  • Todo arquivo JSON válido no mundo é também simultaneamente um arquivo YAML 100% válido.

Perguntas técnicas frequentes

Para que o YAML é usado?

O YAML é a principal linguagem de configuração para computação em nuvem, implantação de clusters Kubernetes, arquivos Docker Compose, fluxos de trabalho do GitHub Actions e configurações de software.

Posso usar tabulações em arquivos YAML?

Não. A especificação oficial do YAML proíbe estritamente o uso de caracteres de tabulação para indentação; você deve sempre usar espaços (geralmente 2 espaços por nível).

Como posso converter YAML para JSON?

Você pode converter arquivos YAML em JSON limpo e validado com um clique usando o File2File.app diretamente no seu navegador com total privacidade.