Книга: C# для профессионалов. Том II

Просмотр полномочий сборки

Просмотр полномочий сборки

Предположим, что используется приложение, написанное компанией Microsoft, и мы пытаемся использовать свойство, которое раньше не использовалось. Приложение не имеет копии кода, хранящейся локально, поэтому оно запрашивает ее, и код загружается в глобальный кэш сборок. При таком сценарии для кода из Интернета, опубликованного указанной организацией, подписавшей сборку с помощью сертификата, мы обнаружим, что членство группы кода сборки выглядит примерно так:


Согласно политике в этом примере, группы кода All Code и Internet предоставляют только ограниченные полномочия, а членство группы кода в правом нижнем углу предоставляет сборке полномочие FullTrust. Права всех групп кода объединяются в создании общего эффективного полномочия самого высокого уровня. Таким образом, каждая группа кода, к которой принадлежит сборка, вносит дополнительные полномочия.

Кроме групп кода, к которым принадлежит сборка, мы можем наблюдать полномочия, присвоенные группам кода, а также полномочия идентичности кода, которые дают нам доступ к свидетельству, представленному кодом во время выполнения. Чтобы увидеть полномочия для групп кода сборки, используется команда:

caspol.exe -resolveperm assembly.dll

Проверим это на сборке и визуально оценим предоставленные ей полномочия идентичности и доступа к коду, когда мы получаем к ней доступ через локальную интранет. Если мы введем следующую команду, то увидим полномочия доступа к коду и затем в конце три полномочия идентичности:

caspol.exe -resolveperm http://intranet/assembly.dll
Microsoft (R) .NET Framework CasPol 1.0.xxxx.x
Copyright (c) Microsoft Corp 1999-2001. All rights reserved.
Resolving permissions for level = Enterprise
Resolving permissions for level = Machine
Resolving permissions for level = User
Grant =
<PermissionSet version="1">
 <IPermission
  version="1"
  Read="USERNAME;TEMP;TMP" />
 <IPermission class ="System.Security.Permissions.FileDialogPermission, mscorlib, Version=1.0.xxxx.x, Culture=neutral, PublicKeyToken=b77a5c561934e089"
  version="1"
  Unrestricted="true" />
 <IPermission
  version="1"
  Allowed="AssemblyIsolationByUser"
  UserQuota="9223372036854775807"
  Expiry = "9223372036854775807"
  Permanent="True" />
 <IPermission
  version="1"
  Flags="ReflectionEmit" />
 <IPermission
  version="1"
  Flags="Assertion, Execution, RemotingConfiguration" />
 <IPermission
  version="1"
  Unrestricted="true" />
 <IPermission
  version="1">
  <ConnectAccess>
   <URI uri="(https|http)://intranet/.*"/>
  </ConnectAccess>
 </IPermission>
 <IPermission
  version="1"
  Unrestricted="true"/>
 <IPermission
  version="1"
  Level="DefaultPrinting" />
 <IPermission сlass="System.Diagnostics.EventLogPermission, System, Version=1.0.xxxx.x, Culture=neutral, PublicKeyToken=b77a5c561934e089"
  version="1">
  <Machine name="." access="Instrument" />
 </IPermission>
 <IPermission
  version="1"
  Site="intranet" />
 <IPermission
  version="1"
  Url="http://intranet/assembly.dll" />
 <IPermission сlass="System.Security.Permissions.ZoneIdentityPermission, mscorlib, Version=1.0.xxxx.x, Culture=neutral, PublicKeyToken=b77a5c561934e089"
  version="1"
  Zone="Intranet" />
</PermissionSet>
Success

Этот вывод показывает каждое из полномочий в виде кода XML, включая определяющий полномочие класс, содержащую класс сборку, версию полномочия и признак шифрования. Вывод предполагает, что можно создать свои собственные полномочия, больше об этом будет сказано позже. Можно также видеть, что каждое из полномочий идентичности содержит более подробную информацию, скажем, о классе UrlIdentityPermission, предоставляющем доступ к URL кода.

Отметим, что в начале вывода caspol.exe разрешает полномочия на уровнях Enterprise, Machine и User и затем перечисляет действующие представленные права. Теперь перейдем к этому вопросу.

Оглавление книги

Оглавление статьи/книги

Генерация: 1.442. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз