Python RQ Worker Güvenliğinde Güven Sınırları

0 Yanıt 4 Görüntülenme
Puanlayanlar
Katılımcılar
Konuyu Açan #1
RQ worker’ı yalnızca arka plan işi çalıştıran bir süreç gibi görmek kolay; gerçekte ise kuyruğa yazabilen tarafların etkisini taşıyan bir yürütme bileşenidir. Bu yüzden güvenlik, worker’ı başlatmaktan önce Redis’e kimlerin eriştiğini ve hangi işlerin kuyruğa girebildiğini belirlemekle başlar.

RQ’nun varsayılan serileştirme yöntemi pickle’dır. Güvenilmeyen bir kaynaktan gelen pickle verisini açmak, veri okumaktan ibaret değildir; serileştirme sırasında kod çalıştırma riski doğurabilir. Üretici uygulamalar ve Redis erişimi bu nedenle güvenilir sistemlerle sınırlandırılmalı; mümkün olduğunda JSON serileştirici kullanılmalıdır. JSON, rastgele Python nesnelerinin taşınmasını engeller; ancak kuyruğa iş ekleyebilen bir saldırganın yetkili görevleri tetiklemesini tek başına önlemez.

KOD
12345678from redis import Redis
from rq import Queue, Worker
from rq.serializers import JSONSerializer

redis = Redis.from_url("redis://localhost:6379/0")
queue = Queue("default", connection=redis, serializer=JSONSerializer)
worker = Worker([queue], connection=redis, serializer=JSONSerializer)
worker.work()


Redis’i internete açmayın; ağ erişimini sınırlayın, kimlik doğrulama ve uygun Redis ACL kuralları uygulayın. Worker’ı root yerine ayrı, düşük yetkili bir sistem kullanıcısıyla çalıştırın; sırları iş argümanlarına koymayın ve iş günlüklerinde hassas verileri maskeleyin. Ayrıca kuyrukları görev türüne göre ayırmak, güvenilmeyen üreticilerin ayrıcalıklı işleri tetiklemesini sınırlamaya yardımcı olur. En sağlam yaklaşım, Redis’i ve kuyruk üreticilerini aynı güven sınırında ele alıp worker yetkilerini bu sınırın gerektirdiği en düşük düzeyde tutmaktır.

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi