web-dev-qa-db-ja.com

生産におけるセロリフラワーセキュリティ

私はフラワー( 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にアクセスする可能性のある人にとってかなりのセキュリティリスクであるかどうか、これを保護するための最良の方法は何か、それを完全に無効にしてそのまま使用する必要があるかどうかも知る必要があります。必要な基礎。

34
mh00h

--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が構成されていることを確認してください。構成されていない場合は意味がありません:)

42
lehins

私は私のウェブサーバーのサブディレクトリに花が欲しかったので、私の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ドキュメントページから派生しています。

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

12
Scott Stafford

はい、ブローカーと通信しているだけなので、花には認証はありませんが、SSLで実行する場合は、基本認証で十分です。

1
Nick

HTTPおよびHTTPSはCeleryのセキュリティにどのように影響しますか?どのユーザーログインを参照していますか?

フラワーモニターをワーカーに接続してセロリキューに追加します。 Flowerを設定するときは、接続文字列[broker]:// [user_name]:[password] @ [database_address]:[port]/[instance]を指定する必要があります。ユーザー名とパスワードは、選択したデータベースにログインするための資格情報です。

このログインを参照している場合、単にログインを無効化/削除するだけで十分ではありませんか?

0
adam