Почему веб-роль Azure по умолчанию выполняется в режиме полного доверия? - PullRequest
3 голосов
/ 10 января 2010

Когда я создаю приложение Azure ASP.NET, по умолчанию для уровня доверия .NET установлено значение Полное доверие. Я всегда изменяю его на частичное доверие Windows Azure, которое похоже на средний уровень доверия ASP.NET.

Вы можете сделать это либо с помощью графического интерфейса пользователя, когда вы выбираете Свойства для роли, либо установив для enableNativeCodeExecution значение false в файле определения (.csdef), как показано ниже:

<WebRole name="ServiceRuntimeWebsite" enableNativeCodeExecution="false">

Как разработчик, который заботится о безопасности, я хочу по умолчанию запустить мое приложение в режиме частичного доверия, который обеспечивает более высокий уровень безопасности. Если мне нужно использовать что-то вроде Reflection или P / Invoke, я как разработчик хочу сам принять решение снизить этот уровень доверия.

Я уверен, что есть причина, по которой Microsoft решила использовать Полное доверие в качестве уровня доверия .NET по умолчанию, я просто не вижу его. Если вы знаете причину или думаете, что знаете, пожалуйста, дайте мне знать.

Ответы [ 4 ]

2 голосов
/ 13 января 2010

Полное доверие требуется не только для P / Invoke для отражения .NET. В результате почти все приложения среднего размера нуждаются в полном доверии, потому что это нужно почти всем распространенным библиотекам (например, NHibernate). На самом деле, я также задавал прямо противоположный вопрос на форумах Azure.

1 голос
/ 14 декабря 2012

Проблема полного или частичного доверия относится к среде, в которой работает ваше приложение. Чем больше у вас контроля и / или «владения» средой и сборками, тем более приемлемы параметры полного доверия.

Например, если вы создаете веб-сайт Azure (возможность в июле 2012 г.) и, имитируя WordPress или Umbraco, ваш веб-сайт позволяет загружать и устанавливать произвольные сборочные плагины, тогда важно иметь частично доверенную среду. Возможно, один из загруженных и выполненных плагинов, который вы не контролируете или не владеете, содержит вредоносное ПО. Это не только влияет на безопасность и стабильность вашего веб-сайта, но некоторые могут утверждать, что это влияет на другие (многопользовательские) размещенные веб-сайты, которые не имеют никакого отношения к вашему.

Конечно, ваш веб-сайт будет полагаться на сторонние библиотеки, такие как Log4Net или StructureMap, но это чрезвычайно известные и проверенные библиотеки, которые не подвергаются сомнению относительно их влияния на безопасность. Следовательно, если вы работаете с веб-ролью Azure (гораздо менее «мультитенантного» типа) и просто запускаете такие «доверенные» сторонние приложения, то на самом деле проблем с выполнением с полным доверием нет.

0 голосов
/ 10 марта 2014

Потому что Medium Trust теперь официально устарел. Если вы запускаете новый веб-проект в Visual Studio, он уже требует полного доверия (и не работает частичное доверие). Microsoft говорит: не полагайтесь на Medium Trust, вместо этого используйте Full Trust и изолируйте ненадежные приложения в отдельных пулах приложений.

Источники:

Ответ Stackoverflow: цитируемый ответ команды ASP.NET

Microsoft: частичное доверие ASP.NET не гарантирует изоляцию приложения

Microsoft: лучшие практики веб-разработки ASP.NET

0 голосов
/ 31 января 2012

Да, к сожалению, все еще очень трудно (если не невозможно) писать большие приложения .NET, которые работают с частичным доверием.

Нам нужны гораздо лучшие технологии и инструменты (например, CAS.NET)

...