【发布时间】:2022-01-23 08:27:01
【问题描述】:
我维护一个 SQL Server 数据库,该数据库用作由几十个用户组成的团队的工作流工具。这些用户通过 MS Access 前端和 Windows 身份验证与数据库交互。该流程的一部分要求公司中的任何人(超过 10,000 人)都需要能够通过所有人都可以使用的 Excel 表格提交工作和反馈。为了适应这一点,我们使用了一个 SQL Authenticated 服务帐户,该服务帐户仅被允许写入所需的目标表。它使用如下所示的连接脚本:
conn.Open "Provider=SQLOLEDB; SERVER=[ServerAddress]; DATABASE=[DatbaseName]", [ServiceAccountName], [ServiceAccountPassword]
多年来一直运行良好。然而,现在 IT 想要禁止使用服务帐户,并完全依赖 Windows 身份验证。他们要求我停用服务帐户,而我正试图弄清楚如何才能做到这一点。
我的第一个想法是我应该能够使用来宾用户帐户来代替服务帐户。我确保来宾帐户在数据库中处于活动状态,授予它对目标表的插入权限,并将连接脚本更改为:
conn.Open "Provider=SQLOLEDB; SERVER=[ServerAddress]; DATABASE=[DatbaseName]; Trusted_Connection=yes"
这在我使用它时有效,但对于在数据库中没有 Windows Authenticated 登录的任何用户都失败了。他们收到的错误是“[user] 登录失败”。
所以,我的基本问题是,我想要完成的工作是否可行?可以使用来宾帐户代替 SQL Authenticated 服务帐户吗?如果是这样,我是否在这里遗漏了一些明显的东西?如果没有,是否有更好的方法允许没有数据库登录权限的用户提交?
感谢阅读。任何建议将不胜感激。
编辑:为了澄清这里的目标,我需要能够允许公司的任何成员提交工作记录。我无法假设对这些用户有任何了解,包括他们可能属于哪些 Active Directory。基本上,对于数据库无法识别的任何用户,我都需要一个“其他”类别。我希望来宾帐户可能是实现此目的的一种方式。
【问题讨论】:
-
这在我使用它时有效,但对于在数据库中没有 Windows Authenticated 登录的任何用户都失败了。他们收到的错误是“[user] 登录失败” .. 这是设计使然,WinAuth 完全按照它应该的方式工作!现在管理员可以通过 AD 安全组成员身份维护用户权限 - 没有访问权限的用户现在成为他们的(管理员)来处理。
-
您可以将域组/用户组作为 SQL Server 中的“登录名”。换句话说,创建一个 Windows 域组,将所有用户分配给它。为此组授予 SQL Server 登录名并授予权限。然后所有用户都可以登录到 SQL Server。
-
Re“基本上,我需要为任何未被数据库识别的用户设置一个“其他”类别。”:这正是 IT 试图通过禁止“服务帐户”来防止的。您不应让未经批准的用户访问您的数据库,并且不应让多个用户共享相同的凭据。无论如何,这看起来像你想要的:sites.google.com/site/jayantdass/…
标签: sql-server windows-authentication