gpt4 book ai didi

sql-server - 使用 SQL Server Windows 身份验证时解析权限

转载 作者:行者123 更新时间:2023-12-04 01:33:38 25 4
gpt4 key购买 nike

这适用于 SQL Server 2005 或更高版本,但我很想知道 SQL Server 2000 是否以相同的方式工作。考虑以下情况。

登录名是 Windows 组的两个 SQL Server Windows 身份验证登录名:

MyDomain\Group1
MyDomain\Group2

具有两个用户的数据库映射到这些登录名:
USE MyDatabase
CREATE USER [User1] FOR LOGIN [MyDomain\Group1]
CREATE USER [User2] FOR LOGIN [MyDomain\Group2]

User1 和 User2 在数据库中被授予不相交的权限,例如:
GRANT SELECT ON Table1 TO User1
DENY SELECT ON Table1 TO User2
GRANT SELECT ON Table2 TO User2
DENY SELECT ON Table2 TO User1

客户端使用作为两个组成员的 Windows 标识连接到 SQL Server MyDomain\Group1MyDomain\Group2 .

客户端映射到哪个数据库用户? IE。 SELECT USER_NAME()返回 User1User2 ?

客户有什么权限?是否有定义的优先级来确定客户端是作为用户 1 还是用户 2 连接?这在 BOL 中记录在哪里?

背景

这涉及当前由多个应用程序访问的数据库,每个应用程序当前都有自己的 SQL Server 登录名,并且对数据库对象具有特定于应用程序的权限。

我想切换到使用 Windows 身份验证来提高安全性,并且我更喜欢使用 Windows 组而不是用户来获得灵 active (我不希望 DBA 必须管理所有单个用户的登录)。

但是,给定用户可能使用多个应用程序(因此是映射到 SQL 登录的多个 Windows 组的成员),因此在映射到数据库用户的连接时可能会出现歧义。

我已经用谷歌搜索和搜索了在线图书,但找不到关于如何解决这种歧义的明确信息(例如优先规则)。

除了上述问题的答案外,欢迎提供任何提示和最佳实践。

最佳答案

这是一个有趣的问题。

我假设您的客户根本无法访问这些表,广告 DENY 优先于 GRANT。在 SQL Server 中,DENY-overrides-GRANT 原则有一个异常(exception):当在列级别完成 GRANT 时,即使整个表已被拒绝访问,它也会允许访问,如 MSDN states .

编辑:要了解适用的内容,重要的是要注意登录(到服务器)与数据库用户不同。通过 Windows 组成员身份登录的用户将获得一个隐式创建的用户,并且需要对其应用权限。另见 this blog article了解更多信息。

关于sql-server - 使用 SQL Server Windows 身份验证时解析权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7118370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com