Skip to content
BotServBotServ
Mozilla SOPSSOPSSecretsCifradoAgePGP

Mozilla SOPS para Secrets

Cifra Secrets con Mozilla SOPS en YAML, JSON y ENV. PGP, Age, Git e integración en proyectos de IA.

S

schutzgeist

3 min read
Mozilla SOPS para Secrets

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 dotenv para 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

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.

Volver al blog
Share:

Entradas relacionadas