【问题标题】:Creating a SQL Server user with permission to read one view and nothing else - but he can see system views and procedures?创建一个 SQL Server 用户有权读取一个视图而没有其他权限 - 但他可以查看系统视图和过程?
【发布时间】:2012-04-06 11:08:45
【问题描述】:

我的公司聘请了一名承包商为我们做一个小项目,他需要从我们主数据库 (SQL Server 2005) 的一个视图中选择数据。

我想为他创建一个锁定的SQL Server 登录名,仅从“他的”视图中获得SELECT 的权限......而没有别的。

所以我在服务器上创建了一个新用户,然后我只给了他一个视图的权限:

grant select on SpecialView to SpecialUser;

基本上,这是可行的——他看不到我们的任何表和存储过程,也看不到任何视图,除了“他的”视图。

但是:

  • 他可以访问所有系统视图
  • 他可以访问所有系统存储过程。

显然他的权限被自动锁定(sys.objects 只显示他有权限的对象,sp_who 只显示他自己的进程等等)。

所以,我的问题是:

是否可以在不访问系统视图和存储过程的情况下创建用户?
(如果可以,我做错了什么?)

或者有什么原因导致即使锁定的用户也需要访问系统视图和存储过程?

编辑:
kevchadders,用户无权访问 master、model 或 msdb - 只能访问具有他应该看到的视图的数据库。

但是,要明确一点:用户可以看到的系统视图/进程在“他的”视图所在的数据库中......不在主数据库中。 所以我不能禁用他的所有访问权限,因为他需要从同一个数据库中的一个视图中进行选择。
关键是,即使我明确地为他应该看到的单个视图设置了权限,为什么他仍然可以看到系统视图/procs?

【问题讨论】:

    标签: sql-server sql-server-2005 security database-permissions


    【解决方案1】:

    使用DENY VIEW DEFINITION。您不能取消用户查看视图和存储过程是否存在的能力,但可以取消查看其中(大部分)内容的能力。

    deny view definition to smallperms_role 
    go
    sp_addrolemember 'smallperms_role ', 'smallperms_user'
    go
    sp_addrolemember 'db_datareader', 'smallperms_user'
    go
    

    例如:
    EXEC sys.sp_databases 不返回任何内容,但执行。
    SELECT * FROM INFORMATION_SCHEMA.TABLES 不返回任何内容,但不返回错误。

    【讨论】:

      【解决方案2】:

      右键单击用户并选择用户映射页面。

      您是否从那里尝试禁用他对 ma​​stermodelmsdb 数据库的所有访问权限?

      我认为他将在所有 3 个中设置为公共,因此您可以尝试删除公共角色,以查看在运行这些系统视图/存储过程时它对他的登录有什么影响。

      或者最好还是创建一个测试登录来进行试验。

      【讨论】:

        【解决方案3】:

        我认为您不能删除用户的 PUBLIC 访问权限。 (来自用户属性)

        您可以从数据库属性中拒绝对 PUBLIC 的权限。

        • 右键单击数据库
        • 转到属性
        • 转到权限
        • 更改 GUEST 角色的权限。

        但是您不能拒绝 Master 或 Temp dbs 上的“CONTROL”权限,如果您拒绝 MASTER 上的 SELECT,您将无法登录服务器。

        【讨论】:

        • 恐怕不是这样 - 我们没有 GUEST 角色。
        猜你喜欢
        • 2011-03-07
        • 2015-04-12
        • 2015-06-21
        • 1970-01-01
        • 2010-09-18
        • 2015-04-12
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多