- Creado archivo sops.md con documentación detallada sobre SOPS - Creado archivo sops_rules.md con guía detallada sobre el script sops_rules.sh - Explicación de conceptos clave, instalación y uso básico de SOPS - Instrucciones paso a paso para configurar la encriptación PGP - Sección de resolución de problemas y mejores prácticas - Documentación sobre el archivo .sops.yaml y su propósito - Explicación de cómo funciona la integración con otras herramientas 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
6.1 KiB
SOPS: Gestión Segura de Secretos
Introducción
SOPS (Secrets OPerationS) es una herramienta de código abierto diseñada para la gestión segura de secretos. Desarrollada originalmente por Mozilla y posteriormente mantenida por la comunidad, SOPS permite encriptar y desencriptar archivos de configuración que contienen secretos como contraseñas, tokens API, claves de acceso y otros datos sensibles.
En el entorno de MRDevs Tools, SOPS es un componente fundamental para la seguridad general de la plataforma, proporcionando una forma estandarizada y segura de manejar información confidencial.
Características Principales
- Encriptación de archivos de configuración: Permite almacenar secretos de forma segura en repositorios Git.
- Soporte para múltiples formatos: Funciona con YAML, JSON, ENV, INI y BINARY.
- Encriptación selectiva: Puede encriptar solo valores específicos dentro de un archivo, manteniendo las claves y la estructura visibles.
- Múltiples métodos de encriptación: Soporta KMS de AWS, GCP KMS, Azure Key Vault, PGP, age y HashiCorp Vault.
- Integración con Git: Funciona perfectamente con flujos de trabajo de control de versiones.
- Rotación de claves: Permite actualizar las claves de encriptación sin necesidad de desencriptar y reencriptar los secretos.
Instalación
En MRDevs Tools, SOPS se instala automáticamente como parte del proceso de bootstrap:
bin/bootstrap.sh
Para verificar que SOPS está instalado correctamente:
sops --version
Funcionamiento Básico
SOPS utiliza claves GPG para encriptar y desencriptar secretos. La ventaja principal es que permite almacenar archivos de configuración encriptados en sistemas de control de versiones mientras se mantiene la seguridad de los datos sensibles.
Conceptos Clave
-
Encriptación a nivel de valor: A diferencia de otras herramientas que encriptan archivos completos, SOPS encripta solo los valores individuales, manteniendo la estructura del archivo visible.
-
Transparencia y auditabilidad: Cada archivo encriptado contiene metadatos sobre quién lo encriptó, cuándo, y con qué clave.
-
Archivos de configuración: SOPS puede ser configurado utilizando un archivo
.sops.yaml
, que define reglas de creación y reglas de descifrado.
Uso Básico
Encriptar un Archivo
sops --encrypt config.yaml > config.enc.yaml
Desencriptar un Archivo
sops --decrypt config.enc.yaml > config.yaml
Editar un Archivo Encriptado
SOPS incluye un editor integrado que facilita la edición de archivos encriptados:
sops config.enc.yaml
Este comando abrirá el archivo desencriptado en tu editor predeterminado. Al guardar y salir, SOPS reencriptará automáticamente el archivo.
Integración con MRDevs Tools
MRDevs Tools utiliza SOPS para encriptar varios tipos de información sensible:
- Tokens de API: Para servicios como GitHub, GitLab, Forgejo, y APIs de IA.
- Credenciales de acceso: Para servicios internos y externos.
- Configuraciones VPN: Datos de configuración para conexiones VPN seguras.
- Secretos TOTP/HOTP: Extraídos de códigos QR y almacenados de forma segura.
Todos estos secretos se almacenan en archivos YAML encriptados en la estructura de directorios de MRDevs Tools:
$HOME/
└── .developer/ # Tokens para desarrollo
├── github.sops.yaml # Token GitHub encriptado
└── forgejo.sops.yaml # Token Forgejo encriptado
└── .cortana/ # Configuración para IA
└── cortana.sops.yaml # Token Claude Code encriptado
└── .sops.yaml # Configuración SOPS global
Flujo de Trabajo con SOPS en MRDevs Tools
-
Configuración inicial: Durante la instalación de MRDevs Tools, se establece una clave GPG maestra para encriptación mediante el script
bin/sops_rules.sh
. -
Creación de secretos: Cuando se añade un nuevo secreto (por ejemplo, un token de API), se encripta automáticamente con SOPS utilizando la clave GPG configurada.
-
Acceso a secretos: Las herramientas de MRDevs Tools acceden a estos secretos desencriptándolos en memoria cuando es necesario, sin exponerlos en texto plano.
-
Rotación de claves: Si es necesario cambiar la clave GPG, el script
bin/sops_rules.sh
puede ser ejecutado nuevamente para actualizar la configuración.
Seguridad y Mejores Prácticas
Para garantizar la máxima seguridad al utilizar SOPS en MRDevs Tools:
-
Proteger la clave GPG: La seguridad de tus secretos depende de la seguridad de tu clave GPG.
-
Hacer copias de seguridad: Utilizar
bin/profile_backup.sh
para hacer copias de seguridad de tu configuración GPG. -
No compartir archivos encriptados con usuarios que no posean la clave adecuada.
-
Verificar los permisos de archivo para los archivos SOPS encriptados (permisos 600 recomendados).
-
Actualizar regularmente SOPS para obtener mejoras de seguridad.
Resolución de Problemas
Error: "Failed to decrypt"
Este error sucede cuando no tienes la clave privada correcta para desencriptar el archivo. Posibles soluciones:
- Asegurarte de que tienes la clave GPG correcta importada.
- Verificar que el archivo
.sops.yaml
está correctamente configurado. - Comprobar que el archivo no está corrupto.
Error: "No matching encryption keys found"
Este error ocurre cuando SOPS no puede encontrar una clave que coincida con las reglas de creación. Soluciones:
- Ejecutar
bin/sops_rules.sh
para configurar correctamente el archivo.sops.yaml
. - Verificar que tu clave GPG está disponible para el sistema.
Recursos Adicionales
- Documentación oficial de SOPS
- Tutorial en profundidad de Mozilla
- Mejores prácticas para gestión de secretos
Si necesitas ayuda adicional con SOPS, contacta con el equipo de desarrollo mediante mauro@rosero.one
.