Compartir a través de


Información general sobre seguridad

El marco de seguridad de la API de servicios web de Windows (WWSAPI) proporciona:

  • Integridad de mensajes, confidencialidad, detección de reproducción y autenticación del servidor mediante la seguridad de transporte.
  • Autenticación de cliente, como la validación de tokens de seguridad, las comprobaciones de confianza y revocación de certificados, etc. mediante la seguridad de los mensajes SOAP o la seguridad de transporte.

El modelo de programación de seguridad

La seguridad está asociada a los canales de comunicación. La protección de un canal consta de los pasos siguientes.

El tiempo de ejecución protege automáticamente los mensajes enviados y recibidos en el canal según la descripción de seguridad proporcionada. Opcionalmente, estos pasos se pueden ajustar especificando una o varias opciones de seguridad para todo el canal en la descripción de seguridad o la configuración de seguridad de enlace en un enlace de seguridad.

La aplicación debe realizar cualquier autorización necesaria de identidades de remitente mediante los resultados de procesamiento de seguridad adjuntos a cada mensaje recibido. Los pasos de autorización no se especifican en la descripción de seguridad, ni los realiza automáticamente el tiempo de ejecución.

Los errores en la descripción de seguridad, como enlaces no admitidos, propiedades o campos inaplicables, faltan propiedades o campos obligatorios o valores de propiedad o campo no válidos, harán que se produzca un error en la creación del canal o del agente de escucha.

Selección de enlaces de seguridad

Al diseñar la seguridad para una aplicación, la decisión principal es la selección de los enlaces de seguridad que se incluirán en la descripción de seguridad. A continuación se muestran algunas instrucciones para elegir enlaces de seguridad adecuados para el escenario de seguridad de una aplicación. Una heurística útil es comprender primero qué tipos de credenciales de seguridad (como certificados X.509, nombre de usuario y contraseñas de dominio de Windows, nombre de usuario y contraseñas definidos por la aplicación) estarán disponibles para la aplicación y, a continuación, elegir un enlace de seguridad que pueda usar ese tipo de credencial.

Canales y seguridad

Como se indicó anteriormente, la seguridad se limita a los canales. Además, las operaciones de canal se asignan a los pasos de seguridad de forma coherente en todos los enlaces de seguridad.

  • Creación de canal: el conjunto de enlaces de seguridad especificados en la descripción de seguridad se valida y permanece fijo para el canal a partir de entonces. También se determina la forma de la pila de canales, incluidos los canales laterales que se van a usar para WS-Trust negociaciones basadas.
  • Canal abierto: se cargan todas las credenciales proporcionadas como parte de los enlaces de seguridad y se establecen sesiones de seguridad. En general, un canal abierto contiene el estado de seguridad "live". La apertura de un canal de cliente también especifica la dirección del punto de conexión del servidor en la que el tiempo de ejecución realizará la autenticación del servidor.
  • Entre el canal abierto y el cierre: los mensajes se pueden enviar y recibir de forma segura durante esta fase.
  • Envío de mensajes: los tokens de contexto de seguridad se obtienen o renuevan según sea necesario y la seguridad se aplica a cada mensaje transmitido según la descripción de seguridad. Los errores que se producen al aplicar la seguridad se devuelven a la aplicación como errores de envío.
  • Recepción de mensajes: la seguridad se comprueba en cada mensaje recibido según la descripción de seguridad. Los errores de comprobación de seguridad de los mensajes se devuelven a la aplicación como errores de recepción. Estos errores por mensaje no afectan al estado del canal ni a las recepciones posteriores. La aplicación puede descartar una recepción con errores y reiniciar una recepción para otro mensaje.
  • Anulación del canal: el canal se puede anular en cualquier momento para detener todas las E/S en el canal. Al anular, el canal pasará a un estado defectuoso y no permitirá más envíos ni recepciones. Sin embargo, el canal todavía puede conservar algún estado de seguridad "activo", por lo que será necesario cerrar un canal posterior para eliminar todo el estado de forma limpia.
  • Cierre del canal: el estado de seguridad creado en la apertura se elimina y se eliminan las sesiones. Los tokens de contexto de seguridad se cancelan. La pila del canal permanece, pero no contiene ningún estado de seguridad "activo" ni credenciales cargadas.
  • Canal gratis: la pila de canales creada en la creación, junto con todos los recursos de seguridad, se libera.

API de seguridad

La documentación de la API para la seguridad se agrupa en los temas siguientes.

Seguridad

Al usar la API para seguridad WWSAPI, las aplicaciones se enfrentan a varios riesgos de seguridad:

Configuración incorrecta accidental

WWSAPI admite una variedad de opciones de configuración relacionadas con la seguridad. Consulte, por ejemplo , WS_SECURITY_BINDING_PROPERTY_ID. Algunas de estas opciones, como WS_SECURITY_BINDING_PROPERTY_ALLOW_ANONYMOUS_CLIENTS permiten que la aplicación reduzca el nivel predeterminado de seguridad proporcionado por los distintos enlaces de seguridad. El uso de estas opciones debe evaluarse cuidadosamente para asegurarse de que no haya vectores de ataque resultantes.

Además, como se ha descrito anteriormente, WWSAPI permite que una aplicación deshabilite deliberadamente ciertos pasos necesarios para proteger completamente un intercambio de mensajes, como permitir deshabilitar el cifrado aunque se transmitan las credenciales de seguridad. Esto puede habilitar determinados escenarios específicos y no debe usarse para la comunicación general. El WS_PROTECTION_LEVEL debe reducirse específicamente para habilitar estos escenarios y las aplicaciones no deben cambiar ese valor a menos que sea absolutamente necesario, ya que, al hacerlo, se deshabilitarán muchas comprobaciones diseñadas para garantizar una configuración segura.

Almacenamiento de información confidencial en memoria

La información confidencial, como las contraseñas, que se almacena en memoria es vulnerable a ser extraída por un atacante con privilegios mediante, por ejemplo, el archivo de página. WWSAPI realiza una copia de las credenciales proporcionadas y cifra esa copia, dejando los datos originales desprotegidos. Es responsabilidad de la aplicación proteger la instancia original. Además, la copia cifrada se descifra brevemente mientras se usa, abriendo una ventana para extraerla.

Denegación de servicio

El procesamiento de seguridad puede consumir recursos significativos. Cada enlace de seguridad adicional aumenta esos costos. WWSAPI anula el procesamiento de seguridad en cuanto se detecta un error de comprobación de seguridad, pero ciertas comprobaciones, como las decisiones de autorización, pueden no tener lugar hasta después de que se haya realizado un trabajo significativo.

Mientras se procesa un mensaje en el servidor, el estado de seguridad se almacena en el montón de mensajes. La aplicación puede limitar el consumo de memoria durante el procesamiento de seguridad reduciendo el tamaño de ese montón a través de WS_MESSAGE_PROPERTY_HEAP_PROPERTIES. Además, algunos enlaces de seguridad como el WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING pueden hacer que el servidor asigne recursos en nombre del cliente. Los límites de esos recursos se pueden configurar mediante los siguientes valores de WS_SECURITY_BINDING_PROPERTY_ID :

  • WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_MAX_PENDING_CONTEXTS
  • WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_MAX_ACTIVE_CONTEXTS
  • WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_RENEWAL_INTERVAL
  • WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_ROLLOVER_INTERVAL

Establecer esos límites en valores bajos reduce el consumo máximo de memoria, pero puede provocar que se rechacen clientes legítimos cuando se alcanza la cuota.