代码之家  ›  专栏  ›  技术社区  ›  David Gardiner

何时需要对同义词应用权限

  •  4
  • David Gardiner  · 技术社区  · 16 年前

    我从 BOL

    例如,如果数据库a中有一个同义词指向数据库B中的表FRED,那么只要用户Joe被授予在[FRED].[B]上选择的权限,那么Joe就可以从[FRED].[B]中选择*。

    1 回复  |  直到 16 年前
        1
  •  5
  •   gbn    16 年前

    Using Synonyms (Database Engine)

    以下权限声明 而不是基本对象:(然后提到GRANT、REVOKE、DENY)

    之后, ownership chaining

    当通过 将对象的所有者指定给对象的所有者 调用对象。这是 链中的上一个链接。如果两者都有 对引用对象的权限

    CREATE SYNONYM dbo.FooBar FOR dbo.MyBaseProc
    GO
    GRANT EXECUTE ON dbo.FooBar TO MyUser
    GO
    REVOKE EXECUTE ON dbo.MyBaseProc TO MyUser
    GO
    EXEC AS USER = 'MyUser'
    GO
    PRINT '1'
    EXEC dbo.MyBaseProc --fail
    GO
    PRINT '2'
    EXEC dbo.bob    --pass
    GO
    REVERT
    GO
    
    
    DENY EXECUTE ON dbo.MyBaseProc TO MyUser
    GO
    PRINT '3'
    EXEC AS USER = 'MyUser'
    GO
    EXEC dbo.bob    --pass, 'coz DENY aint checked...
    GO
    REVERT
    GO
    

    编辑:我希望我已经回答了你的问题。。。