我对 SQL 安全不太了解,所以也许有人可以帮助我。我们有一个数据库应用程序,安装后,默认情况下会授予公共角色对数据库中所有表的访问权限。当您创建 SQL 用户时,它会将该用户添加到公共角色,因此新用户将有权访问所有表。
我们需要将第三方 ODBC 应用程序连接到数据库。我们创建了一个从同一数据库中的表中提取数据的视图,并且我们希望该连接只能访问创建的视图。我们决定使用架构来应用安全性,而不是尝试从所有表中删除公共角色。
所有默认表都在 中SCHEMA1
。我们将 放在VIEW
下SCHEMA2
,并创建USERA
拒绝和 授予SELECT
。两者的所有者相同。SCHEMA1
SELECT
SCHEMA2
SCHEMAS
当我使用 Access 测试 ODBC 并尝试打开时VIEW
,收到以下错误
对对象 (SCHEMA1 中的表名) 的 SELECT 权限被拒绝....
我猜是因为我拒绝了SELECT
,SCHEMA1
它保存了 的引用表VIEW
。如果是这样,您如何通过 ODBC 限制仅访问特定表?
发布此内容后,我开始在 Google 上搜索有关从架构中撤销公共角色权限作为一种可能选项的信息,但尚未测试,但也遇到了“应用程序角色”。我还需要多读一点,但想知道这是否是我应该前进的方向。