Bảo mật Celery Flower với xác thực Django

By hientd, at: 10:04 Ngày 13 tháng 1 năm 2025

Thời gian đọc ước tính: __READING_TIME__ minutes

Securing Celery Flower with Django Authentication
Securing Celery Flower with Django Authentication

Bảo mật Celery Flower với hệ thống xác thực Django


Khi quản lý các tác vụ Celery với Flower, bảo mật là một yếu tố cần được xem xét kỹ lưỡng. Theo mặc định, Flower không tích hợp với hệ thống xác thực của Django, dẫn đến việc mở ra nguy cơ truy cập trái phép.

Trong hướng dẫn này, tôi sẽ trình bày cách bảo mật Flower bằng cách sử dụng xác thực Django thông qua việc tận dụng gói django-revproxy.

 

Tại sao cần bảo mật Flower?


Flower cung cấp một công cụ giám sát mạnh mẽ cho các tác vụ Celery, nhưng việc để nó bị lộ có thể dẫn đến việc sử dụng sai mục đích hoặc truy cập dữ liệu trái phép. Bảo mật Flower bằng xác thực Django đảm bảo rằng chỉ những người dùng được ủy quyền mới có thể truy cập vào thông tin nhạy cảm liên quan đến tác vụ.

 

Công cụ và thiết lập


Để đạt được điều này, chúng ta sẽ sử dụng các công cụ sau:
 

  1. django-revproxy: Một gói Django cho phép proxy ngược các yêu cầu đến các dịch vụ bên ngoài.
     

  2. Custom Django View: Một view kiểm tra quyền của người dùng và chuyển tiếp các yêu cầu đến bảng điều khiển Flower.

 

Cài đặt django-revproxy

Đầu tiên, cài đặt gói django-revproxy:

pip install django-revproxy

 

Tham khảo tài liệu django-revproxy để biết thêm chi tiết.

 

Triển khai


Tạo Proxy View


Chúng ta sẽ tạo một lớp view tùy chỉnh thực hiện các việc sau:
 

  • Sử dụng django-revproxy để proxy các yêu cầu đến bảng điều khiển Flower.
     

  • Kiểm tra quyền của người dùng để đảm bảo chỉ người dùng siêu quản trị viên mới có thể truy cập Flower.
     

Đây là phần triển khai:

from django.conf import settings
from django.contrib.auth.mixins import UserPassesTestMixin
from django.urls import re_path
from revproxy.views import ProxyView

class FlowerCustomProxyView(UserPassesTestMixin, ProxyView):
    upstream = settings.FLOWER_URL
    url_prefix = settings.FLOWER_URL_PREFIX
    rewrite = ((r"^/{}$".format(url_prefix), r"/{}/".format(url_prefix)),)

    def test_func(self):
        return self.request.user.is_superuser

    @classmethod
    def as_url(cls):
        return re_path(
            r"^(?P<path>{}.*)$".format(cls.url_prefix), cls.as_view()
        )</path>

 

Cấu hình URL

Tiếp theo, thêm FlowerProxyView vào cấu hình URL của ứng dụng:

from django.urls import include, path
from . import views


app_name = "misc"
urlpatterns = [
    ...
    views.FlowerCustomProxyView.as_url(),
]

 

Cấu hình cài đặt

Đảm bảo rằng các cài đặt sau được thêm vào dự án Django của bạn:

FLOWER_URL = "http://localhost:5555"
FLOWER_URL_PREFIX = "flower"

 

Kiểm thử


Khởi động máy chủ phát triển Django của bạn:

python manage.py runserver


Khởi động Flower:

celery -A your_project flower


Điều hướng đến http://localhost:5555/flower trên trình duyệt của bạn. Đảm bảo bạn đã đăng nhập với tư cách là người dùng siêu quản trị viên để truy cập bảng điều khiển.

 

Những suy nghĩ khác
 

  1. Hạn chế truy cập theo IP: Để tăng cường bảo mật, hãy xem xét việc hạn chế truy cập vào bảng điều khiển Flower theo địa chỉ IP.
     

  2. SSL/TLS: Sử dụng HTTPS để mã hóa dữ liệu đang truyền khi truy cập bảng điều khiển Flower.
     

  3. Hạn chế tốc độ: Thực hiện hạn chế tốc độ để ngăn chặn việc lạm dụng.
     

  4. Nhật ký kiểm toán: Nhật ký các lần truy cập để theo dõi việc sử dụng.

 

Kết luận


Bảo mật Flower với xác thực Django là một cách đơn giản nhưng hiệu quả để bảo vệ dữ liệu tác vụ Celery của bạn. Bằng cách tích hợp django-revproxy và một view tùy chỉnh dựa trên quyền, bạn có thể đảm bảo rằng chỉ những người dùng được ủy quyền mới có quyền truy cập vào bảng điều khiển Flower của bạn.

Bạn đã triển khai các biện pháp bảo mật tương tự chưa? Hãy chia sẻ suy nghĩ của bạn trong phần bình luận bên dưới!

Tag list:
- Secure Celery Flower
- Celery Flower security
- Django permissions for Flower
- Django authentication for Flower
- django-revproxy example
- Django superuser Flower access
- Flower reverse proxy setup
- Celery task monitoring security
- How to secure Flower monitoring
- Protect Flower dashboard

Liên quan

Django Outsourcing

Đọc thêm
Django Developer Life

Đọc thêm
Theo dõi

Theo dõi bản tin của chúng tôi và không bao giờ bỏ lỡ những tin tức mới nhất.