Re[7]: .NET Framework 4.0. Code Access Security
От: adontz Грузия http://adontz.wordpress.com/
Дата: 06.02.11 15:25
Оценка: +2
Здравствуйте, Sinix, Вы писали:

S>Грабли в том (повторяюсь), что security — тема неохватная и попытка рассмотреть "типичные варианты" в рамках пары абзацев будет смотреться полным издевательством. Итак почти треть статьи ушло на описание "что оно есть и откуда пошло". Вы сами попробуйте описать таким образом любую из подсистем фреймворка — увидите.

S>Не ребят, я вас не понимаю Две достойных статьи впервые за ~полгода (кстати, спасибо, статья по KTM понравилась ) — обязательно надо оттоптаться в комментариях?

Не, я не в обиду автору. Просто вот ты назвал плагины, можно эту тему развить. Без упора на код, просто показать что права доступа можно завать тонко. Например, разрешить файловые операции, но только для определённого каталога. Это не ограничит автора плагина в функциональности, но изолирует его. Я то понимаю зачем CAS нужен, но задача объяснения зачем он нужен не менее важна, чем задача объяснения как он работает. Я не хочу сказать что эта статья плохая, она простон е вводная. А народу нужна ещё и вводная.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[7]: .NET Framework 4.0. Code Access Security
От: adontz Грузия http://adontz.wordpress.com/
Дата: 06.02.11 15:28
Оценка:
Здравствуйте, 0K, Вы писали:

A>>Не очень понял смысл этой утилиты. Довольно простое WinForms приложение запускается вашей утилитой только как unrestricted.


0K>Если простое (не нужен доступ к доп. ресурсам) -- то достаточно (1) Security/Excecuting и (2) UI/SafeTopLevelWindow. Попробуйте запустить так саму программу.

0K>Если же простая программа требует Unrestricted -- значит программу делал чел, ни в дуб ногой не разбирающийся в концепции безопасности .Net.

Программу писал я и она, всего лишь, использует нестандартные элементы управления. Я так понимаю надо сделать в виде трёх слоёв, но по факту выходит только два — приложение и сборка с кучей интеропа.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[8]: .NET Framework 4.0. Code Access Security
От: 0K Ниоткуда  
Дата: 06.02.11 16:06
Оценка:
Здравствуйте, adontz, Вы писали:

A>Программу писал я и она, всего лишь, использует нестандартные элементы управления. Я так понимаю надо сделать в виде трёх слоёв, но по факту выходит только два — приложение и сборка с кучей интеропа.


Если вы вызываете код, который требует неограниченных привилегий -- то и ваша сборка их будет требовать. Единственный выход -- добавить то что требует неограниченных привилегий в GAC (можно было бы в ManagedSandbox указать исключения, но такой возможности ПОКА нет).
Re[5]: .NET Framework 4.0. Code Access Security
От: SV.  
Дата: 06.02.11 17:36
Оценка: 5 (1) +1 -2
Здравствуйте, Sinix, Вы писали:

Sinix, спор в том, что я говорю "сначала зачем это нужно делать, потом как это сделать", а вы говорите "сначала как это сделать, а зачем — тема необъятная, об этом можно вообще не писать". Поверьте бывшему лауреату, что это просто глупо.

S>И это будет чистой рекламой, не имеющей никакого отношения к реальности. CAS — это в первую очередь часть инфраструкутры .NET-а. Сценариев, где оно используется — выше крыши: asp, sql clr, click once, sharepoint. И, как и всё что связано с инфраструктурой (а тем более — с безопасностью), выбор "использовать или не использовать" должен делаться взвешенно, а не под влиянием очередного витка моды. Так что с этой стороны статья абсолютно корректна.


Я же говорю, что примеры — дело хорошее. Без примеров как оно звучало — "хостинг антрастед кода". Не жук накакал. А с примерами...

Вот пусть найдется здесь хоть один шаропоинтщик, который не просто реализовал наследника евент-ресивера, а сделал более-менее крупный проект, типа интеграции с 1С. И скажет, что он думает про плагинность шаропоинта. Лицо только закрывайте, потому, что плагинность шаропоинта — злой анекдот. Вы просто не работали с ним и не знаете. Более мерзкой плагинорасширяемой системы не бывает. Я молчу про то, что вместо фабрики классов эти уроды требуют для инстанцирования указывать имя типа, причем не поддерживают коллекций, а потому более одного хендлера на один тип евента без ухищрений не создать. Но про безопасность, мать ихнюю за ногу, мы поговорим.

