Представьте себе приложение .NET, разработанное с использованием многоуровневой архитектуры.
Можно ли использовать что-то вроде шаблона доверенная подсистема при развертывании всех уровней приложения на одном компьютере?
Этот дизайн небезопасен по умолчанию?





Если все уровни развертываются в одном процессе, я бы сказал, что почти по определению вы не используете модель доверенной подсистемы.
Вы можете (по крайней мере теоретически) развернуть разные уровни на одной и той же физической машине, по-прежнему используя модель доверенной подсистемы, но, конечно, будет сложнее гарантировать безопасность среднего уровня. Например, ваш средний уровень может быть доверенным веб-сервисом, работающим под IIS.
Это зависит от того, как вы используете систему и как развернуты ваши уровни.
Допустим, у вас есть машина, на которой SQL Server запущен под одной учетной записью пользователя, ваш уровень обслуживания находится под другой учетной записью службы, а ваши пользователи входят в систему, используя третью учетную запись (без доступа администратора, конечно). Скажем, учетной записи среднего уровня доверен доступ к базе данных, но нет учетной записи пользователя. В этом случае да, это в основном ваша классическая картина модели доверенной подсистемы.
Однако если у вас есть случай, когда учетная запись конечного пользователя имеет доступ к базе данных И уровню обслуживания, то вы действительно нарушаете шаблон и открываете дыру. Если конечный пользователь является администратором и может каким-то образом вмешаться в работу одного из слоев, вы нарушаете шаблон. Если у пользователя есть физический доступ к машине и он может вмешиваться в ИТ, я бы даже сказал, что вы нарушаете шаблон ...