Seguridad de acceso al código

Code Access Security (CAS), en el marco Microsoft .NET , es la solución de Microsoft para evitar que el código no confiable realice acciones privilegiadas. Cuando el CLR carga un ensamblado , obtendrá evidencia del ensamblado y la usará para identificar el grupo de código al que pertenece el ensamblado. Un grupo de código contiene un conjunto de permisos (uno o más permisos ). El código que realiza una acción privilegiada realizará una demanda de acceso al código que hará que el CLR recorra la pila de llamadas y examine el conjunto de permisos otorgado al ensamblado de cada método en la pila de llamadas. Los grupos de códigos y los conjuntos de permisos los determina el administrador de la máquina que define la política de seguridad. Microsoft considera que CAS es obsoleto y desaconseja su uso. [1] Tampoco está disponible en .NET Core y .NET.

Evidencia

La evidencia puede ser cualquier información asociada con un ensamblado. Las evidencias predeterminadas que utiliza la seguridad de acceso al código .NET son:

  • Directorio de la aplicación: el directorio en el que reside un ensamblaje.
  • Editor: la firma digital del editor del ensamblaje (requiere que el ensamblaje esté firmado mediante Authenticode ).
  • URL : la URL completa desde donde se lanzó el ensamblaje
  • Sitio: el nombre de host de la URL/dominio remoto/VPN.
  • Zona: la zona de seguridad donde reside la asamblea
  • Hash : un hash criptográfico del ensamblaje, que identifica una versión específica.
  • Nombre seguro: una combinación del nombre del ensamblado, la versión y la clave pública de la clave de firma utilizada para firmar el ensamblado. La clave de firma no es un certificado X.509 , sino un par de claves personalizado generado por la herramienta de nombres seguros, SN.EXE o por Visual Studio .

Un desarrollador puede usar evidencia personalizada (la llamada evidencia de ensamblaje), pero esto requiere escribir un ensamblaje de seguridad y en la versión 1.1 [ aclaración necesaria ] de .NET esta función no funciona.

La evidencia basada en un hash del ensamblaje se obtiene fácilmente en código. Por ejemplo, en C# , la evidencia se puede obtener mediante la siguiente cláusula de código:

este . GetType () . Ensamblado . Evidencia

Política

Una política es un conjunto de expresiones que utiliza evidencia para determinar la pertenencia a un grupo de códigos. Un grupo de códigos otorga un conjunto de permisos para los ensambles dentro de ese grupo. Existen cuatro políticas en .NET:

  • Empresa: política para una familia de máquinas que forman parte de una instalación de Active Directory .
  • Máquina: política para la máquina actual.
  • Usuario: política para el usuario conectado.
  • AppDomain: política para el dominio de la aplicación que se ejecuta.

Las primeras tres políticas se almacenan en archivos XML y se administran mediante la herramienta de configuración .NET 1.1 (mscorcfg.msc). La política final se administra mediante código para el dominio de aplicación actual.

La seguridad de acceso al código presentará la evidencia de un ensamblaje a cada política y luego tomará la intersección (es decir, los permisos comunes a todos los conjuntos de permisos generados) como los permisos otorgados al ensamblaje.

De manera predeterminada, las políticas Enterprise, User y AppDomain otorgan plena confianza (es decir, permiten que todos los conjuntos tengan todos los permisos) y la política Machine es más restrictiva. Dado que se toma la intersección, esto significa que el conjunto de permisos final está determinado por la política Machine.

Tenga en cuenta que el sistema de políticas se ha eliminado en .NET Framework 4.0. [2]

Grupo de códigos

Los grupos de códigos asocian una pieza de evidencia con un conjunto de permisos con nombre. El administrador utiliza la herramienta de configuración de .NET para especificar un tipo particular de evidencia (por ejemplo, Sitio) y un valor particular para esa evidencia (por ejemplo, www.misitio.com) y luego identifica el conjunto de permisos que se le otorgará al grupo de códigos.

Demandas

El código que realiza alguna acción privilegiada solicitará uno o más permisos. La solicitud hace que el CLR recorra la pila de llamadas y, para cada método, el CLR se asegurará de que los permisos solicitados se encuentren en los permisos otorgados al ensamblado del método. Si no se concede el permiso, se genera una excepción de seguridad . Esto evita que el código descargado realice acciones privilegiadas. Por ejemplo, si se descarga un ensamblado de un sitio que no es de confianza, el ensamblado no tendrá ningún permiso de E/S de archivo y, por lo tanto, si este ensamblado intenta acceder a un archivo, generará una excepción que impedirá la llamada.

Referencias

  1. ^ Política de seguridad de acceso al código Compatibilidad y migración
  2. ^ Resumen de los cambios en la seguridad del acceso al código
  • Comprensión de la seguridad .NET
  • Herramienta de política de seguridad de acceso al código (Caspol.exe)
Obtenido de "https://es.wikipedia.org/w/index.php?title=Seguridad_de_acceso_al_código&oldid=1128692000"