Безопасность плагинов начинается со strong name'ности. Не далее как в прошлую пятницу я сбросил исходный код проекта, чтобы его сбилдили и развернули на машине, на которой ГАРАНТИРОВАННО ХВАТАЕТ ПРАВ для сборки дотнет-проектов. Студия 2008 при открытии таких проектов просит ввести пароль от pfx. Однако, 2010-ая уже заставляет шаманить: sn -i companyname.pfx VS_KEY_3E185446540E7F7A. И — упс! — облом, потому, что прав на импорт нет. День потерян, в понедельник придет админ, будет наделять юзера той машины правами. Теперь скажите мне — зачем? ЗАЧЕМ нужна стронгнеймность, если для регистрации плагина все равно нужен админский доступ к stsadm.exe на сервере? Тот, кто будет разворачивать — слепой дурак, он свою сборку с чужой перепутает? Или только "частично" доверяет авторам сборки? На это я скажу, что базу бэкапить надо, а не стронгнеймы присваивать. В результате, написать обработчик — дело 3 минут. Задеплоить его, имея доступ к серверу через заднюю дверь — 3 часа.

Ладно, как насчет SQL CLR? А вот как: сборка, созданная поверх dll'ки как UNSAFE (!!!) не может содержать референсов на другие сборки — требует и их "создания" тоже. При том, что доступ к ФС — полный, а знающие люди говорят, что через рефлекшен можно отлично загрузить и выполнить код. Такая вот безопасность.

Короче, не надо пугать объемом в три статьи. Приведите хоть один пример, но бесспорный. Чтобы польза CAS'а вылезала из него со всей неумолимой очевидностью. Не можете — освободите трибуну тем, кто может. Вас за язык никто не тянул, вопрос мой был автору исходного материала.

***

Лично я отлично понимаю суть игры МС с авторами управляемых расширений к сиквелу и шаропоинту. Если каждый дурак сможет писать плаги, кто тогда будет платить шаропонтщикам по текущим (немалым) ставкам? (Не SAP, конечно, но тоже неплохо). Но когда люди не отдавая себе отчета в том, "зачем" это делается, начитаются "как" и начнут валять в своих проектах, это вряд ли сделает мир лучше.
Re: .NET Framework 4.0. Code Access Security
От: Аноним  
Дата: 06.02.11 17:55
Оценка: 8 (1)
Спасибо за статью... Правда я так и не придумал как это применять... кроме плагинов заружаемых в песочные домены...
А вот по моему атрибуты имеют потенциал... в проектировании.. но я не совсем понимаю пока как проектировать системы с использованием этих трех слоев..
Может кто подскажет что почитать?
Re[6]: .NET Framework 4.0. Code Access Security
От: out-of-the-way США www.tehnoromantik.net
Дата: 06.02.11 18:43
Оценка: +2
Так мы статью обсуждаем или технологию. По мне статья нормальная, вот только причесать маленько.
А по Вашему получается, раз мне не нравится то, что придумала ms значит и статья об этом плохая.
Программа — мысли спрессованные в код.
Re[7]: .NET Framework 4.0. Code Access Security
От: SV.  
Дата: 06.02.11 19:39
Оценка:
Здравствуйте, out-of-the-way, Вы писали:

OOT>Так мы статью обсуждаем или технологию. По мне статья нормальная, вот только причесать маленько.

OOT>А по Вашему получается, раз мне не нравится то, что придумала ms значит и статья об этом плохая.

Если вы перечитаете, то увидите, как было дело: я оставил комментарий автору, что в статье не раскрыта тема применимости (а это главное, потому, что технология несколько... м-м-м... спорная). Что даются безаппеляционные утверждения типа "совершенно неправильный подход «всем можно все»", которые вне контекста не имеют смысла. Пришел Sinix и начал вместо автора приводить примеры и обосновывать утверждения. Соответственно, спор пошел с ним. Я только рад буду, если придет сам автор и ответит что-то по существу моей претензии.
Re[8]: .NET Framework 4.0. Code Access Security
От: Smarty Россия  
Дата: 07.02.11 14:47
Оценка:
Здравствуйте, SV., Вы писали:

SV.>Я только рад буду, если придет сам автор и ответит что-то по существу моей претензии.


Автор пришел и отвечает. Про практическую применимость CAS-а можно было бы сказать 2-мя путями:

1. Что-то на уровне "тому в C:\Test писать можно, а этому — нельзя". Посчитал что для читателя готового воспринять текст статьи (а она, как правильно заметили ранее, определенно не для junior-.NET Developer) такая элементарщина самоочевидна.
2. Провести действительно концептуальное исследование сценариев применения технологии с (желательно) указанием возможных альтернативных технологий для каждого случая. Это будет текст по объему равный, как минимум, обсуждаемой статье, можете даже не сомневаться. Я даже вчерне прикинул и 10-20 абзацев по этому вопросу закопипастил себе в черновик из англояз. блогов/ресурсов. Из самого сырого материала планируемый объем материала чистового был ясен с совершенной ясностью — еще одна полноценная статья.

Итого: 1=не серьезно, 2=супер-серьезно и точно отдельная статья, без вариантов. Я решил сосредоточиться (пока? ) именно на технической составляющей, мне это ближе и интереснее (в конце концов актуальнее, у меня же тоже работа, я не проф. писатель), а лучше всего рассказывается о теме которой сам увлечен. Вторую статью пока не осилил, уж звиняйте... И первая забрала изрядно сил и времени. Хотя и было интересно!
Re[4]: .NET Framework 4.0. Code Access Security
От: XRonos Россия  
Дата: 08.02.11 06:38
Оценка: -1
Здравствуйте, SV., Вы писали:

