web-dev-qa-db-fra.com

Fleur de céleri en sécurité dans la production

Je cherche à utiliser Flower ( https://github.com/mher/flower _) pour surveiller mes tâches de céleri à la place de Django-admin comme recommandé dans leur documentation ( http: // docs.celeryproject.org/fr/latest/userguide/monitoring.html#flower-real-time-celery-web-monitor ). Cependant, comme je suis novice dans ce domaine, je suis un peu confus quant à la manière dont la page de Flower est uniquement basée sur HTTP et non sur HTTPS. Comment puis-je activer la sécurité de mes tâches Celery de sorte que tout ancien utilisateur ne puisse pas simplement visiter le site Web sans besoin de connexion http://flowerserver.com:5555 et modifier quelque chose?

J'ai examiné la propre documentation de Celery à ce sujet, mais malheureusement, il n'y a aucune mention sur la façon de sécuriser l'API ou l'interface Web de Flower. Tout ce qu'il dit: [Need more text here]

Merci!

Mise à jour: Ma question est en partie une copie de ce qui suit: Comment puis-je ajouter une authentification et un point de terminaison à la surveillance des fleurs de céleri de Django?

Cependant, je clarifie sa question ici en demandant comment l’exécuter dans un environnement incluant nginx, gunicorn et céleri, tous sur la même machine distante. Je me pose aussi des questions sur la manière de configurer l'URL accessible de l'extérieur de Flower, mais je préférerais également, si possible, un protocole comme https au lieu de http (ou un moyen de sécuriser le Web et d'y accéder à distance). J'ai également besoin de savoir si le fait de laisser fonctionner Flower représente un risque considérable pour la sécurité de quiconque peut accéder à l'API interne de Flower et quel est le meilleur moyen de la sécuriser, ou si elle doit simplement être désactivée et utilisée de manière similaire. base nécessaire. 

30
mh00h

Vous pouvez exécuter flower avec l'option --auth, qui s'authentifiera à l'aide d'un e-mail google particulier:

celery flower [email protected]

Éditer 1 :

La nouvelle version de Flower nécessite quelques drapeaux supplémentaires et un client OAuth2 enregistré avec 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 doit être l'URL de connexion de la fleur réelle, mais il doit également être ajouté à l'URL de redirection autorisée dans la console de développement Google.

Malheureusement, cette fonctionnalité ne fonctionne pas correctement dans la version stable actuelle 0.7.2, mais elle est maintenant corrigée dans la version de développement 0.8.0-dev avec ce commit .

Éditer 2 :

Vous pouvez configurer Flower en utilisant authentification de base :

celery flower --basic_auth=user1:password1,user2:password2

Puis bloquez le port 5555 pour tous sauf localhost et configurez le proxy inverse pour nginx ou pour Apache:

ProxyRequests off
ProxyPreserveHost On
ProxyPass / http://localhost:5555

Assurez-vous ensuite que proxy mod est activé:

Sudo a2enmod proxy
Sudo a2enmod proxy_http

Si vous ne pouvez pas le configurer sur un sous-domaine distinct, ex: flower.example.com (config ci-dessus), vous pouvez le configurer pour example.com/flower:

lancer une fleur avec url_prefix:

celery flower --url_prefix=flower --basic_auth=user1:password1,user2:password2

dans la configuration Apache:

ProxyPass /flower http://localhost:5555

Bien sûr, assurez-vous que SSL est configuré, sinon cela ne sert à rien :)

38
lehins

Je voulais flower dans un sous-répertoire de mon serveur Web. La configuration de mon proxy inverse nginx ressemblait à ceci:

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;
}

Maintenant, je peux me mettre à fleurir (protégé par mot de passe) via www.example.com/flower

La plupart de ces informations proviennent de la page de documentation de Flower sur la configuration d’un proxy inverse nginx:

http://flower.readthedocs.org/en/latest/reverse-proxy.html

11
Scott Stafford

Eh oui, il n'y a pas d'authentification sur fleur, puisqu'il s'agit juste de parler au courtier, mais si vous l'exécutez sur SSL, alors l'authentification de base devrait suffire.

1
Nick

Comment HTTP et HTTPS affectent-ils la sécurité du céleri? De quelles connexions utilisateur parlez-vous?

Fleur surveille une file de céleri en se liant aux travailleurs. Lors de la configuration de Flower, vous devez fournir la chaîne de connexion [broker]: // [nom_utilisateur]: [mot de passe] @ [adresse_base_de_données]: [port]/[instance]. Le nom d'utilisateur et le mot de passe sont les informations d'identification permettant de se connecter à la base de données de votre choix.

Si vous vous référez à cette connexion, désactiver/supprimer leurs connexions ne serait-il pas suffisant?

0
adam