考虑到您可以在查询中使用选择表达式
select table1.ID, (select table2.salary, table1.id from table2 inner join...
from table1
并检索您不必在from语句中引用的数据,就企业DBMS中的安全性而言,这是如何防范的?表权限是否有效,以便您不允许对它们进行任何引用(因为这种情况它不在您的from语句中)
答案 0 :(得分:2)
您可以强制执行列级权限。因此,如果请求来自选择列表,子查询,存在等等,则无关紧要:
DENY SELECT ON OBJECT::dbo.table2(salary) TO [user/role];
您还可以完全拒绝基础表上的选择,并创建一个仅显示您希望用户看到的列的视图。或者允许它们执行仅选择子集的存储过程。