Мультитенантное приложение: как изолировать клиентов и данные

Как проектировать multi-tenant систему: модель изоляции, tenant context, доступ, ключи, лимиты, миграции, резервирование и тесты утечки.

Мультитенантная архитектура экономит ресурсы и упрощает обновления, но любая ошибка определения клиента способна превратить обычный дефект в серьезную утечку чужих данных.

Выберите изоляцию

Сравните общие таблицы, отдельные схемы и базы по риску, масштабу, стоимости и требованиям клиента. Универсального варианта нет.

Передавайте контекст

Определяйте tenant из доверенного токена, проверяйте его на каждом слое и не принимайте идентификатор из формы без авторизации. Дублируйте защиту.

Ограничьте влияние

Задайте квоты, справедливые очереди, отдельные ключи, аудит и возможность восстановить одного клиента. Шумный сосед не должен мешать.

Автоматизируйте тесты межклиентской утечки для чтения, записи, поиска, экспорта и фоновых задач, а выбранную модель обязательно пересматривайте при появлении регулируемых данных, крупных клиентов или новых требований к восстановлению.

Права стройте по принципу наименьших привилегий. Журнал аудита храните отдельно.