SECURITY: Ограничен доступ владельцев тенантов к админке Django
Исправлена критическая уязвимость безопасности, которая потенциально позволяла владельцам тенантов получить доступ к админ-панели Django. Изменения: - Добавлены явные setdefault для is_staff=False и is_superuser=False в CustomUserManager.create_user() - Добавлены явные флаги безопасности при создании владельца тенанта - Добавлены явные флаги безопасности при создании пользователей через систему ролей - Создан TenantAdminAccessMiddleware для защиты /admin/ на уровне middleware - Создана миграция данных для исправления флагов у существующих пользователей Реализована трёхуровневая защита (Defense-in-Depth): 1. Уровень модели: явные дефолты в create_user() 2. Уровень views: явные флаги при создании 3. Уровень middleware: runtime блокировка доступа Файлы: - accounts/models.py: явные флаги в create_user() - tenants/admin.py: явные флаги при создании владельца - user_roles/views.py: явные флаги при создании через роли - myproject/admin_access_middleware.py: новый middleware - myproject/settings.py: регистрация middleware - accounts/migrations/0002_fix_owner_staff_flags.py: миграция данных ВАЖНО: После применения этого коммита необходимо выполнить: 1. python manage.py migrate accounts 2. python manage.py migrate_schemas 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -340,7 +340,9 @@ class TenantRegistrationAdmin(admin.ModelAdmin):
|
||||
owner = User.objects.create_user(
|
||||
email=registration.owner_email,
|
||||
name=registration.owner_name,
|
||||
password=None # Пароль будет установлен через ссылку
|
||||
password=None, # Пароль будет установлен через ссылку
|
||||
is_staff=False, # SECURITY: Владелец НЕ может входить в админку
|
||||
is_superuser=False # SECURITY: Владелец НЕ суперпользователь
|
||||
)
|
||||
# Помечаем email как подтвержденный, так как владелец регистрировался с ним
|
||||
owner.is_email_confirmed = True
|
||||
|
||||
Reference in New Issue
Block a user