2.1 KiB
2.1 KiB
Seguridad y manejo de secretos
No versionar secretos
El repositorio incluye .gitignore para ignorar:
.envenv/(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
- SQL:
- Variables de entorno del proceso (solo cuando
KAFKA_USE_SSL=True):SECURITY_PROTOCOL,SASL_MECHANISMSASL_PLAIN_USERNAME,SASL_PLAIN_PASSWORDSSL_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).
- SQL user: permisos mínimos necesarios sobre
- TLS:
- si se habilita SSL en Kafka, asegurar que
SSL_CAFILEapunte a un CA dentro del contenedor.
- si se habilita SSL en Kafka, asegurar que
Señales de filtración / exposición
Revisar que no exista:
.envreal 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
.envexcluido y no presente en artefactos de build- permisos SQL y FTP mínimos
- endpoints (Kafka/webhook) accesibles solo desde redes necesarias