私はフラワー( https://github.com/mher/flower )を使用して、Django-adminの代わりに自分のセロリタスクを監視します( http: //docs.celeryproject.org/en/latest/userguide/monitoring.html#flower-real-time-celery-web-monitor )。しかし、私はこれに慣れていないので、FlowerのページがHTTPSではなくHTTPのみに基づいている方法について少し混乱しています。古いユーザーがログイン不要のWebサイト http://flowerserver.com:5555 にアクセスして何かを変更できないように、Celeryタスクのセキュリティを有効にするにはどうすればよいですか?
私はこれについてCeleryの 独自のドキュメント を検討しましたが、残念ながらFlowerのAPIまたはWeb UIを保護する方法についての言及はありません。それが言うすべて:[Need more text here]
ありがとう!
更新:私の質問の一部はここに重複しています: Djangoに認証とエンドポイントを追加する方法Celery Flower Monitoring ?
ただし、nginx、gunicorn、およびセロリを含む環境をすべて同じリモートマシン上で実行する方法を尋ねることによって、ここで彼の質問を明確にします。私もFlowerの外部からアクセス可能なURLを設定する方法について疑問に思っていますが、可能であれば、httpではなくhttps(またはwebuiをセキュリティで保護してリモートでアクセスする方法)のようなものを希望します。また、Flowerを実行したままにしておくことが、Flowerの内部APIにアクセスする可能性のある人にとってかなりのセキュリティリスクであるかどうか、これを保護するための最良の方法は何か、それを完全に無効にしてそのまま使用する必要があるかどうかも知る必要があります。必要な基礎。
--authフラグを指定してflowerを実行すると、特定のGoogleメールを使用して認証されます。
celery flower [email protected]
編集1:
Flowerの新しいバージョンでは、さらにいくつかのフラグと Google Developer Console で登録されたOAuth2クライアントが必要です。
celery flower [email protected] --oauth2_key="client_id" --oauth2_secret="client_secret" --oauth2_redirect_uri="http://example.com:5555/login"
oauth2_redirect_uri
は実際の花のログインURLである必要があり、Google開発コンソールの承認済みリダイレクトURLにも追加する必要があります。
残念ながら、この機能は現在の安定バージョン0.7.2
では適切に機能しませんが、開発バージョン0.8.0-dev
ではこの commit で修正されています。
編集2:
基本認証 を使用してFlowerを設定できます。
celery flower --basic_auth=user1:password1,user2:password2
次に、localhostを除くすべてのポートで5555ポートをブロックし、 nginx またはApacheのリバースプロキシを構成します。
ProxyRequests off
ProxyPreserveHost On
ProxyPass / http://localhost:5555
次に、プロキシmodがオンになっていることを確認します。
Sudo a2enmod proxy
Sudo a2enmod proxy_http
別のサブドメインに設定できない場合は、例:flower.example.com
(上記の設定)、example.com/flower
に設定できます。
url_prefix
で花を実行:
celery flower --url_prefix=flower --basic_auth=user1:password1,user2:password2
apache設定:
ProxyPass /flower http://localhost:5555
もちろん、SSLが構成されていることを確認してください。構成されていない場合は意味がありません:)
私は私のウェブサーバーのサブディレクトリに花が欲しかったので、私のnginxリバースプロキシ設定は次のようになりました:
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;
}
これで、www.example.com/flowerを介して、パスワードで保護されたflowerにアクセスできます。
これのほとんどは、nginxリバースプロキシの構成に関するFlowerドキュメントページから派生しています。
はい、ブローカーと通信しているだけなので、花には認証はありませんが、SSLで実行する場合は、基本認証で十分です。
HTTPおよびHTTPSはCeleryのセキュリティにどのように影響しますか?どのユーザーログインを参照していますか?
フラワーモニターをワーカーに接続してセロリキューに追加します。 Flowerを設定するときは、接続文字列[broker]:// [user_name]:[password] @ [database_address]:[port]/[instance]を指定する必要があります。ユーザー名とパスワードは、選択したデータベースにログインするための資格情報です。
このログインを参照している場合、単にログインを無効化/削除するだけで十分ではありませんか?