* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Декларативная защита по правам доступа к коду
8 февраля 2009
Для управления доступом к системным ресурсам можно использовать декларатив- ную защиту по правам доступа к коду вместо императивной защиты. Как и в случае защиты, основанной на ролях, у каждого разрешения на доступ кода имеется экви- валентный атрибут, которым можно пометить метод или класс. Декларативная за- шита по правам доступа к коду годится также для проверки разрешений сборки в целом.
Процедура применения атрибутов разрешении доступа к коду с классами и ме- тодами не отличается от таковой для атрибутов защиты, основанной на ролях, за исключением одного. Вместо роли в данном случае требуется указать значение SecurityAction, которое представляет действие, предпринимаемое данным атрибутом. Ниже показано, как при помощи декларативной безопасности отказать в предос- тавлении разрешения File Ю Permission для класса: Visual Basic .NET <FileIOPermission(SecurityAction.Deny)>Public Class aClass Реализация опущена. End Class Visual C# [FileIOPermissiori(SeciirityAction. Deny)] public class aClass Флаги Security Action. Demand, SecurityAction. Deny, SecurityAction.Asserl и SecurityAc- (ion. Permit Only эквивалентны методам Demand, Deny, Assert и PermitOnfy соответству- ющих классов разрешений. Декларативная модель защиты поддерживает ряд до- полнительных средств защиты, которые применяются к классам и методам. Флаг SecurityAction- LinkDemandjpeftyej наличия права доступа к классу или методу толь- ко у процедуры, непосредственно вызывающей этот класс или метод, а флаг Security - Action. Inheritance Demand — наличия соответствующих прав у любого класса, произ- водного от защищенного класса либо переопределяющего защищенный метод. Атрибуты разрешений позволяют задавать требования безопасности и для сбор- ки в целом. Существует три флага Security Action, которые можно определять в ди- рективах, действующих на уровне сборки. Флаг Security Action. RequestMinimum про- сит CLR назначить сборке заданное разрешение. Если системная политика безо- пасности запрещает предоставление запрошенного разрешения, сборка не будет исполнена. Флаг Security Action. Request Optional напоминает предыдущий, но позво- ляет исполнить сборку даже при отказе в предоставлении запрошенных им разре- шений. Флаг Security Action. Request Refuse заставляет CLR отказать сборке в предос- тавлении указанных им прав. Все эти флаги определяют внутри директивы Assembly (assembly): Visual Basic .NET <AsserriDly: FilelOPe mission (SecurityAction. RequestMinimum}> Visual C# [asseiibly: FileIOPerrnission(SecurityAction. RequestMinimurri}] Как и при использовании декларативной защиты на основе ролей, атрибуты раз- решений допускается инициализировать любыми разрешениями при помощи one ратора := (Visual Basic .NET) или = (Visual C#). Следующий пример демонстрирует декларативное предоставление разрешения на доступ к файлу: Visual Basic .NET <FileIOPe rrrissi on (SecuntyAct ion. Assert, Write:="C:\myFile.txt")>Public Sub WriteFileO Реализация опущена, End Sim Visual C# [ FilelOPe rmission (SecurityAct ion. Assert. Write="C:\\myFile.txt")] public voic WriteFileO