Decidir dónde aplicar la seguridad
Los inconvenientes son inherentes a la aplicación de la seguridad. Una base de datos puede ser un lugar natural para poner lógica de seguridad, dado que, en última instancia, los datos son lo más importante que se va a proteger. Sin embargo, si lo hace, tiene implicaciones significativas en el rendimiento. La aplicación de la seguridad en la base de datos puede ser muy costosa, se escala de forma deficiente y es inflexible.
Aplicación de la seguridad en el nivel intermedio
La regla general que se debe seguir con las aplicaciones escalables de varios niveles mediante COM+ es que, siempre que sea posible, debe aplicar seguridad detallada en la aplicación COM+ en el nivel intermedio. Esto le permite aprovechar completamente los servicios escalables proporcionados por COM+. Aplique la autenticación en la base de datos solo cuando sea absolutamente necesario y sopesa completamente las implicaciones de rendimiento de hacerlo.
La situación óptima es poder proteger las tablas de base de datos para que la aplicación COM+ pueda acceder a ellas bajo su propia identidad. La base de datos solo debe autenticar la aplicación COM+ y confiar en ella para autenticar y autorizar correctamente a los clientes que accederán a los datos. Las ventajas de este enfoque son las siguientes:
- Permite la agrupación de conexiones entre todos los clientes, ya que las conexiones son completamente genéricas.
- Por lo general, optimiza el acceso a los datos, a menudo un punto de ahogamiento problemático al escalar aplicaciones.
- Puede minimizar la sobrecarga lógica para aplicar la seguridad, especialmente si se puede usar la seguridad declarativa basada en roles.
- Puede proporcionar una gran flexibilidad en una directiva de seguridad. Puede configurarlo y volver a configurarlo fácilmente, como se describe en Administración de seguridad basada en roles.
Pero, como se describe en Diseño eficaz de roles, aunque los roles se pueden aplicar fácilmente y eficazmente a algunas relaciones de datos de usuario, no son una solución universal para las decisiones de acceso a la seguridad.
Aplicación de la seguridad en la base de datos
A pesar de la preferencia de aplicar la seguridad en el nivel intermedio, hay varias razones para aplicar la seguridad en la base de datos, como las siguientes:
- No tienes una opción, quizás por motivos heredados o quizás porque la decisión no está en tus manos.
- Una amplia variedad de aplicaciones accede a la base de datos y no se puede configurar su seguridad sobre la base de una sola aplicación.
- Una base de datos se puede proteger de forma predecible. Si mantiene los datos críticos para la empresa en una base de datos, puede dibujar un carro estrecho alrededor de ella y ayudar a controlar quién llega a verlo.
- La autenticación de clientes originales en la base de datos permite el registro detallado de quién ha hecho lo que en la base de datos.
- Algunos datos están enlazados innatamente a usuarios concretos y la lógica de tomar decisiones de acceso extremadamente específicas podría llevarse a cabo de forma más eficaz en la propia base de datos, cerca de los datos.
Si tiene el lujo de diseñar la seguridad de la base de datos y la aplicación COM+ conjuntamente, la mayoría de estos problemas pertenecen a las características de los propios datos y su relación con los usuarios que acceden a ellos. Con los datos a los que pueden acceder categorías predecibles de usuarios, es eficaz controlar el acceso en el nivel intermedio mediante roles. Con los datos que se enlazan intrincadamente a clases muy pequeñas de usuarios, esas relaciones a menudo deben expresarse con los propios datos y, por lo tanto, debe aplicar cierta seguridad en la base de datos.
Implicaciones de rendimiento de la aplicación de la seguridad en la base de datos
Si autentica o autoriza a los usuarios en la base de datos, la identidad de usuario debe propagarse a través de la base de datos para admitirlo. Si la base de datos confía en la aplicación de nivel intermedio para hacerlo, es posible pasar la información de seguridad del usuario en parámetros. De lo contrario, la llamada a la base de datos debe realizarse bajo la identidad del usuario, lo que significa que la aplicación de servidor debe suplantar al cliente. Esto puede tener implicaciones en el rendimiento, como las siguientes:
- Suplantar al cliente puede ser mucho más lento que realizar la llamada directamente bajo la identidad de la aplicación. Para obtener más información, consulte Suplantación de cliente y Delegación.
- No se puede agrupar una conexión de base de datos realizada bajo una identidad de usuario específica.
- Agregar lógica en la propia base de datos corre el riesgo de crear un cuello de botella de escalado.
Temas relacionados