¿Qué es Ansible Vault?

Ansible Vault es una característica integrada de Ansible que encripta datos sensibles como contraseñas, claves API y certificados para que se puedan almacenar de forma segura junto con playbooks y roles en control de versiones. Utiliza encriptación simétrica AES-256 con derivación de clave PBKDF2, lo que significa que se usa una única contraseña tanto para encriptación como para desencriptación. El contenido encriptado con Vault se identifica por el encabezado $ANSIBLE_VAULT;1.1;AES256 seguido de texto cifrado codificado en hexadecimal.

Ansible Vault resuelve un desafío fundamental de DevOps: cómo mantener secretos en el mismo repositorio que el código de infraestructura sin exponerlos. En lugar de gestionar almacenes de secretos separados o depender de variables de entorno, los equipos pueden confirmar archivos encriptados directamente en Git y desencriptarlos en tiempo de ejecución durante la ejecución del playbook.

Descripción de la herramienta

Esta herramienta encripta y desencripta contenido de Ansible Vault directamente en el navegador. Ingresa una contraseña de vault y texto plano para producir un blob de vault encriptado completamente compatible, o pega un blob de vault existente para revelar el secreto original. Ningún dato sale del navegador — todas las operaciones criptográficas se ejecutan del lado del cliente.

Ejemplos

Encriptando texto plano:

Entrada (texto plano):

db_password: s3cur3P@ss!

Salida (vault encriptado):

$ANSIBLE_VAULT;1.1;AES256
33383239333036363833303565653032383832663162356533343630623030613133623032636566
6536303436646561356461623866386133623462383832620a646363626137626635353462386430
34333937313366383038346135656563316236313139333933383139376333353266666436316536
6335376265313432610a313537363637383264646261303637646631346137393964386432313633
3666

Desencriptando contenido de vault:

Pega el bloque encriptado anterior con la contraseña correcta para recuperar el valor original db_password: s3cur3P@ss!.

Características

  • Encriptación AES-256 completamente compatible con el formato Ansible Vault 1.1
  • Solo del lado del cliente — ningún dato se envía a ningún servidor
  • Admite tanto encriptación como desencriptación con un único campo de contraseña
  • Conversión instantánea con vista previa en vivo mientras escribes
  • Funciona con secretos multilínea, fragmentos YAML y texto arbitrario

Casos de uso

  • Encriptar rápidamente un nuevo secreto antes de confirmarlo en un repositorio Git que contiene playbooks de Ansible
  • Desencriptar e inspeccionar contenido de vault durante la depuración sin necesidad de tener Ansible instalado localmente
  • Compartir secretos encriptados con compañeros de equipo que pueden desencriptarlos en el navegador usando una contraseña de vault compartida

Cómo funciona

Ansible Vault 1.1 utiliza el siguiente proceso:

  1. Derivación de clave — PBKDF2-HMAC-SHA256 deriva una clave de 80 bytes a partir de la contraseña y un salt aleatorio (10,000 iteraciones). La clave se divide en una clave de encriptación de 32 bytes, una clave HMAC de 32 bytes y un IV de 16 bytes.
  2. Encriptación — El texto plano se encripta con AES-256-CTR usando la clave y el IV derivados.
  3. Autenticación — Se calcula un HMAC-SHA256 sobre el texto cifrado para garantizar la integridad.
  4. Codificación — El salt, el resumen HMAC y el texto cifrado se codifican en hexadecimal y se combinan bajo el encabezado $ANSIBLE_VAULT;1.1;AES256.

La desencriptación invierte el proceso: la contraseña rederiva las mismas claves, verifica el HMAC y desencripta el texto cifrado.

Limitaciones

  • Solo admite el formato Ansible Vault 1.1 con encriptación AES-256
  • No admite etiquetas de ID de vault para configuraciones de múltiples contraseñas
  • Los archivos grandes pueden causar breves retrasos en la interfaz de usuario debido al paso de derivación de clave intensivo en CPU