Декларативная безопасность

Обновлен: Ноябрь 2007

Декларативный синтаксис безопасности использует атрибуты для размещения информации о безопасности в метаданных кода. Атрибуты могут быть указаны на уровне сборки, класса или члена для указания типа запроса, требования или переопределения, которые необходимо использовать. Запросы используются в приложениях, нацеленных на среду CLR, для информирования системы безопасности среды выполнения о разрешениях, которые необходимы или не нужны вашему приложению. Требования и переопределения используются в библиотеках для обеспечения защиты ресурсов от вызывающих объектов или переопределения стандартного поведения системы безопасности.

Чтобы использовать декларативные вызовы безопасности, необходимо инициализировать данные состояния объекта разрешения таким образом, чтобы они предоставляли определенную форму необходимого разрешения. Каждое встроенное разрешение имеет атрибут, которому передается перечисление SecurityAction для описания типа операции безопасности, которую необходимо выполнить. Однако разрешения также принимают собственные параметры, являющиеся для них исключительными. Полное описание параметров, относящихся к разрешениям, см. в разделе, посвященном встроенным разрешениям.

В следующем фрагменте кода иллюстрируется использование декларативного синтаксиса для осуществления запроса на наличие у вызывающих объектов кода пользовательского разрешения, называемого MyPermission. Это разрешение — гипотетическое, его не существует в .NET Framework. В данном примере декларативный вызов помещен непосредственно перед определением класса, указывая, что данное разрешение применяется на уровне класса. Атрибуту передается структура SecurityAction.Demand для указания того, что вызывающие объекты должны обладать этим разрешением, чтобы выполняться.

<MyPermission(SecurityAction.Demand, Unrestricted = True)> Public Class MyClass1
   
   Public Sub New()
      'The constructor is protected by the security call.
   End Sub
   
   
   Public Sub MyMethod()
      'This method is protected by the security call.
   End Sub
   
   
   Public Sub YourMethod()
      'This method is protected by the security call.
   End Sub
End Class
[MyPermission(SecurityAction.Demand, Unrestricted = true)]
public class MyClass
{
   public MyClass()
   {
      //The constructor is protected by the security call.
   }

   public void MyMethod()
   {
      //This method is protected by the security call.
   }

   public void YourMethod()
   {
      //This method is protected by the security call.
   }
}

См. также

Основные понятия

Синтаксис безопасности

Разрешения безопасности

Ссылки

SecurityAction

Другие ресурсы

Расширение метаданных с помощью атрибутов

Управление доступом для кода

Метаданные и компоненты с самоописанием