Tool Permission Calculator (Permcalc.exe)

Aktualisiert: November 2007

Mit dem Tool Minimum Grant Set Determination (Permcalc.exe) werden die Berechtigungen ermittelt, die den Aufrufern gewährt werden müssen, damit sie Zugriff auf die öffentlichen Einstiegspunkte einer Assembly erhalten. Dieses Tool ist neu in .NET Framework, Version 2.0. Es ist zur Verwendung durch fortgeschrittene Benutzer vorgesehen.

PermCalc [options] assemblyName [assemblyDependencyName…]

Parameter

Option

Beschreibung

-CleanCache

Rekonstruiert alle Cachedateien.

-HostProtection

Meldet Informationen über geschützte HostProtectionAttribute/Kategorien.

-Internet

Wenn die genauen Berechtigungswerte nicht bestimmt werden können, werden Internetzonenberechtigungen als Schätzwert verwendet. Standardmäßig wird ein hoher Wert geschätzt und ein uneingeschränkter Berechtigungszustand verwendet, wenn die Berechtigungswerte nicht bestimmt werden können.

-Out fileName

Leitet die Ausgabe an fileName weiter. Die Standardeinstellung ist assemblyName.PermCalc.xml oder sandbox.PermCalc.xml, wenn die -Sandbox-Option angegeben wird.

-Sandbox

Meldet die minimale Berechtigungssandbox, in der eine Anwendung anstelle der von Einstiegspunktaufrufern erforderlichen Berechtigungen ausgeführt werden kann.

-Show

Zeigt die Ausgabedatei nach Abschluss an.

-Stacks

Schließt Aufruflisten in die Ausgabe ein, um den Ursprung von Berechtigungsforderungen anzuzeigen.

-Under

Wenn keine genauen Berechtigungswerte bestimmt werden können, wird versucht, einen niedrigen Wert für die Berechtigungen zu schätzen. Standardmäßig wird ein hoher Wert geschätzt, wenn keine Berechtigungswerte bestimmt werden können.

-?

Zeigt Verwendungsinformationen an.

Argument

Beschreibung

assemblyName

Die Assembly, für die Berechtigungen berechnet werden sollen.

assemblyDependencyName

Eine Assembly, von der assemblyName abhängig ist.

Hinweise

Das Tool Minimum Grant Set Determination berechnet den minimalen Berechtigungssatz, der zum Ausführen einer Anwendung erforderlich ist, indem alle anwendbaren Codepfade sämtlicher Anwendungs- und Abhängigkeitsassemblys geprüft werden. Das Tool gibt pro Anwendungsassembly einen Berechtigungssatz zurück.

Das Tool beginnt am Einstiegspunkt der Anwendung und verfolgt alle Codepfade durch sämtliche Anwendungsassemblys sowie die freigegebenen und Systembibliotheken, die von der Anwendung aufgerufen wurden. Das Tool verwaltet eine simulierte Aufrufliste, die alle in der Ablaufverfolgung von Codepfaden eingeschlossenen Assemblys enthält. Bei jeder Ablaufverfolgung von Codepfaden prüft das Tool, ob deklarative Anforderungen, Verknüpfungsaufrufe oder deklarative Stackwalkmodifizierer vorhanden sind. Da der gesamte bei deklarativen Sicherheitsaktionen verwendete Berechtigungszustand zur Kompilierzeit bekannt sein muss, können die Auswirkungen aller deklarativen Sicherheitsaktionen für Anwendungsassemblys genau berechnet werden. Wird beispielsweise eine deklarative Anforderung verwendet, wird die Gruppe der mindestens gewährten Berechtigungen für die einzelnen Assemblys in der Aufrufliste zu diesem Zeitpunkt mit der angeforderten Berechtigungsgruppe aktualisiert. Wird in der simulierten Aufrufliste eine deklarative Assertion gefunden, wird nur die Schnittmenge zwischen dem bestätigten Berechtigungssatz und dem angeforderten Berechtigungssatz für alle Assemblys aktualisiert, die sich in der Aufrufliste über der Assertion befinden. Ebenso wird, wenn ein Verknüpfungsaufruf gefunden wird, nur der Aufrufer, der sich in der simulierten Aufrufliste über dem Verknüpfungsaufruf befindet, mit dem angeforderten Berechtigungssatz aktualisiert.

Ein Bestandteil der Ablaufverfolgung des Codepfads ist eine Ablaufverfolgung durch die MSIL (Microsoft Intermediate Language) der einzelnen Methoden, wobei mit der primären Einstiegspunktmethode der Anwendung begonnen wird. Wenn in der MSIL-Ablaufverfolgung bei Methoden imperative Berechtigungssatzaktionen gefunden werden, wird für jede Assembly der folgende Aktualisierungsalgorithmus ausgeführt:

  • Wenn der bei der imperativen Anforderung, dem Verknüpfungsaufruf, der Assertion, bei PermitOnly oder Deny verwendete Berechtigungszustand statisch bestimmt werden kann und dieser definitiv nicht von einem Zustand abhängt, der nur zur Laufzeit verfügbar ist, kann die Auswirkung einer solchen Sicherheitsaktion für Anwendungsassemblys bestimmt und im Hinblick auf die Auswirkungen deklarativer Sicherheitsaktionen auf die Gruppe der mindestens gewährten Berechtigungen aller Assemblys mit einem Profil berechnet werden.

  • Kann der Zustand des bei einer imperativen Sicherheitsaktion verwendeten Berechtigungssatzes nicht statisch bestimmt werden, wird vom uneingeschränkten Zustand der Berechtigung ausgegangen, z. B. uneingeschränkte Sicherheitsberechtigung oder uneingeschränkte Leseberechtigungen für Datei-E/A. In einigen Fällen kann dies dazu führen, dass die für das Ausführen einer Anwendung erforderlichen Berechtigungen zu hoch eingeschätzt werden. Verwenden Sie die -Under-Option, um dieses Standardverhalten zu überschreiben.

  • Wenn mehrere Codepfade durch eine Methode vorhanden sind und einige davon unterschiedliche Anmerkungen zu Sicherheitsaktionen aufweisen, werden die Union der Anforderungen und die Schnittmenge der Assertions verwendet, da das Tool möglicherweise nicht bestimmen kann, welchen der möglichen Codepfade durch eine Methode die Anwendung zur Laufzeit verwenden wird.

Je nach Größe und Komplexität der Assemblys und ihrer Abhängigkeiten benötigt das Tool eventuell einige Minuten, um eine umfassende Analyse durchzuführen.

Beispiele

Sie können die folgenden Beispiele ausführen, indem Sie die Befehle im Fenster SDK-Eingabeaufforderung eingeben und die Dateinamen durch jene in den Beispielen ersetzen.

Der folgende Befehl rekonstruiert alle Cachedateien und schließt Aufruflisten für die mylib.dll-Assembly ein. Er zeigt die Ausgabe im Standard-Viewer für XML-Dateien an.

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

Der folgende Befehl meldet die minimale Berechtigungssandbox, die die myapp.exe-Anwendung zur Ausführung benötigt. Er zeigt die Ausgabe im Standard-Viewer für XML-Dateien an. Die Zieldatei ist myapp.exe, und die abhängigen Dateien sind mydep1.dll und mydep2.dll.

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

Siehe auch

Referenz

.NET Framework-Tools

SDK-Eingabeaufforderung