Herramienta Calculadora de permisos (Permcalc.exe)
Actualización: noviembre 2007
La herramienta Minimum Grant Set Determination (Permcalc.exe) se utiliza para calcular los llamadores de permisos a los que se debe conceder acceso a los puntos de entrada públicos de un ensamblado. Esta herramienta es nueva en .NET Framework versión 2.0. Está pensada para su uso por usuarios expertos.
PermCalc [options] assemblyName [assemblyDependencyName…]
Parámetros
Opción |
Descripción |
---|---|
-CleanCache |
Reconstruye todos los archivos de la caché. |
-HostProtection |
Informa sobre las categorías protegidas de HostProtectionAttribute. |
-Internet |
En aquellos casos donde no se pueden determinar los valores exactos de los permisos, se utilizan los permisos de la zona de Internet como una estimación. El valor predeterminado es sobrestimar mediante un estado de permiso no restringido en el que no se pueden determinar los valores de los permisos. |
-Out fileName |
Dirige el resultado a fileName. El valor predeterminado es assemblyName.PermCalc .xml o sandbox.PermCalc.xml si se especifica la opción -Sandbox. |
-Sandbox |
Informa del cajón de arena de permisos mínimo en el que se puede ejecutar una aplicación en lugar de los permisos requeridos por los llamadores del punto de entrada. |
-Show |
Muestra el archivo de resultados cuando ha finalizado. |
-Stacks |
Incluye las pilas de llamadas en el resultado para mostrar el origen de las demandas de permisos. |
-Under |
En aquellos casos donde no se pueden determinar los valores de permiso exactos, intenta subestimar los permisos. El valor predeterminado es sobrestimar cuando no se pueden determinar los valores de permiso. |
-? |
Muestra información de uso. |
Argumento |
Descripción |
---|---|
assemblyName |
El ensamblado para el que se calculan los permisos. |
assemblyDependencyName |
Un ensamblado del que depende assemblyName. |
Comentarios
La herramienta Minimum Grant Set Determination calcula el conjunto de permisos mínimos necesarios para ejecutar una aplicación examinando todas las rutas de código aplicables de todos los ensamblados de la aplicación y ensamblados de dependencias. La herramienta devuelve un conjunto de permisos por ensamblado de aplicación.
Comenzando en el punto de entrada de la aplicación, la herramienta realiza el seguimiento de todas las rutas de código a través de todos los ensamblados de aplicación así como de las bibliotecas del sistema y compartidas llamadas desde la aplicación. La herramienta mantiene una pila de llamadas simulada que contiene todos los ensamblados involucrados en el seguimiento de la ruta de código. En cada seguimiento de ruta de código, la herramienta comprueba la presencia de demandas declarativas, peticiones de vínculo y los modificadores de recorrido de pila declarativos. Como todos los estados de permisos utilizados en acciones de seguridad declarativas deben conocerse en tiempo de compilación, los efectos de todas las acciones de seguridad declarativas en los ensamblados de aplicación pueden calcularse exactamente. Por ejemplo, si se utiliza una demanda declarativa, el conjunto de permisos mínimo concedido para cada ensamblado en la pila de llamadas en ese punto se actualiza con el conjunto de pedidos demandado. Si se encuentra una aserción declarativa en la pila de llamadas simulada, sólo se actualiza la intersección entre el conjunto de permisos declarados y el conjunto de permisos demandados para todos los ensamblados que se encuentren sobre la aserción en la pila de llamadas. De igual forma, si se encuentra una demanda de vínculo, sólo se actualiza el llamador de la pila de llamadas simulada sobre el punto de la demanda de vínculos con el conjunto de permisos solicitados.
Parte del seguimiento de la ruta de código es un seguimiento a través del lenguaje intermedio de Microsoft (MSIL) de cada método, comenzando con el método de punto de entrada de la aplicación. Si se encuentran las acciones del conjunto de permisos imperativos en el método de seguimiento de MSIL, se ejecuta entonces el algoritmo de actualización siguiente para cada ensamblado:
Si el estado de permisos utilizado en la demanda imperativa, demanda de vínculo, aserción, sólo permiso o negación se puede determinar estáticamente, y es seguro que no dependerá de ningún estado disponible en tiempo de ejecución, el efecto en este caso de esta acción de seguridad en los ensamblados de la aplicación se puede determinar y calcular para los efectos de las acciones de seguridad declarativas en el conjunto mínimo de permisos concedidos de todos los ensamblados cuyo perfil se haya generado.
Si el estado del conjunto de permisos utilizado en una acción de seguridad imperativa no se puede determinar estáticamente, en este caso se supone el estado no restringido del permiso, por ejemplo, un permiso de seguridad no restringido o permisos de lectura de E/S de archivos no restringidos. En algunas instancias, esto puede conducir a una sobrestimación de los permisos requeridos para que una aplicación se pueda ejecutar. Utilice la opción -Under para reemplazar este comportamiento predeterminado.
Si hay varias rutas de código a través de un método y algunas tienen diferentes notaciones de acciones de seguridad, en este caso se utiliza la unión de las demandas y la intersección de las aserciones, porque es posible que la herramienta no pueda determinar cuáles de las posibles rutas de código a través de un método tomará la aplicación en tiempo de ejecución.
Dependiendo del tamaño y complejidad de los ensamblados y sus dependencias, la herramienta podría tardar varios minutos en realizar un análisis en profundidad.
Ejemplos
Puede ejecutar los ejemplos siguientes escribiendo los comandos en la ventana Símbolo del sistema de SDK, sustituyendo los nombres de archivo por lo de los ejemplos.
El comando siguiente reconstruye todos los archivos de la caché e incluye las pilas de llamadas para el ensamblado mylib.dll. Muestra el resultado en el visor predeterminado para los archivos XML.
Permcalc.exe -cleancache -stacks -show mylib.dll
El comando siguiente crea un informe del cajón de arena mínimo de permisos que la aplicación myapp.exe necesita ejecutar. Muestra el resultado en el visor predeterminado para los archivos XML. El archivo de destino es myapp.exe y los archivos dependientes son mydep1.dll y mydep2.dll.
Permcalc.exe -sandbox -show myapp.exe mydep1.dll mydep2.dll