Definición: ¿Qué significa Code Access Security (CAS)?
La seguridad de acceso al código (CAS) es un mecanismo de seguridad mediante el cual Common Language Runtime (CLR) del marco .NET puede restringir el código administrado para ejecutar operaciones con un conjunto limitado de permisos.
CAS hace cumplir las políticas de seguridad en el marco .NET al evitar el acceso no autorizado a los recursos y operaciones protegidos. A diferencia de los métodos de seguridad tradicionales, donde las credenciales de usuario se obtienen del usuario, CAS está diseñado para abordar los problemas que se enfrentan al obtener código de fuentes externas, que contienen errores y vulnerabilidades. Estos errores y vulnerabilidades pueden hacer que el sistema de un usuario sea vulnerable a códigos maliciosos, que pueden estar realizando tareas sin que el usuario lo sepa. CAS realmente conoce y permite solo aquellas operaciones que el código de un usuario dado puede y no puede realizar. Esta función es aplicable a todo el código administrado destinado a CLR.
CAS proporciona seguridad basada en evidencia construida en una capa por encima de la seguridad proporcionada por el sistema operativo Windows. Mientras que Windows se basa en los permisos del usuario, CAS se basa en la evidencia del ensamblaje. El ensamblado contiene los permisos definidos en la política de seguridad y forma la base para permitir que el código ejecute las acciones necesarias.
Techinfo explica Code Access Security (CAS)
CAS se basa en los siguientes elementos, entre otros:
- Permisos: estos son los derechos básicos necesarios para acceder a un recurso protegido o ejecutar una operación protegida.
- Conjunto de permisos: este es un conjunto de permisos, como "plena confianza", "nada", "Internet", "intranet local" y otros.
- Grupo de código: esta es una agrupación lógica de código con una condición específica para la membresía, como LocalIntranet_zone e Internet_zone.
- Evidencia: esta es información relacionada con el ensamblaje, como el directorio de la aplicación, el editor, la URL y la zona de seguridad.
- Política de seguridad: es un conjunto de reglas configuradas por un administrador para determinar los permisos otorgados para un código expresado jerárquicamente en cuatro niveles: empresa, máquina, usuario y dominio de aplicación.
La operación privilegiada de ejecución de código exige el CLR para uno o más permisos. El permiso real se calcula utilizando la unión de permisos establecidos en los grupos de códigos y luego una intersección a nivel de política. El CLR asegura que los permisos exigidos se encuentran en los permisos otorgados del método de ese ensamblaje. Si no se otorga el permiso, se lanzará una excepción de seguridad.
CAS proporciona dos modos de seguridad para definir permisos para el código:
- La seguridad declarativa se implementa mediante la definición de atributos de seguridad a nivel de ensamblado, nivel de clase o nivel de miembro. El modo declarativo se usa cuando las llamadas deben evaluarse en tiempo de compilación.
- La seguridad imperativa utiliza llamadas a métodos en tiempo de ejecución para crear instancias de clases de seguridad. El modo imperativo se utiliza cuando es necesario evaluar las llamadas en tiempo de ejecución.
CAS tiene limitaciones, incluido el mal funcionamiento de una aplicación movida a otro sistema cuando la política de seguridad es diferente. Además, no hay control sobre el código no administrado y no hay control del desarrollo de aplicaciones para satisfacer las necesidades de diferentes escenarios de configuración de seguridad en los sistemas de los usuarios.
Para usar de manera efectiva la tecnología de seguridad detallada de CAS, los desarrolladores deben escribir código de tipo seguro, usar sintaxis declarativa o imperativa según el contexto, solicitar permisos desde el tiempo de ejecución para que se ejecute el código y usar bibliotecas seguras.