[DOCS] Mejorada la documentación de SOPS con información del repositorio oficial

- Expandida la documentación de SOPS con ejemplos más completos de comandos
- Añadidos detalles sobre opciones avanzadas de configuración en .sops.yaml
- Documentadas las configuraciones con múltiples claves PGP
- Mejorada la sección de mejores prácticas de seguridad
- Incluida información sobre rotación de claves
- Añadidos ejemplos de uso con variables de entorno
- Ampliadas las recomendaciones para equipos y proyectos compartidos

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Mauro Rosero P. 2025-04-06 11:13:55 -05:00
parent ff02bb9ad1
commit 9e638c29be
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26
2 changed files with 117 additions and 11 deletions

View file

@ -6,7 +6,7 @@
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. 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.
![SOPS en funcionamiento](img/sops-overview.png) ![SOPS en funcionamiento](img/sops-overview.gif "SOPS en funcionamiento")
## Características Principales ## Características Principales
@ -48,13 +48,28 @@ SOPS utiliza claves GPG para encriptar y desencriptar secretos. La ventaja princ
### Encriptar un Archivo ### Encriptar un Archivo
```bash ```bash
# Usando archivo .sops.yaml para la configuración
sops --encrypt config.yaml > config.enc.yaml
# Especificando la clave PGP directamente
sops --encrypt --pgp=FBC7B9E2A4F9289AC0C1D4843D16CEE4A27381B4 config.yaml > config.enc.yaml
# Usando variable de entorno para especificar claves
export SOPS_PGP_FP="85D77543B3D624B63CEA9E6DBC17301B491B3F21,FBC7B9E2A4F9289AC0C1D4843D16CEE4A27381B4"
sops --encrypt config.yaml > config.enc.yaml sops --encrypt config.yaml > config.enc.yaml
``` ```
### Desencriptar un Archivo ### Desencriptar un Archivo
```bash ```bash
# Desencriptar a stdout
sops --decrypt config.enc.yaml
# Desencriptar a un archivo
sops --decrypt config.enc.yaml > config.yaml sops --decrypt config.enc.yaml > config.yaml
# Desencriptar sección específica de un archivo YAML
sops --decrypt --extract '["database"]["password"]' config.enc.yaml
``` ```
### Editar un Archivo Encriptado ### Editar un Archivo Encriptado
@ -62,10 +77,26 @@ sops --decrypt config.enc.yaml > config.yaml
SOPS incluye un editor integrado que facilita la edición de archivos encriptados: SOPS incluye un editor integrado que facilita la edición de archivos encriptados:
```bash ```bash
# Editar utilizando el editor predeterminado
sops config.enc.yaml sops config.enc.yaml
# Especificar editor usando variable de entorno
EDITOR=nano sops config.enc.yaml
``` ```
Este comando abrirá el archivo desencriptado en tu editor predeterminado. Al guardar y salir, SOPS reencriptará automáticamente el archivo. Este comando abrirá el archivo desencriptado en tu editor. Al guardar y salir, SOPS reencriptará automáticamente el archivo.
### Rotar Claves
Si necesitas actualizar o añadir claves a un archivo ya encriptado:
```bash
# Actualizar usando el nuevo .sops.yaml
sops updatekeys config.enc.yaml
# Especificar nuevas claves explícitamente
sops updatekeys --pgp=NUEVA_FINGERPRINT config.enc.yaml
```
## Integración con MRDevs Tools ## Integración con MRDevs Tools
@ -103,14 +134,28 @@ $HOME/
Para garantizar la máxima seguridad al utilizar SOPS en MRDevs Tools: Para garantizar la máxima seguridad al utilizar SOPS en MRDevs Tools:
1. **Proteger la clave GPG**: La seguridad de tus secretos depende de la seguridad de tu clave GPG. 1. **Proteger la clave GPG**: La seguridad de tus secretos depende de la seguridad de tu clave GPG.
* Utiliza contraseñas fuertes para proteger tu clave privada.
* Considera utilizar una tarjeta YubiKey u otro token de hardware para almacenar claves GPG.
2. **Hacer copias de seguridad**: Utilizar `bin/profile_backup.sh` para hacer copias de seguridad de tu configuración GPG. 2. **Hacer copias de seguridad**: Utilizar `bin/profile_backup.sh` para hacer copias de seguridad de tu configuración GPG.
* Almacena las copias de seguridad en un lugar seguro, fuera de línea si es posible.
* Documenta el procedimiento de recuperación de claves.
3. **No compartir archivos encriptados** con usuarios que no posean la clave adecuada. 3. **Usar múltiples claves cuando sea apropiado**:
* Para equipos, configura SOPS con múltiples claves GPG para que varios miembros puedan acceder a los secretos.
* Considera utilizar subclaves GPG específicas para cada propósito (encriptación vs. firma).
4. **Verificar los permisos de archivo** para los archivos SOPS encriptados (permisos 600 recomendados). 4. **Establecer políticas de permisos estrictas**:
* Verificar los permisos de archivo para los archivos SOPS encriptados (permisos 600 recomendados).
* Limitar el acceso al archivo `.sops.yaml` solo a usuarios autorizados.
5. **Actualizar regularmente** SOPS para obtener mejoras de seguridad. 5. **Implementar rotación de claves periódica**:
* Actualiza tus claves GPG periódicamente y utiliza `sops updatekeys` para actualizar los archivos encriptados.
* Establece un procedimiento para la revocación de claves en caso de compromiso.
6. **Mantener el software actualizado**:
* Actualizar regularmente SOPS para obtener mejoras de seguridad.
* Mantener también actualizado GPG y las bibliotecas relacionadas.
## Resolución de Problemas ## Resolución de Problemas

