django-rls — декларативный Row-Level Security для Django + PostgreSQL… — Django Python — TG.ME

🎯 django-rls — декларативный Row-Level Security для Django + PostgreSQL

Пакет от [kdpisda](https://github.com/kdpisda/django-rls), который позволяет удобно задавать политики Row-Level Security (RLS) прямо внутри моделей Django — с генерацией SQL-политик на этапе makemigrations.

🔐 Основные возможности:
- Объявление RLS-политик в моделях (через класс `RLS`)
- Автоматическая генерация SQL-политик при миграциях
- Поддержка многотенантности (tenant_id)
- Совместимость с Django ORM и PostgreSQL

📦 Пример использования:


class Invoice(RLSModel):
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)

class RLS:
policies = [
RLSPolicy(
name="tenant_isolation",
using="customer_id = current_setting('myapp.tenant_id')::integer"
)
]

📌 При makemigrations будут сгенерированы команды:

sql

CREATE POLICY tenant_isolation ON invoice
USING (customer_id = current_setting('myapp.tenant_id')::integer);
ALTER TABLE invoice ENABLE ROW LEVEL SECURITY;
🛠️ Установка:

bash

pip install django-rls
📚 Документация и исходники:

GitHub → github.com/kdpisda/django-rls

Идеально для: Django-проектов с многотенантной архитектурой и требованиями к безопасности на уровне данных.
July 8, 2025 3.2K 14