我经常看到 VIEW 的一个目的是提高安全性:允许某些用户访问基础表,其他用户只能访问派生视图。考虑到这一点,我设计了几个视图,为外部用户提供受限数据集。
听起来很好,但实际上这并不起作用。在我授予一个视图的 SELECT
权限之后,用户无法访问它,除非我也授予所有基础对象的 SELECT
权限。存储过程也是同样的情况。最终结果是无效的,因为我仍然必须将敏感数据的访问权限授予给错误的用户,而且令人烦恼的是容易忘记一个对象,用户会回来抱怨视图"无法工作"。
是否有一种方法可以授予视图或存储过程的 SELECT
权限,而不必同时暴露底层对象?