向 SQL Server 中的 Active Directory 帐户授予管理员权限

Hik*_*ari 4 security sql-server permissions sql-server-2012 active-directory

我有一个 SQL Server 2012 实例和一个 Active Directory 组,我可以向其中添加 Active Directory 用户。我在该组中有我的个人 AD 帐户 (MyAccount) 和一个服务帐户 (ServiceAccount)。

我需要为整个实例授予对这个 AD 组的管理员访问权限。这意味着我不需要对创建的每个新表和数据库执行授权命令。该组中的任何用户都将自动能够创建、删除、插入、选择等。

甚至更棘手。我必须能够使用 Windows 身份验证通过 MyAccount 登录(我在 Windows 上登录,然后登录到 SQL Server,无需再次输入用户名-密码),并通过输入用户名和密码使用 ServiceAccount 登录。我不能被迫使用 ServiceAccount 登录 Windows(或使用该帐户运行 SSMS/SSDT/etc)才能登录 MSSQL。

配置它的最佳实践是什么?

Ken*_*her 6

您要求的某些内容实际上非常简单。

您的 AD 组的权限

您为 AD 组创建登录名

CREATE LOGIN [domain\AD Group] FROM WINDOWS
Run Code Online (Sandbox Code Playgroud)

然后授予它您想要的访问权限。您说您想授予它Admin访问权限,但除非这是您的 DBA 团队,否则我不会将 AD 组添加到sysadmin. 而是授予他们您真正希望他们拥有的权限。听起来你想要

  • db_ddladmin - 授予在数据库中创建/修改对象的权限的角色。
  • db_datareader - 授予权限对SELECT数据库中的任何表/视图运行的角色
  • db_datawriter权限-角色授予的权限运行UPDATEINSERTDELETE对在任何数据库表/视图的语句。
  • EXECUTE - 授予EXECUTE对数据库中任何存储过程或函数的能力的权限。

要添加它,请在每个用户数据库上运行以下命令。

CREATE USER [domain\AD Group] LOGIN [domain\AD Group] 
ALTER ROLE db_ddladmin ADD MEMBER [domain\AD Group]
ALTER ROLE db_datareader ADD MEMBER [domain\AD Group]
ALTER ROLE db_datawriter ADD MEMBER [domain\AD Group]
GRANT EXECUTE TO [domain\AD Group]
Run Code Online (Sandbox Code Playgroud)

如果您希望将这些权限添加到新的用户数据库中,请同时在model数据库中运行该脚本。

使用您的服务帐户进行连接

如果您有一个应用程序在您的服务帐户下运行,那么当该应用程序使用可信身份验证连接时,它将使用该服务帐户连接到 SQL。但是,如果您想使用 SSMS 之类的东西连接到 SQL,那么您有两种选择。您可以使用服务帐户登录计算机,也可以以其他用户身份运行 SSMS。

要在其他用户下运行 SSMS,请按住SHIFT 键并右键单击您的 SSMS 快捷方式并选择Run as different user

在此处输入图片说明

然后,您将收到 AD 登录的登录名/密码提示。输入您的服务帐户名称和密码。一旦 SSMS 打开任何受信任的(Windows 身份验证)连接,将使用您连接的 AD 登录名(在这种情况下是您的服务帐户)进行连接。


Han*_*non 5

您可以使用以下代码授予管理员访问权限:

CREATE LOGIN [DOMAIN\ADGroupName] FROM WINDOWS;
GRANT CONTROL SERVER TO [DOMAIN\ADGroupName];
Run Code Online (Sandbox Code Playgroud)

这将允许属于 [DOMAIN\ADGroupName] 成员的任何用户无需指定用户名/密码即可登录 SQL Server,并将授予这些用户对整个实例(包括所有数据库)的管理员访问权限。

您可以使用命令行小程序“runas”以“服务帐户”的身份启动 SQL Server Management Studio。其语法是(来自命令行):

runas /user:<service_account_name> C:\the\path\to\SSMS.exe
Run Code Online (Sandbox Code Playgroud)

CONTROL SERVER以这种方式向组或登录授予权限还允许您DENY访问特定对象或数据库。例如,您可以DENY ALTER ON DATABASE::master TO [DOMAIN\ADGroupName];阻止这些用户对 进行更改master,同时仍然允许他们创建和删除其他数据库、表等。请注意,具有CONTROL SERVER权限的用户可以轻松创建 SQL 登录,授予该登录sysadmin访问权限,并拥有完全访问 SQL Server 中的所有内容,包括不受控制地访问master. 这通常被认为是一个相当大的安全风险,并且应该只用于非生产设备。

我使用最优秀的SQL Server 权限层次结构海报来查看特定权限含义的高级视图。