Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: noviembre 2007
En .NET Framework, la seguridad de acceso a código limita el acceso que el código tiene a los recursos y las operaciones protegidas. Cada aplicación que tenga como destino Common Language Runtime debe interactuar con el sistema de seguridad del motor en tiempo de ejecución. Cuando se ejecuta una aplicación, el motor en tiempo de ejecución la evalúa automáticamente y le concede un conjunto de permisos. En función de los permisos que reciba la aplicación, se ejecuta correctamente o genera una excepción de seguridad.
La configuración de seguridad local de un equipo concreto controla en última instancia los permisos que recibe el código. Dado que esta configuración puede variar de un equipo a otro, nunca se podrá saber con certeza si el código va a recibir los permisos suficientes para ejecutarse. Para obtener más información, vea Conceptos básicos sobre la seguridad de acceso a código.
Permisos de acceso a código
Los objetos de permiso de acceso a código se utilizan para proteger los recursos y las operaciones del uso por parte de usuarios no autorizados. Constituyen una parte fundamental del mecanismo de Common Language Runtime para exigir restricciones de seguridad en el código administrado.
Los permisos de acceso a código permiten a un usuario tener acceso a un recurso protegido, como un archivo, o realizar una acción protegida, como tener acceso a código administrado. Todos los permisos de acceso a código se pueden solicitar mediante código; la concesión de los permisos se determina en tiempo de ejecución. Cada permiso de acceso a código deriva de la clase CodeAccessPermission y por consiguiente los permisos tienen métodos comunes: Assert, Demand, Deny, PermitOnly, IsSubSetOf, Intersect y Union.
Permisos proporcionados por .NET Framework
Esta tabla muestra los permisos de acceso a código que proporciona .NET Framework.
Clase de permiso |
Permite |
|---|---|
Obtener acceso a recursos de entornos alojados en ASP.NET. |
|
Obtener acceso a las clases System.DirectoryServices. |
|
Obtener acceso a los servidores DNS (Sistema de nombres de dominio) en una red. |
|
Leer o escribir en variables de entorno. |
|
Leer o escribir en servicios de registro de eventos. |
|
Leer o escribir en archivos por medio de un cuadro de diálogo Abrir. |
|
Leer o escribir en archivos o directorios. |
|
Leer o escribir en archivos o directorios en almacenamiento aislado. |
|
Obtener acceso a las colas de mensajes a través de las interfaces Message Queuing (también conocidas como MSMQ) administradas. |
|
Obtener acceso a los orígenes de datos ODBC (Conectividad abierta de bases de datos). |
|
Obtener acceso a bases de datos mediante OLE DB. |
|
Obtener acceso a las bases de datos Oracle. |
|
Obtener acceso a contadores de rendimiento. |
|
Obtener acceso a impresoras. |
|
Determinar información sobre un tipo en tiempo de ejecución. |
|
Leer, escribir, crear o eliminar claves y valores del Registro. |
|
Ejecutar, confirmar permisos, llamar en código no administrado, omitir la comprobación y otros derechos relacionados con la seguridad. |
|
Obtener acceso a servicios en ejecución o detenidos. |
|
Realizar o aceptar conexiones en una dirección de transporte. |
|
Obtener acceso a bases de datos de SQL. |
|
Obtener acceso a la funcionalidad de interfaz de usuario. |
|
Realizar o aceptar conexiones en una dirección Web. |
Crear permisos propios
.NET Framework proporciona un conjunto de clases de permiso de acceso a código diseñado para ayudar a proteger un conjunto específico de recursos y operaciones, que se centra en los recursos expuestos por .NET Framework. En la mayoría de los entornos, los permisos de acceso a código integrados son adecuados. No obstante, en algunas situaciones, puede ser útil definir una clase de permiso de acceso a código propia. Para obtener más información, vea Crear permisos de acceso a código propios.
Permisos de identidad
Los permisos de identidad representan características que identifican un ensamblado. Common Language Runtime concede permisos de identidad a un ensamblado cuando se carga, en función de la información que obtiene acerca del mismo. Para obtener más información, vea Permisos de identidad.
Permisos basados en función
Las aplicaciones empresariales suelen proporcionar acceso a datos o recursos basándose en credenciales proporcionadas por el usuario. Normalmente, dichas aplicaciones comprueban la función de un usuario y proporcionan acceso a recursos basándose en dicha función. Common Language Runtime proporciona compatibilidad para la autorización basada en funciones tomando como base una cuenta de Windows o una identidad personalizada. Para obtener más información, vea Seguridad basada en funciones.
Tareas de seguridad
La tabla siguiente muestra tareas asociadas con permisos y seguridad.
Para |
Vea |
|---|---|
Solicitar permiso para tener acceso a código no administrado |
Cómo: Solicitar permiso para obtener acceso a código no administrado |
Solicitar los permisos opcionales |
Cómo: Solicitar permisos opcionales mediante el marcador RequestOptional |
Solicitar permiso para un conjunto de permisos con nombre |
Cómo: Solicitar permiso para un conjunto de permisos con nombre |
Solicitar permisos codificados en XML |
|
Rechazar permisos |
|
Realizar una comprobación imperativa de seguridad |
|
Realizar una comprobación de seguridad declarativa |
|
Reemplazar una comprobación de seguridad |
|
Compartir una biblioteca con código que no es de plena confianza |
Compartir una biblioteca con código que no es de plena confianza |
Imponer la plena confianza en los tipos de un ensamblado AllowPartiallyTrustedCallersAttribute |
Solicitar tipos de plena confianza en un ensamblado AllowPartiallyTrustedCallersAttribute |
Crear objetos WindowsIdentity y WindowsPrincipal |
|
Crear objetos GenericPrincipal y GenericIdentity |
Modelo de directiva de seguridad de .NET Framework
Cinco elementos constituyen el modelo de directiva de seguridad de .NET Framework. Son los siguientes:
Niveles de la directiva de seguridad: empresa, equipo, usuario y dominio de aplicación.
Grupos de códigos, que existen como una jerarquía dentro de los niveles de directiva de empresa, equipo y usuario.
Conjuntos de permisos con nombre asociados a cada grupo de código.
Prueba que proporciona información sobre la identidad del código.
Hosts de dominio de aplicación que proporcionan pruebas sobre el código a Common Language Runtime.
Niveles de la directiva de seguridad
.NET Framework proporciona cuatro niveles de directiva de seguridad para calcular la concesión de permisos a un ensamblado o dominio de aplicación. Cada nivel contiene su propia jerarquía de grupos de código y conjuntos de permiso. El tiempo de ejecución calcula el conjunto de permisos concedidos como la suma de permisos permitidos por todos los niveles que participan en una directiva
Los niveles son los siguientes:
Directiva de empresa. Se aplica a todo el código administrado de la empresa, donde se distribuye un archivo de configuración de empresa.
Directiva de equipo. Se aplica a todo el código administrado del equipo.
Directiva de usuario. Se aplica al código de todos los procesos asociados al usuario actual del sistema operativo cuando se inicie Common Language Runtime.
Directiva de dominio de aplicación. Se aplica al código administrado del dominio de aplicación del host.
Para obtener más información, vea Niveles de la directiva de seguridad.
Grupos de código
Un grupo de código es una agrupación lógica de código que tiene una condición concreta para la pertenencia. Todo código que cumpla la condición de pertenencia se incluye en el grupo. Los grupos de código tienen conjuntos de permisos asociados que se evalúan durante la concesión de la directiva. Para obtener más información, vea Grupos de código.
Conjuntos de permisos con nombre
Un conjunto de permisos con nombre es un conjunto de permisos que los administradores pueden asociar a un grupo de código. Un conjunto de permisos con nombre está formado al menos por un permiso, así como por un nombre y una descripción para el conjunto de permisos. Con un conjunto de permisos específico se pueden asociar varios grupos de código.
Esta tabla muestra los conjuntos de permisos con nombre proporcionados por Common Language Runtime.
Nombre |
Descripción |
|---|---|
Nothing |
Sin permisos (no se puede ejecutar código). |
Execution |
Permiso para ejecutarse, pero no para utilizar recursos protegidos. |
Internet |
Conjunto de permisos de directiva predeterminado, adecuado para contenido de origen desconocido. |
Local Intranet |
Conjunto de permisos de directiva predeterminado establecido en una empresa. |
Everything |
Todos los permisos estándar (integrados) excepto el permiso de omitir la comprobación. |
FullTrust |
Acceso completo a todos los recursos. |
Para obtener más información, vea Conjuntos de permisos con nombre.
Evidencia
Evidencia es la información que Common Language Runtime utiliza para tomar decisiones basándose en la directiva de seguridad. La evidencia indica al tiempo de ejecución que el código tiene una característica determinada y puede incluir directorio de aplicaciones, editor, sitio y dirección URL. Para obtener más información, vea Prueba.
Hosts de dominio de aplicación
Cada aplicación .NET Framework se ejecuta en un dominio de aplicación bajo el control de un host que crea el dominio de aplicación y carga los ensamblados en él. Los dominios de aplicación pueden incluir:
Hosts del explorador. Ejecutan código en el contexto de un sitio Web.
Hosts de diseño personalizado. Crean dominios y cargan ensamblados en los dominios, incluidos ensamblados dinámicos.
Hosts de servidor. Ejecutan código que controla las solicitudes enviadas a un servidor.
Host de Shell. Inician aplicaciones (archivos .exe) desde el shell.
En esta tabla se muestran tareas asociadas con los dominios de aplicación:
Para |
Vea |
|---|---|
Crear un dominio de aplicación |
|
Establecer una directiva de seguridad de dominio de aplicación |
Establecer directivas de seguridad para dominios de aplicación |
Configurar un dominio de aplicación |
|
Llamar a funciones en un dominio de aplicación concreto |
|
Recuperar información de instalación de un dominio de aplicación |
Recuperar información de instalación de un dominio de aplicación |
Descargar un dominio de aplicación. |
Para obtener más información, vea AppDomain, Hosts de dominio de aplicación y Programar con dominios de aplicación.
Vea también
Tareas
Solución de problemas de excepciones de seguridad de acceso a código
Conceptos
Aislamiento por usuario, dominio y ensamblado