避免系统管理员权限

Mar*_*ark 6 security sql-server permissions sysdba

我将开始道歉,因为这是我的第一篇文章,并查看其他与我自己的情况不太匹配的问题,而且我是一名系统管理员,而不是 DBA,所以我对 SQL 的理解是生疏和有限的。

我的组织经常遇到供应商,他们为了运行他们的应用程序,他们执行我们所说的惰性编程并请求 SA 凭据或要求他们的自定义帐户具有系统管理员权限。我的组织也有数据保护/合规政策,要求我们仅授予所需的访问权限和权利。

最近,我与之合作的一个供应商希望他们的帐户是系统管理员,但它实际上只需要访问一个数据库。如果我们给 AD 帐户(因为他们的应用程序仅适用于 Windows 身份验证)系统管理员权限,我可以使用应用程序的 GUI 来浏览和选择数据库,但如果我们只将同一帐户设置为 DBOwner,我们将找不到任何东西。

有没有办法确定它是否正在尝试轮询其他数据库或确定所需数据库所需的最低权限级别是什么?当我尝试询问供应商时,我被告知:“它需要系统管理员权限,但没关系,因为它只访问一个数据库。” 当涉及到我们的政策时,这是不行的。

感谢您的任何建议。

Aar*_*ron 1

如果供应商提供自己的数据库,您可以将他们的帐户与数据库级别的所有者角色分开,并且您在系统级别所需要做的就是授予帐户登录其数据库的权限。这将使他们能够完全控制他们的数据库,并防止他们使用该帐户访问您拥有的其他数据库。如果他们告诉您需要 sysadmin 数据库角色来访问 tempdb,则事实并非如此,因为默认情况下每个用户都拥有对 tempdb 所需的所有访问权限,除非您更改了 tempdb 的默认值,否则不需要其他步骤。以这种方式设置他们的帐户还会阻止他们启用 sql 中的其他扩展功能,例如邮件和 xp_cmd_shell,这些功能将使他们能够访问底层操作系统。

您还可以在 sql server 服务级别进行其他强化,以确保 sql 中的任何系统管理员帐户都不具有操作系统的管理员权限。其中包括以用户身份运行 sql 服务和 sql 代理服务。然后将 Windows 组 mssql$....users 添加到磁盘维护并作为批处理策略登录。这将使两个帐户能够作为服务运行,并且还允许 sql server 在需要增长底层数据/日志文件时进行即时文件初始化。您还需要为数据和日志文件所在的同一组的文件夹授予 NTFS 级别的完全控制权。使用 SQL Server 配置工具更改帐户,因为它为您设置了大部分所需的权限。

这是来自MSDN的基本指南,同时我尝试找到更多关于我过去使用过的基础知识的步骤