use*_*372 7 sql-server-2008 sql-server
我想我需要一些关于 SQL Server 安全性的指针。我试图限制我们的一些最终用户访问表上的某些列(即 SSN)。
我以为我可以使用列级安全性来限制对列的访问。这成功地阻止了用户直接访问该表,但令我惊讶的是他们仍然可以通过访问该表的视图访问这些列。
我遵循了这里的提示:http : //www.mssqltips.com/sqlservertip/2124/filtering-sql-server-columns-using-column-level-permissions/ 这些非常有帮助,但是当我最后创建一个视图时,默认情况下实习生能够访问该列
我读过视图是实现此目的的最佳方式,但我真的不想修改所有视图和遗留前端应用程序。我宁愿只在表上限制它一次,如果视图尝试访问该列,它就会失败。
这是可能的还是我误解了 SQL Server 中的安全性如何工作?
列级安全性不是这样工作的。我知道没有任何机制可以全局拒绝给定用户访问特定列。GRANT/DENY 仅适用于与给定对象结合的特定语句,如 SELECT、UPDATE 等。
因此,在您的情况下,如果您删除了对表 Y 上的列 X 的 SELECT 访问权限,用户仍然可以愉快地在该表上执行“select *”视图,因为该视图是不同的对象,并且不受此安全设置的影响!
好消息是您还可以在视图上使用列权限。它的工作方式与表相同,但您必须对包含 SSN 列的每个视图设置权限。
归档时间: |
|
查看次数: |
17540 次 |
最近记录: |