Información general acerca de la administración de directivas de seguridad
Actualización: noviembre 2007
El sistema de seguridad de .NET Framework está regido por un conjunto de reglas configurable denominado directiva de seguridad. Esta directiva permite al usuario final o al administrador ajustar los valores que determinan a qué recursos puede tener acceso el código y, en última instancia, decidir qué código se puede ejecutar.
Por ejemplo, supongamos que es administrador de una empresa y no confía en el software procedente de una compañía concreta. Imaginemos que dicha compañía produce software que gusta a los empleados, pero origina más tráfico en la red o hace que las estaciones de trabajo sean inestables. El administrador puede establecer una directiva de seguridad de empresa que restrinja el acceso que tiene el software con un nombre criptográficamente seguro (el identificador único de un programa) a los recursos de su equipo. También puede configurar una directiva que impida por completo la ejecución de software de ese fabricante.
En este tema se ofrece información general sobre la administración de directivas de seguridad. Para obtener más información, vea Administración de directivas de seguridad.
Evidencia, grupos de código y conjuntos de permisos
El código cuyo destino es Common Language Runtime se implementa en unidades denominadas ensamblados. En tiempo de carga, el motor en tiempo de ejecución examina cada ensamblado buscando evidencia, que es información de identificación sobre el ensamblado (por ejemplo, la firma digital del autor del código y la ubicación en que se origina el código). Basándose en la evidencia, el administrador de seguridad de Common Language Runtime asigna el ensamblado a un grupo de código que se basa en la directiva de seguridad. Los grupos de código se definen para hacer pruebas que buscan formas de evidencia concretas y asociarles conjuntos de permisos. Los ensamblados que pertenecen a un grupo de código reciben los permisos definidos por los conjuntos de permisos asociados. Para obtener más información sobre evidencia, grupos de código y conjuntos de permisos, vea Modelo de directiva de seguridad.
Permisos
Los permisos son simplemente objetos que representan el derecho de acceso a un recurso protegido. Los permisos se pueden configurar y un único objeto de permiso puede asumir varias formas. Por ejemplo, FileIOPermission representa el derecho de tener acceso, crear, leer, escribir o modificar archivos en el disco local. Para que tenga sentido, un permiso debe contener información específica sobre el tipo de acceso que representa. Se puede configurar un FileIOPermission para que represente el derecho a leer un archivo concreto, leer y escribir en otro o leer los archivos de todo un directorio. Los derechos que representa un permiso y que reciben los ensamblados son totalmente configurables por parte del administrador del equipo. Mientras que las aplicaciones pueden construir y configurar objetos de permisos igual que cualquier otro objeto, sólo la directiva de seguridad puede conceder un permiso a una aplicación. En última instancia, los administradores controlan la concesión de permisos. Para obtener una lista de los permisos normales, vea Permisos de acceso a código.
Niveles de la directiva de seguridad
El modelo de seguridad define cuatro niveles de directiva de seguridad, que corresponden a los distintos escenarios de administración y alojamiento. En la siguiente tabla se describe cada uno de los niveles. El nivel de directiva de empresa es el nivel más alto y el nivel de dominio de la aplicación es el más bajo.
Nivel de directiva |
Descripción |
---|---|
Directiva de empresa |
Definida por administradores de la empresa, que configuran la directiva para los dominios de la empresa. |
Directiva de equipo |
Definida por administradores de equipo, que configuran la directiva para un equipo. |
Directiva de usuario |
Definida por los usuarios, que configuran la directiva para una única cuenta de inicio de sesión. |
Directiva de dominio de aplicación |
Definida por el host del motor en tiempo de ejecución (cualquier aplicación que aloje Common Language Runtime) para establecer la directiva en tiempo de carga. Este nivel no se puede administrar. |
Cada nivel de directiva consta de una jerarquía de grupos de código. Los administradores de cada nivel de directiva pueden crear sus propios grupos de código y conjuntos de permisos asociados. En tiempo de carga, el sistema de seguridad de acceso a código examina todos los niveles de directiva y la concesión de permiso resultante es la intersección de todos los niveles permitidos en cada nivel. Los administradores de un nivel de directiva más bajo no pueden hacer menos restrictiva una decisión de directiva hecha en un nivel más alto, pero pueden endurecer la directiva tanto como deseen. La directiva de seguridad predeterminada reside en el nivel de directiva de equipo.
Los valores de seguridad predeterminados son los siguientes:
Los niveles de usuario y empresa están establecidos en no restringido.
El nivel de equipo contiene los valores y restricciones específicos de la directiva.
Los valores que definen los tres niveles constituyen valores predeterminados.
Tenga en cuenta que los niveles no restringidos de usuario y empresa no significan que se concedan permisos no restringidos a un ensamblado. Puesto que el nivel de equipo define varias restricciones y los tres niveles se consideran en conjunto, la concesión de permisos resultante no es permiso no restringido. Para obtener más información, vea Modelo de directiva de seguridad.
Asignar grupos de código a conjuntos de permisos
La directiva se administra asignando grupos de código a conjuntos de permiso en el nivel o niveles de directiva de los que es responsable un administrador.
Los grupos de código contienen una condición de pertenencia, una asociación a conjuntos de permisos y atributos de grupo de código. La evidencia que presenta un ensamblado al motor en tiempo de ejecución se compara con la condición de pertenencia que se especifica para un grupo de código. Si un ensamblado proporciona evidencia que coincide con la condición de pertenencia, se le permite el acceso al grupo de código. Los administradores identifican y clasifican los ensamblados en grupos de código especificando condiciones de pertenencia y asignando conjuntos de permisos a esos grupos de código. Si se desea, se pueden usar atributos de grupo de código para especificar que no se deben tener en cuenta los niveles de directiva inferiores al actual o que no se debe tener en cuenta ningún grupo de código excepto el actual al asignar permisos.
Los siguientes tipos de evidencia integrada se pueden utilizar como condiciones de pertenencia:
El directorio de instalación de la aplicación
El hash criptográfico del ensamblado
La firma digital del editor del ensamblado
El sitio desde el que se origina el ensamblado
El nombre criptográficamente seguro del ensamblado
La dirección URL desde la que se origina el ensamblado
La zona desde la que se origina el ensamblado
Los permisos de los ensamblados se pueden reducir o aumentar tomando como base cualquier combinación de estas condiciones de pertenencia. Puesto que se pueden crear condiciones de pertenencia personalizadas, la lista anterior no cubre todas las posibilidades. Para obtener más información, vea Evidence.
Vea también
Otros recursos
Procedimientos recomendados para directivas de seguridad