我想在 SQL Server 中为我们的 Web 应用程序使用 Windows 专用身份验证。过去,我们总是为 Web 应用程序创建功能强大的 1 SQL 登录名。在进行一些初步测试后,我们决定创建模拟应用程序安全角色的 Windows Active Directory 组(即管理员、经理、用户/操作员等...)。我们在 SQL Server 中创建了映射到这些组的登录名,并授予他们访问应用程序数据库的权限。此外,我们还创建了 SQL Server 数据库角色并为每个组分配了适当的角色。这很有效。我的问题在于,对于大多数应用程序,公司中的每个人都应该具有对报告(以及数据)的读取权限。据我所知,我有两个选择:1) 为每个应用程序创建一个只读/查看器 AD 组“角色”,并将每个人都放入其中。2) 使用“域\域用户”组并在 SQL 中为他们分配正确的角色。使用 Windows 专用身份验证方法允许每个人读取特定数据库对象的最佳和/或最简单的方法是什么?
答案1
选项 1 是您最好的选择。
授予公共访问权限并不是一个好主意。可能的情况是,用户会改变工作职能,此时您不希望公共角色有权访问您的数据。除非您组织中的每个人都有权访问您的应用。
创建一个组然后将其分配给数据读取者角色不一定是一个好主意,因为可能存在您不希望角色中的每个人都读取的数据(因此需要指定“特定数据库对象”)。
如果您创建一个组,然后授予它对相关对象的 SELECT/EXECUTE/etc 访问权限,那么它应该为您执行此操作。
答案2
您始终可以将对各种可安全对象的访问权限授予公共服务器角色。除非明确授予或拒绝特权,每一个用户继承授予公共的权限。