Tengo columnas de precios sensibles que me gustaría actualizar solo a través de un procedimiento almacenado. Me gustaría que todo el código o los intentos manuales de alterar los valores en estas columnas de precios fallen si no está utilizando los procedimientos almacenados diseñados para actualizarlo.
Estoy considerando implementar esto usando disparadores y una tabla de tokens. La idea que estoy considerando es tener una tabla de tokens. los procedimientos almacenados deberán primero insertar valores en la tabla de tokens. Luego actualice las columnas de precios. El activador de actualización verificará si el token existe en la tabla de tokens para la fila actualizada. Si se encuentra, continuaría. Si no se encuentra el token, generará una excepción y hará que la transacción de actualización falle.
¿Hay una buena / mejor manera de implementar esta restricción?
Respuestas:
SQL Server permite permisos a nivel de columna. Solo por ejemplo:
fuente
SampleRole
con ese usuario ...fuente
Si todos sus usuarios tienen el mismo inicio de sesión (ouch, BTW), entonces esta es otra opción
dbo
, entonces ya está cubierto).Los usuarios habituales de la aplicación carecerán de derechos de actualización para esa tabla, por lo que no podrán actualizarla de otra manera.
fuente