django - Flor de apio Seguridad en producción
nginx celery (4)
¿Cómo afectarían HTTP e HTTPS a la seguridad de Apio? ¿A qué inicios de sesión de usuario te refieres?
Flor monitorea una cola de apio uniéndose a los trabajadores. Al configurar Flower, debe proporcionar la cadena de conexión [broker]: // [user_name]: [password] @ [database_address]: [port] / [instance]. El nombre de usuario y la contraseña son la credencial para iniciar sesión en la base de datos de su elección.
Si te estás refiriendo a este inicio de sesión, ¿no bastaría simplemente con deshabilitar / eliminar sus inicios de sesión?
Estoy buscando utilizar Flower ( https://github.com/mher/flower ) para supervisar mis tareas de Apio en lugar de django-admin como se recomienda en sus documentos ( http://docs.celeryproject.org/en/latest/userguide/monitoring.html#flower-real-time-celery-web-monitor ). Sin embargo, como soy nuevo en esto, estoy un poco confundido sobre la forma en que la página de Flower se basa solo en HTTP y no en HTTPS. ¿Cómo puedo habilitar la seguridad para mis tareas de Apio de modo que cualquier usuario antiguo no pueda simplemente visitar el sitio web sin inicio de sesión http://flowerserver.com:5555 y cambiar algo?
He considerado la documentación de Celery sobre esto, pero desafortunadamente no se menciona cómo asegurar la API o la aplicación web de Flower. Todo lo que dice: [Need more text here]
¡Gracias!
Actualización: Mi pregunta es en parte un duplicado de aquí: ¿Cómo agrego la autenticación y el punto final a Django Apio Flower Monitoring?
Sin embargo, clarifico su pregunta aquí preguntando cómo ejecutarla usando un entorno que incluye nginx, gunicornio y apio, todo en la misma máquina remota. También me pregunto cómo configurar la url accesible externa de Flower, pero también preferiría algo como https en lugar de http si es posible (o alguna forma de asegurar la webui y acceder a ella de forma remota). También necesito saber si dejar funcionar Flower es un riesgo de seguridad considerable para cualquiera que pueda obtener acceso a la API interna de Flower y cuál podría ser la mejor manera de asegurar esto, o si simplemente debería deshabilitarse completamente y usarse solo en un as- necesita fundamento
Puede ejecutar flower con --auth flag, que se autenticará con un correo electrónico particular de Google:
celery flower [email protected]
Editar 1 :
La nueva versión de Flower requiere un par de indicadores más y un Cliente OAuth2 registrado con Google Developer Console :
celery flower [email protected] --oauth2_key="client_id" --oauth2_secret="client_secret" --oauth2_redirect_uri="http://example.com:5555/login"
oauth2_redirect_uri
tiene que ser la url de inicio de sesión de flor real, y también debe agregarse a las URL de redirección autorizada en la Consola de desarrollo de Google.
Lamentablemente, esta característica no funciona correctamente en la versión estable actual 0.7.2
, pero ahora está corregida en la versión de desarrollo 0.8.0-dev
con este commit .
Editar 2 :
Puede configurar Flower usando flower.readthedocs.org/en/latest/… :
celery flower --basic_auth=user1:password1,user2:password2
A continuación, bloquee el puerto 5555 para todos los servidores nginx y configure el proxy inverso para nginx o para apache:
ProxyRequests off
ProxyPreserveHost On
ProxyPass / http://localhost:5555
Luego asegúrate de que proxy mod esté activado:
sudo a2enmod proxy
sudo a2enmod proxy_http
En caso de que no pueda configurarlo en un subdominio separado, por ejemplo: flower.example.com
(configuración anterior), puede configurarlo para example.com/flower
:
ejecutar flor con url_prefix
:
celery flower --url_prefix=flower --basic_auth=user1:password1,user2:password2
en apache config:
ProxyPass /flower http://localhost:5555
Por supuesto, asegúrese de que SSL esté configurado; de lo contrario, no tiene sentido :)
Quería flor en un subdirectorio de mi servidor web, por lo que mi configuración nginx reverse proxy se veía así:
location /flower/ {
proxy_pass http://localhost:5555/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
Ahora puedo ir a florecer (protegido con contraseña) a través de www.example.com/flower
La mayoría de esto se deriva de la página de documentación de Flower sobre la configuración de un proxy inverso nginx:
Sí, no hay auth en flor, ya que solo está hablando con el intermediario, pero si lo ejecuta sobre SSL, la autenticación básica debería ser lo suficientemente buena.