В мультитенантной архитектуре данных, как лучше всего реализовать представление фильтра арендатора? - PullRequest
3 голосов
/ 11 августа 2010

Я внедряю приложение SaaS, используя ASP.Net MVC 2 и базу данных SQL Server.Я использую общий подход к аренде.

Для фильтрации данных на данный момент я нашел 2 подхода.

Вариант 1: http://msdn.microsoft.com/en-us/library/aa479086.aspx#mlttntda_tvf

Использование sql входа в систему для каждого арендатора.Таким образом, используя SUSER_SID () в качестве фильтра в представлениях

Опция 2: http://blogs.imeta.co.uk/jyoung/archive/2010/03/22/845.aspx

Хранение идентификатора клиента в Context_Info.Таким образом, используя функцию sql, которая считывает идентификатор клиента из Context_Info в качестве фильтра в представлениях.

Не могли бы вы помочь мне выбрать подходящий вариант?

Спасибо, Спасибо

Ответы [ 2 ]

8 голосов
/ 11 августа 2010

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

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

Это значительно упрощает добавление новых арендаторов, поскольку конфигурация БД не требуется.

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

0 голосов
/ 11 августа 2010

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

...