Mozilla SOPS para Secretos
Qué cubre este artículo sobre Mozilla SOPS
- Qué es SOPS y para qué sirve.
- Cómo usar SOPS con Age o PGP.
- Cómo cifrar archivos YAML, JSON y .env.
- Cómo integrar SOPS en Git y CI/CD.
- Errores comunes y mejores prácticas.
Introducción: Mozilla SOPS para Secretos
Mozilla SOPS es un editor de código abierto para archivos cifrados. Con él puedes cifrar archivos YAML, JSON, .env o BINARY usando claves PGP, Age o Cloud-KMS. SOPS es especialmente popular porque cifra solo los valores y deja las claves en texto plano. Esto mantiene los archivos versionables y legibles.
En proyectos locales de IA, SOPS es práctico para almacenar archivos de configuración con claves de API o contraseñas de base de datos de forma segura en Git y al mismo tiempo compartirlos con el equipo.
Términos clave
- SOPS: Secrets OPerationS, una herramienta de cifrado de Mozilla.
- Age: Alternativa moderna a PGP, más simple y segura.
- PGP: Método de cifrado clásico.
- Master Key: Claves de cifrado centrales.
- Data Key: Clave con la que se cifran los valores reales.
- .sops.yaml: Archivo de configuración para claves y reglas de cifrado.
- KMS: Servicio de gestión de claves en la nube.
Por qué SOPS
- Solo cifra valores: Las claves permanecen legibles, los valores no.
- Múltiples claves: Una clave por archivo o por proyecto.
- Amigable con Git: El historial de versiones sigue siendo útil.
- Múltiples backends: Age, PGP, AWS KMS, GCP KMS, Azure Key Vault.
- Integración con CI/CD: Desencriptación en el despliegue.
- Sin dependencia de proveedor: Estándar abierto, operable localmente.
Instalación
SOPS está disponible para Linux, macOS y Windows:
wget https://github.com/getsops/sops/releases/download/v3.9.0/sops-v3.9.0.linux.amd64 -O sops
chmod +x sops
sudo mv sops /usr/local/bin/
Generar una clave Age
age-keygen -o key.txt
El archivo key.txt contiene la clave pública y privada. La clave privada debe guardarse de forma segura.
Primer archivo cifrado
Crea un archivo YAML:
anthropic_api_key: TU_CLAVE_ANTHROPIC
ollama_host: http://localhost:11434
Cifrarlo:
sops --age $(cat key.txt | grep "public key" | cut -d ' ' -f 3) -e -i secrets.yaml
El resultado es un archivo donde los valores están cifrados y las claves son legibles.
Desencriptar y editar
Ver el contenido:
sops -d secrets.yaml
Editar:
sops secrets.yaml
SOPS abre el editor predeterminado, muestra los valores desencriptados y los cifra nuevamente después de guardarlos.
.sops.yaml para reglas automáticas
creation_rules:
- path_regex: \.env\.dev$
age: AGE_PUBLIC_KEY
- path_regex: \.env\.prod$
age: AGE_PUBLIC_KEY_PROD
De esta forma, los archivos se cifran automáticamente con la clave correcta.
Cifrar archivos .env
sops --input-type dotenv --output-type dotenv -e .env > .env.enc
En tiempo de ejecución:
eval $(sops -d --output-type dotenv .env.enc)
Integración en CI/CD
En el flujo de trabajo de GitHub Actions:
- name: Decrypt secrets
env:
SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }}
run: |
sops -d secrets.yaml > secrets_decrypted.yaml
La clave privada Age se guarda como un secreto del repositorio.
SOPS vs. dotenvx y Secret-Manager
- SOPS: Basado en archivos, amigable con Git, local.
- dotenvx: Enfoque en archivos .env, cifrado simple.
- HashiCorp Vault: Gestión centralizada, secretos dinámicos.
- Infisical: Gestor de secretos para equipos con interfaz web.
SOPS es ideal para archivos de configuración que deben almacenarse en Git.
Errores comunes
- Perder la clave privada: Los valores no se pueden desencriptar sin la clave.
- Especificar el formato incorrecto: Usa
--input-type dotenvpara archivos .env. - Hacer commit de la clave privada: Solo las claves públicas en
.sops.yaml, nunca las privadas. - Usar la clave incorrecta para el entorno: Verifica las reglas en
.sops.yaml. - Olvidar actualizar: Guarda y haz commit siempre después de editar.
Enlaces e información adicional
FAQ: Mozilla SOPS
¿Es SOPS gratuito? Sí, es código abierto.
¿Debo usar PGP o Age? Para nuevos proyectos, Age es más simple y moderno.
¿Puedo usar SOPS con Docker? Sí, el binario de SOPS se puede integrar en imágenes de contenedor.
¿Quién puede desencriptar los archivos? Cualquiera que posea una clave privada registrada.
¿Son seguros los archivos SOPS en repositorios públicos? Sí, siempre que solo contengan las claves públicas y los valores cifrados.
Fuentes y lectura adicional
- SOPS GitHub: https://github.com/getsops/sops
- SOPS Docs: https://getsops.io/docs/
- Age: https://age-encryption.org/
Resumen: Mozilla SOPS para Secretos
Mozilla SOPS es una herramienta poderosa para almacenar archivos de configuración con valores cifrados en Git. Es especialmente adecuado para archivos .env, YAML y JSON en proyectos locales de IA. Age es el método de clave recomendado para nuevos proyectos. Lo importante es el manejo seguro de la clave privada, configuraciones de formato correctas y reglas .sops.yaml claras. Dominar SOPS te proporciona una alternativa flexible y transparente a los gestores de secretos puros.