View file

@ -62,7 +62,7 @@ El script sigue estos pasos:
## Estructura del Archivo .sops.yaml ## Estructura del Archivo .sops.yaml
El archivo generado tiene la siguiente estructura: El archivo generado por `sops_rules.sh` tiene la siguiente estructura básica:
```yaml ```yaml
creation_rules: creation_rules:
@ -77,6 +77,47 @@ Las "creation_rules" definidas en el archivo `.sops.yaml` determinan cómo SOPS
Con esta configuración, cualquier comando SOPS ejecutado dentro del directorio de MRDevs Tools utilizará automáticamente esta clave GPG para la encriptación sin necesidad de especificarla cada vez. Con esta configuración, cualquier comando SOPS ejecutado dentro del directorio de MRDevs Tools utilizará automáticamente esta clave GPG para la encriptación sin necesidad de especificarla cada vez.
### Configuraciones Avanzadas
El archivo `.sops.yaml` puede ser mucho más sofisticado, permitiendo configuraciones avanzadas:
#### Múltiples Claves PGP
Si deseas que varios miembros del equipo puedan desencriptar los secretos, puedes especificar múltiples fingerprints GPG:
```yaml
creation_rules:
- pgp: >-
85D77543B3D624B63CEA9E6DBC17301B491B3F21,
FBC7B9E2A4F9289AC0C1D4843D16CEE4A27381B4
```
#### Reglas Basadas en Patrones de Archivos
Puedes definir diferentes reglas de encriptación según el patrón de nombre de archivo:
```yaml
creation_rules:
- path_regex: \.dev\.yaml$
pgp: 'DEV_ENVIRONMENT_GPG_FINGERPRINT'
- path_regex: \.prod\.yaml$
pgp: 'PRODUCTION_ENVIRONMENT_GPG_FINGERPRINT'
```
Con esta configuración, los archivos que terminen en `.dev.yaml` usarán una clave, mientras que los que terminen en `.prod.yaml` usarán otra.
#### Soporte para Otros Métodos de Encriptación
Aunque en MRDevs Tools utilizamos principalmente PGP, SOPS soporta otros métodos de encriptación como AWS KMS, GCP KMS, Azure Key Vault, age, y HashiCorp Vault:
```yaml
creation_rules:
- path_regex: \.dev\.yaml$
kms: 'arn:aws:kms:us-west-2:927034868273:key/fe86dd69-4132-404c-ab86-4269956b4500'
- path_regex: \.prod\.yaml$
gcp_kms: 'projects/my-project/locations/global/keyRings/my-keyring/cryptoKeys/my-key'
```
## Casos de Uso Comunes ## Casos de Uso Comunes
### 1. Encriptar un Nuevo Archivo de Configuración ### 1. Encriptar un Nuevo Archivo de Configuración
@ -172,15 +213,35 @@ Si experimentas problemas al usar SOPS después de configurarlo:
## Mejores Prácticas ## Mejores Prácticas
1. **Hacer copia de seguridad de tus claves GPG**: Utiliza `bin/profile_backup.sh` para respaldar toda tu configuración GPG. ### Gestión de Claves
2. **Usar una contraseña robusta** para proteger tu clave GPG. 1. **Hacer copia de seguridad de tus claves GPG**:
* Utiliza `bin/profile_backup.sh` para respaldar toda tu configuración GPG.
* Considera exportar las claves manualmente con `gpg --export-secret-keys --armor > my-private-key.asc`
3. **Limitar el acceso** al archivo `.sops.yaml` solo a usuarios autorizados. 2. **Proteger tus claves adecuadamente**:
* Usar una contraseña robusta para proteger tu clave GPG.
* Considerar el uso de tokens físicos como YubiKey para mayor seguridad.
* Evitar compartir o exponer la clave privada.
4. **Documentar la clave utilizada** en un lugar seguro para referencia futura. 3. **Almacenar de forma segura los fingerprints**:
* Documentar el fingerprint completo (40 caracteres) en un lugar seguro para referencia futura.
* Mantener un registro de qué clave se usa para cada entorno o proyecto.
5. **Establecer un proceso de rotación de claves** periódico según las políticas de seguridad de tu organización. ### Configuración y Mantenimiento
1. **Estructura de permisos óptima**:
* Limitar el acceso al archivo `.sops.yaml` solo a usuarios autorizados (permisos 600 recomendados).
* Asegurar que el directorio que contiene los secretos encriptados tenga permisos adecuados.
2. **Rotación de claves programada**:
* Establecer un proceso de rotación de claves periódico según las políticas de seguridad de tu organización.
* Documentar el procedimiento completo para actualizar claves en archivos ya encriptados.
3. **Configuración para equipos**:
* Para entornos con múltiples desarrolladores, configurar reglas con múltiples claves PGP.
* Considerar el uso de estructuras de claves jerárquicas para equipos grandes.
* Implementar políticas claras sobre quién puede añadir/eliminar claves del archivo de configuración.
## Recursos Adicionales ## Recursos Adicionales