SV.>Хорошие у вас вопросы "зачем". У меня другие. Зачем так писать, и, главное, зачем потом это читать.


Сергей, зачем так наехал на человека? У нас и так на русском статей по технологиям нехватает, поэтому я лично любой информации рад.
Статья почти понятна, 10% инфы подойдёт как справочный материал и это уже Хорошо.
Теперь на счёт полезности/бесполезности кодобезопасности и доступа к нему:
Тут не надо кому-то что-то показывать на жизненных примерах. Всегда найдутся те, кто узреет пользу для себя... Пиарить технологию — удел
Мелкософта, там умные Маркетологи сидят и придумывают сакральные тексты на жизненных примерах.
А наш удел — рубить техническую фишку и всё.
Бди!
Re[9]: .NET Framework 4.0. Code Access Security
От: SV.  
Дата: 08.02.11 19:12
Оценка: +1 :)
Здравствуйте, Smarty, Вы писали:

SV.>>Я только рад буду, если придет сам автор и ответит что-то по существу моей претензии.

S>Автор пришел и отвечает. Про практическую применимость CAS-а можно было бы сказать 2-мя путями:
S>1. Что-то на уровне "тому в C:\Test писать можно, а этому — нельзя". Посчитал что для читателя готового воспринять текст статьи (а она, как правильно заметили ранее, определенно не для junior-.NET Developer) такая элементарщина самоочевидна.
S>2. Провести действительно концептуальное исследование сценариев применения технологии с (желательно) указанием возможных альтернативных технологий для каждого случая. Это будет текст по объему равный, как минимум, обсуждаемой статье, можете даже не сомневаться. Я даже вчерне прикинул и 10-20 абзацев по этому вопросу закопипастил себе в черновик из англояз. блогов/ресурсов. Из самого сырого материала планируемый объем материала чистового был ясен с совершенной ясностью — еще одна полноценная статья.

Не надо концептуального исследования. Достаточно простых примеров. Один есть — запись в разные места ФС. Ну-у-у-у... Я как-то предполагал, что такие вопросы на уровне ФС и должны решаться. И они решаются. Без CAS'а можно задать набор разных прав к разным объектам ФС. Тем не менее, это пример, какой уж ни будь.

Как мне рассказали в свое время, у англоговорящих есть такая игра — the single most important чего-нибудь. Например, reason for existence (а у французов расхожее выражение — raison d'être). Спросите меня про любую технологию, в которой я разбираюсь — я с ходу вам назову TSMIRoE. А тут дискуссия на девятый круг пошла, и до сих пор никто не сформулировал, чего ради программист должен это изучать.

S>Итого: 1=не серьезно, 2=супер-серьезно и точно отдельная статья, без вариантов. Я решил сосредоточиться (пока? ) именно на технической составляющей, мне это ближе и интереснее (в конце концов актуальнее, у меня же тоже работа, я не проф. писатель), а лучше всего рассказывается о теме которой сам увлечен. Вторую статью пока не осилил, уж звиняйте... И первая забрала изрядно сил и времени. Хотя и было интересно!
Re[5]: .NET Framework 4.0. Code Access Security
От: SV.  
Дата: 08.02.11 19:15
Оценка: +2 -1 :)
Здравствуйте, XRonos, Вы писали:

SV.>>Хорошие у вас вопросы "зачем". У меня другие. Зачем так писать, и, главное, зачем потом это читать.

XR>Сергей, зачем так наехал на человека?

С каких пор вопрос "зачем" считается наездом? Я, что ли, виноват, что и автор, и Sinix в ответ на этот вопрос банально слили, отмазавшись якобы объемом ответа?

XR>А наш удел — рубить техническую фишку и всё.


Не говори за меня. Я как представлю новое поколение продуктов, так мне аж дурно становится. Виста со своими "уверены ли вы?" семечками покажется.
Re[10]: .NET Framework 4.0. Code Access Security
От: Smarty Россия  
Дата: 09.02.11 10:52
Оценка: +3
Здравствуйте, SV., Вы писали:

SV.>Без CAS'а можно задать набор разных прав к разным объектам ФС.


Вы действительно не понимаете разницу между "раздача прав через CAS" и "раздача прав системой безопасности операционной системы"? Тогда может все же СНАЧАЛА статью прочесть, а? У меня создается стойкое ощущение что те ответы что ищите Вы — есть в статье. Уже.

> Я, что ли, виноват, что и автор, и Sinix в ответ на этот вопрос банально слили


Тональность меняем. Здесь Вам никто ничем не обязан. Не обязан даже отвечать. Поэтому для "слива" и "отмаза" нет совершенно никаких объективных предпосылок. Ибо даже ответ в стиле "интересно — сам найдешь" будет абсолютно корректен.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.