Поделиться через


Калькулятор разрешений (Permcalc.exe)

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

Средство определения минимального набора разрешений (Permcalc.exe) используется для оценки разрешений, которыми должны обладать вызывающие операторы для получения доступа к открытым точкам входа сборки. Это средство впервые было реализовано в платформе .NET Framework версии 2.0. Оно ориентировано на продвинутых пользователей.

PermCalc [options] assemblyName [assemblyDependencyName…]

Параметры

Параметр

Описание

-CleanCache

Воссоздает все файлы кэша.

-HostProtection

Выводит сведения о защищенных категориях HostProtectionAttribute.

-Internet

В случае, когда невозможно определить точные значения разрешений, для оценки используются разрешения зоны Интернета. Если не удается определить значения разрешений, по умолчанию объем разрешений завышается посредством использования неограниченного состояния разрешения.

-Out fileName

Направляет выходные данные в fileName. По умолчанию используется параметр assemblyName.PermCalc.xml либо параметр sandbox.PermCalc.xml, если выбран параметр -Sandbox.

-Sandbox

Выводит сведения об изолированной среде с минимальными разрешениями, в которой может выполняться приложение, вместо разрешений, требуемых операторами вызова точки входа.

-Show

Выводит файл выходных данных по завершении работы.

-Stacks

Включает в выходные данные стеки вызова для отображения источников запросов разрешений.

-Under

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

-?

Отображает сведения об использовании.

Аргумент

Описание

assemblyName

Сборка, для которой требуется вычислить разрешения.

assemblyDependencyName

Сборка, по отношению к которой сборка assemblyName является зависимой.

Заметки

Средство определения минимального набора разрешений вычисляет минимальный набор разрешений, требуемый для выполнения приложения, посредством изучения всех применимых путей к коду всех сборок приложений и сборок зависимостей. Это средство возвращает набор разрешений для отдельной сборки приложения.

Начиная с точки входа приложения, средство выполняет трассировку всех путей к коду в сборках приложения, общих и системных библиотеках, к которым обращается приложение. Это средство содержит симулятор стека вызовов, который включает все сборки, вовлеченные в трассировку пути к коду. В каждой трассировке пути к коду средство проверяет наличие декларативных запросов, запросов на связывание,а также декларативных модификаторов проверки стека. Так как при компиляции должны быть известны все состояния разрешений, используемые в декларативных действиях безопасности, можно точно рассчитать влияние всех декларативных действий безопасности на сборки приложения. Например, если используется декларативный запрос, запрошенным набором разрешений обновляется минимальный набор разрешений для каждой сборки, включенной на этот момент в стек вызова. Если в симуляторе стека вызовов обнаружена декларативное подтверждение, для всех сборок, находящихся в стеке вызовов выше подтверждения, выполняется только одно пересечение между подтвержденным набором разрешений и запрошенным набором пересечений. Аналогичным образом при выявлении запроса на связывание запрошенным набором разрешений обновляется только оператор вызова, находящийся в стеке вызовов симулятора над точкой запроса подключения.

В ходе трассировки путей к коду выполняется трассировка методов в MSIL, начиная с метода основной точки входа приложения. Если при трассировке методов в MSIL обнаружены принудительные действия в отношении набора разрешений, для каждой из сборок выполняется следующий алгоритм обновления:

  • Если можно статически определить состояние разрешения, используемое в принудительном запросе, запросе на связывание, подтверждении, разрешении "permit only" или "deny" и при этом данное состояние однозначно не зависит от состояния, доступного только во время выполнения, можно определить влияние такого действия безопасности на приложения сборок и оно вычисляется для эффектов декларативных действий безопасности в отношении минимального набора разрешений всех сборок профиля.

  • Если состояние набора разрешений, используемого в принудительном действии безопасности, не удается определить статически, предполагается, что состояние разрешения является неограниченным, например задано неограниченное разрешение безопасности или неограниченные разрешения на файловый ввод-вывод. В некоторых случаях это может привести к завышенному объему разрешений, требуемых для выполнения приложения. Чтобы изменить это заданное по умолчанию поведение, воспользуйтесь параметром -Under.

  • Если при наличии в методе нескольких путей к коду некоторые из них имеют разные аннотации действий безопасности, используется объединение запросов и пересечение подтверждений, поскольку средство может быть неспособно определить, какой из возможных путей к коду в методе будет использоваться приложением во время выполнения.

В зависимости от размера и сложности сборок и их зависимостей выполнения анализа этим средством может занять несколько минут.

Примеры

Чтобы выполнить приведенные ниже примеры, следует ввести команды в окне Командная строка пакета SDK, подставив свои имена файлов вместо указанных в примерах.

Приведенная ниже команда воссоздает все файлы кэша и включает стеки вызова для сборки mylib.dll. Данные выводятся в заданное по умолчанию средство просмотра для XML-файлов.

Permcalc.exe -cleancache -stacks -show mylib.dll

Приведенная ниже команда выводит сведения об изолированной среде с минимальными разрешениями, требуемыми для выполнения приложения myapp.exe. Данные выводятся в заданное по умолчанию средство просмотра для XML-файлов. Целевой файл — myapp.exe, зависимые файлы — mydep1.dll и mydep2.dll.

Permcalc.exe -sandbox -show myapp.exe mydep1.dll mydep2.dll

См. также

Ссылки

Инструменты .NET Framework

Командная строка пакета SDK