Crear permisos de acceso a código 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. Estas clases de permiso se describen brevemente en el tema Permisos y, con más detalle, en la documentación de referencia de cada clase de permiso. 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. En este tema se explica cuándo, por qué y cómo se definen las clases de permiso de acceso a código personalizadas.

Si va a definir un componente o una biblioteca de clases con acceso a un recurso que no está cubierto por las clases de permiso integradas pero necesita protección contra código no autorizado, deberá considerar la posibilidad de crear una clase de permiso de acceso a código personalizada. Si desea poder realizar peticiones declarativas para el permiso personalizado, deberá definir también una clase de atributo para el permiso. Al proporcionar estas clases y realizar peticiones del permiso desde dentro de la biblioteca de clases, el motor en tiempo de ejecución puede impedir que código no autorizado obtenga acceso a ese recurso y se permite que un administrador configure los derechos de acceso.

Hay otras situaciones en las que un permiso personalizado puede ser apropiado. Cuando una clase de permiso de acceso a código integrada protege un recurso pero no controla suficientemente el acceso a dicho recurso, puede que sea necesario un permiso de acceso a código personalizado. Por ejemplo, puede que una aplicación utilice registros de personal, almacenándose cada registro de empleado en un archivo independiente; en ese caso, el acceso de lectura y escritura puede controlarse de manera independiente para los distintos tipos de datos de los empleados. Una herramienta de administración interna podría tener autorización para leer determinadas secciones del archivo de personal de un empleado, pero no para modificarlas. De hecho, puede que incluso no tenga permiso para leer algunas de ellas.

Los permisos de acceso a código personalizados resultan también útiles cuando existe un permiso integrado que no está definido de forma que le permita proteger correctamente el recurso. Por ejemplo, puede darse el caso de que exista funcionalidad de interfaz de usuario, como la capacidad de crear menús, que necesite protección pero no la reciba de la clase UIPermission integrada. En ese caso, se puede crear un permiso personalizado para proteger la capacidad de crear menús.

Siempre que sea posible, se debe evitar que los permisos se superpongan. Tener más de un permiso para proteger un recurso plantea un problema importante a los administradores, que deben asegurarse de que tratan correctamente todos los permisos superpuestos cada vez que configuran los derechos de acceso a ese recurso.

Para implementar un permiso de acceso a código personalizado, es preciso seguir los procedimientos que se exponen a continuación, algunos de los cuales son opcionales. Cada procedimiento se describe en un tema independiente.

  1. Diseñar la clase Permission.

  2. Implementar las interfaces IPermission e IUnrestrictedPermission.

  3. Implementar la interfaz ISerializable si es necesario para el rendimiento o para admitir tipos de datos especiales.

  4. Controlar la codificación y descodificación XML.

  5. Agregar compatibilidad con la seguridad declarativa mediante la implementación de una clase Attribute.

  6. Requerir un permiso personalizado para un permiso cuando corresponda.

  7. Actualizar la directiva de seguridad para que reconozca el permiso personalizado.

Vea también

Referencia

FileIOPermission Class
UIPermission Class
IPermission Interface
IUnrestrictedPermission Interface
ISerializable Interface

Conceptos

Permisos de seguridad
Diseñar un permiso
Agregar compatibilidad con la seguridad declarativa
Requerir un permiso personalizado
Actualizar la directiva de seguridad

Otros recursos

Seguridad de acceso a código
Extender metadatos mediante atributos