Strumento di elaborazione delle autorizzazioni (Permcalc.exe)
Aggiornamento: novembre 2007
Lo strumento di determinazione del set minimo di concessioni (Permcalc.exe) consente di stimare il numero di chiamanti delle autorizzazioni cui concedere accesso ai punti di ingresso di un assembly. Questo è un nuovo strumento di .NET Framework versione 2.0 ed è destinato agli utenti esperti.
PermCalc [options] assemblyName [assemblyDependencyName…]
Parametri
Opzione |
Descrizione |
---|---|
-CleanCache |
Ricostruisce tutti i file di cache. |
-HostProtection |
Fornisce informazioni sulle categorie protette di HostProtectionAttribute. |
-Internet |
Nei casi in cui non è possibile determinare le autorizzazioni esatte, utilizza le autorizzazioni dell'area Internet a scopo di valutazione. L'impostazione predefinita prevede una sovrastima mediante l'utilizzo di uno stato di autorizzazione senza restrizioni in cui non è possibile determinare i valori delle autorizzazioni. |
-Out fileName |
Indirizza l'output a fileName. Il valore predefinito è assemblyName.PermCalc.xml oppure sandbox.PermCalc.xml se viene specificata l'opzione -Sandbox. |
-Sandbox |
Riporta la sandbox di autorizzazioni minime in cui è possibile eseguire un'applicazione in sostituzione delle autorizzazioni richieste dai chiamanti del punto di ingresso. |
-Show |
Consente di visualizzare il file di output al termine dell'operazione. |
-Stacks |
Include stack di chiamate nell'output in modo da visualizzare l'origine delle richieste di autorizzazione. |
-Under |
Nei casi in cui non è possibile determinare le autorizzazioni esatte, cerca di sottostimare le autorizzazioni. L'impostazione predefinita prevede una sovrastima quando non è possibile determinare i valori delle autorizzazioni. |
-? |
Visualizza le informazioni relative all'uso |
Argomento |
Descrizione |
---|---|
assemblyName |
Assembly per il quale calcolare le autorizzazioni. |
assemblyDependencyName |
Assembly da cui dipende assemblyName. |
Note
Lo strumento di determinazione del set minimo di concessioni consente di calcolare il set minimo di autorizzazioni necessarie per eseguire un'applicazione mediante l'esame di tutti i percorsi di codice applicabili di tutti gli assembly dell'applicazione e delle dipendenze. Lo strumento restituisce un set di autorizzazioni per ciascun assembly dell'applicazione.
A partire dal punto di ingresso dell'applicazione, lo strumento analizza tutti i percorsi del codice in tutti gli assembly dell'applicazione e nelle librerie condivise e di sistema chiamate dall'applicazione. Lo strumento gestisce quindi uno stack di chiamate simulato contenente tutti gli assembly inclusi nell'analisi dei percorsi del codice. In ogni analisi dei percorsi viene verificata la presenza di richieste dichiarative, richieste di collegamento e modificatori di percorso stack dichiarativi. Poiché lo stato di tutte le autorizzazioni utilizzate in azioni di sicurezza dichiarativa deve essere noto in fase di compilazione, è possibile calcolare con esattezza gli effetti di tutte le azioni di sicurezza dichiarativa sugli assembly dell'applicazione. Se, ad esempio, viene utilizzata una richiesta dichiarativa, il set minimo di autorizzazioni concesse per ciascun assembly dello stack di chiamate in tale punto viene aggiornato con il set di autorizzazioni richieste. Se nello stack di chiamate simulato viene individuata un'asserzione dichiarativa, per tutti gli assembly che precedono l'asserzione nello stack di chiamate verrà aggiornata solo l'intersezione tra il set di autorizzazioni asserite e il set di autorizzazioni richieste. Analogamente, se viene individuata una richiesta di collegamento, nello stack di chiamate simulate solo il chiamante che precede il punto della richiesta verrà aggiornato con il set di autorizzazioni richieste.
L'analisi dei percorsi del codice corrisponde in parte a un'analisi di ciascun metodo eseguita tramite MSIL (Microsoft Intermediate Language), a partire dal metodo principale del punto di ingresso dell'applicazione. Se nell'analisi MSIL dei metodi vengono rilevate azioni relative a set di autorizzazioni imperative, per ciascun assembly viene eseguito il seguente algoritmo di aggiornamento:
Se lo stato di autorizzazione utilizzato nella richiesta imperativa, nella richiesta di autorizzazione, nell'asserzione, in PermitOnly e in Deny può essere determinato in modo statico e si è certi che non dipende da un eventuale stato disponibile solo in fase di esecuzione, l'effetto di tale azione di sicurezza sugli assembly dell'applicazione può essere determinato e viene calcolato per gli effetti delle azioni di sicurezza dichiarative sul set minimo di autorizzazioni concesse di tutti gli assembly analizzati.
Se non è possibile determinare in modo statico lo stato del set di autorizzazioni utilizzate in un'azione di sicurezza imperativa, viene considerato lo stato senza restrizioni dell'autorizzazione, ad esempio l'autorizzazione di sicurezza o le autorizzazioni di lettura IO senza restrizioni. In alcuni casi tale comportamento può implicare una sovrastima delle autorizzazioni necessarie per l'esecuzione di un'applicazione. Per eseguire l'override di questo comportamento predefinito, utilizzare l'opzione -Under.
Se in un metodo sono presenti più percorsi del codice e per alcuni sono disponibili annotazioni di azioni di sicurezza diverse, verranno utilizzate l'unione delle richieste e l'intersezione delle asserzioni, poiché lo strumento potrebbe non essere in grado di determinare quale dei possibili percorsi del codice nell'ambito di un metodo verrà accettato dall'applicazione in fase di esecuzione.
A seconda delle dimensioni e della complessità degli assembly e delle relative dipendenze, è possibile che per un'analisi completa con questo strumento siano richiesti diversi minuti.
Esempi
Per eseguire gli esempi riportati di seguito, digitare i comandi nella finestra Prompt dei comandi di SDK, specificando i nomi dei file in uso al posto di quelli degli esempi.
Il seguente comando consente di ricostruire tutti i file di cache e di includere gli stack di chiamate per l'assembly mylib.dll. L'output viene visualizzato nel visualizzatore predefinito dei file XML.
Permcalc.exe -cleancache -stacks -show mylib.dll
Il seguente comando riporta la sandbox delle autorizzazioni minime necessarie per l'esecuzione dell'applicazione myapp.exe. L'output viene visualizzato nel visualizzatore predefinito dei file XML. Il file di destinazione è myapp.exe e i file dipendenti sono mydep1.dll e mydep2.dll.
Permcalc.exe -sandbox -show myapp.exe mydep1.dll mydep2.dll