🎯 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-проектов с многотенантной архитектурой и требованиями к безопасности на уровне данных.
@python_times
Пакет от [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-проектов с многотенантной архитектурой и требованиями к безопасности на уровне данных.
@python_times