Suplantación y delegación de cliente

En algunas circunstancias, una aplicación de servidor debe presentar la identidad de un cliente a los recursos a los que accede en nombre del cliente, normalmente para hacer que las comprobaciones de acceso o la autenticación se realicen en la identidad del cliente. En cierta medida, el servidor puede actuar bajo la identidad del cliente, una acción denominada suplantar al cliente.

La suplantación es la capacidad de un subproceso para ejecutarse en un contexto de seguridad diferente al del proceso que posee el subproceso. El subproceso de servidor usa un token de acceso que representa las credenciales del cliente y, con esto, puede acceder a los recursos a los que el cliente puede acceder.

El uso de la suplantación garantiza que el servidor pueda hacer exactamente lo que el cliente puede hacer. El acceso a los recursos puede estar restringido o expandido, en función de lo que el cliente tenga permiso para hacer.

Puede optar por que un servidor suplanta a un cliente al conectarse a una base de datos para que la base de datos pueda autenticarse y autorizar al cliente por sí mismo. O bien, si la aplicación accede a los archivos protegidos con un descriptor de seguridad y para permitir que el cliente obtenga acceso autorizado a la información de estos archivos, la aplicación puede suplantar al cliente antes de acceder a los archivos.

Cómo implementar la suplantación

La suplantación requiere la participación tanto del cliente como del servidor (y, en algunos casos, de los administradores del sistema). El cliente debe indicar su voluntad de permitir que el servidor use su identidad y el servidor debe asumir explícitamente la identidad del cliente mediante programación. Para obtener más información, consulte los temas Requisitos del lado cliente para suplantación y Requisitos del lado servidor para la suplantación.

Requisitos administrativos para la suplantación de Delegate-Level

Para usar eficazmente la forma más eficaz de suplantación, delegación, que es la suplantación de los clientes a través de la red, las cuentas de usuario de cliente y servidor deben estar configuradas correctamente en el Servicio de Active Directory para admitirla (además de la autoridad de concesión de clientes para realizar la suplantación de nivel delegado), de la siguiente manera:

  • La identidad del servidor debe marcarse como "De confianza para la delegación" en el servicio de Active Directory.
  • La identidad del cliente no debe marcarse como "La cuenta es confidencial y no se puede delegar" en el servicio de Active Directory.

Estas características de configuración proporcionan al administrador de dominio un alto grado de control sobre la delegación, lo que es deseable, dada la cantidad de confianza (y, por lo tanto, el riesgo de seguridad). Para obtener más información sobre la delegación, consulte Delegación y suplantación.

Ocultación

Junto con la autoridad que un cliente concede a un servidor a través del nivel de suplantación, la funcionalidad de ocultación del servidor determina en gran medida cómo se comportará la suplantación. El ocultamiento afecta a qué identidad presenta realmente el servidor cuando realiza llamadas en nombre del cliente, su propia o la del cliente. Para obtener más información, consulte Cloaking.

Implicaciones de rendimiento

La suplantación puede afectar significativamente al rendimiento y al escalado. Por lo general, es más caro suplantar a un cliente en una llamada que para realizar la llamada directamente. A continuación se muestran algunos de los problemas que se deben tener en cuenta:

  • La sobrecarga computacional de pasar la identidad en patrones complicados, especialmente si está habilitada la ocultación dinámica.
  • La complejidad general de aplicar la comprobación de seguridad redundante en numerosos lugares, en lugar de simplemente centralmente en el nivel intermedio.
  • Los recursos, como las conexiones de base de datos, cuando se abren suplantando a un cliente, no se pueden reutilizar en varios clientes, un obstáculo muy grande para escalar bien.

A veces, la única solución eficaz a un problema es usar la suplantación, pero esta decisión debe ser cuidadosamente ponderada. Para obtener más información sobre estos problemas, consulte Seguridad de aplicaciones de varios niveles.

Componentes en cola

Los componentes en cola no admiten la suplantación. Cuando un cliente realiza una llamada a un objeto en cola, la llamada se realiza realmente a la grabadora, que lo empaqueta como parte de un mensaje al servidor. A continuación, el agente de escucha lee el mensaje de la cola y lo pasa al reproductor, que invoca el componente de servidor real y realiza la misma llamada de método. Por lo tanto, cuando el servidor recibe la llamada, el token de cliente original no está disponible a través de la suplantación. Sin embargo, la seguridad basada en roles todavía se aplica y la seguridad mediante programación con la interfaz ISecurityCallContext funcionará. Para obtener más información, consulte Seguridad de componentes en cola.

Autenticación de cliente

Seguridad de aplicaciones de biblioteca

Seguridad de aplicaciones de niveles múltiples

Seguridad de componentes mediante programación

Administración de seguridad basada en roles

Uso de la directiva de restricción de software en COM+