涉及 Sys 表的安全问题

Lum*_*mpy 4 security sql-server-2008-r2

我们有一个应用程序用户,该用户已获得对相应数据库的读写权限。默认情况下,该用户可以查询 sys 表。我还听说,有时此用户需要能够获取数据库中存在的表和列的列表。让用户对 sys 表具有读访问权限是否存在任何安全风险?

Rem*_*anu 7

所有用户都可以访问 sys 表。授予对数据库的读访问权限与访问 sys 表是正交的。系统目录(即 sys 视图和表)具有内置的安全性,您不能授予、拒绝或撤销对它们的读取权限。系统目录中实体的可见性源自授予实体本身的权限,而不是授予系统目录的权限。举个例子,用户可以看到 sys.tables 中的一行,因为对该表具有 VIEW DEFINITION 权限。

这在 MSDN 中有 laso 解释:

目录视图中元数据的可见性仅限于用户拥有或用户已被授予某些权限的安全对象。有关更多信息,请参阅元数据可见性配置