Initial commit: SaveUrl project migration from Drive
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
# Seguridad y manejo de secretos
|
||||
|
||||
## No versionar secretos
|
||||
|
||||
El repositorio incluye `.gitignore` para ignorar:
|
||||
|
||||
- `.env`
|
||||
- `env/` (virtualenv)
|
||||
|
||||
Recomendación:
|
||||
|
||||
- Mantener **cualquier credencial** fuera del control de versiones.
|
||||
|
||||
## Dónde viven los secretos en este proyecto
|
||||
|
||||
El código en `SaveUrl.py` toma secretos principalmente desde:
|
||||
|
||||
- **Airflow Variables**:
|
||||
- SQL: `DB_MSSQ_USER`, `DB_MSSQ_PASSWORD`, `DB_MSSQ_SERVER`
|
||||
- FTP: `FTP_000oqta_USER`, `FTP_000oqta_PASSWORD`, `FTP_000oqta_SERVER`
|
||||
- Webhook: `WEBHOOK_URL_NOTIFICATION`
|
||||
- Kafka básico: `BOOTSTRAP_SERVERS_DOCKER`, `KAFKA_USE_SSL`
|
||||
- **Variables de entorno del proceso** (solo cuando `KAFKA_USE_SSL=True`):
|
||||
- `SECURITY_PROTOCOL`, `SASL_MECHANISM`
|
||||
- `SASL_PLAIN_USERNAME`, `SASL_PLAIN_PASSWORD`
|
||||
- `SSL_CAFILE`, `SSL_CHECK_HOSTNAME`
|
||||
|
||||
Implicación:
|
||||
|
||||
- Para Kafka con SSL/SASL, no basta con Airflow Variables: hay que configurar también **env vars** en el worker/scheduler (o usar un backend de secrets que las exponga como env vars).
|
||||
|
||||
## Recomendaciones de seguridad
|
||||
|
||||
- **Airflow Secrets Backend**: usar un backend (Vault/AWS Secrets Manager/Azure Key Vault/GCP Secret Manager) en vez de Variables planas.
|
||||
- **Rotación**:
|
||||
- FTP y SQL: rotación periódica y seguimiento de expiración.
|
||||
- Kafka: rotación de credenciales SASL y CA si cambia.
|
||||
- **Principio de mínimo privilegio**:
|
||||
- SQL user: permisos mínimos necesarios sobre `URL_FTP` (SELECT/INSERT).
|
||||
- FTP user: permisos mínimos para listar/leer rutas necesarias (NLST).
|
||||
- **TLS**:
|
||||
- si se habilita SSL en Kafka, asegurar que `SSL_CAFILE` apunte a un CA dentro del contenedor.
|
||||
|
||||
## Señales de filtración / exposición
|
||||
|
||||
Revisar que no exista:
|
||||
|
||||
- `.env` real en el repo
|
||||
- credenciales hardcodeadas en archivos `.py`
|
||||
- rutas de certificados locales de un desarrollador (ej. paths absolutos de Windows) en configuración de producción
|
||||
|
||||
## Checklist antes de producción
|
||||
|
||||
- Variables/secretos definidos en sistema seguro
|
||||
- `.env` excluido y no presente en artefactos de build
|
||||
- permisos SQL y FTP mínimos
|
||||
- endpoints (Kafka/webhook) accesibles solo desde redes necesarias
|
||||
|
||||
Reference in New Issue
Block a user