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。
配置它的最佳实践是什么?
您要求的某些内容实际上非常简单。
您的 AD 组的权限
您为 AD 组创建登录名
CREATE LOGIN [domain\AD Group] FROM WINDOWS
Run Code Online (Sandbox Code Playgroud)
然后授予它您想要的访问权限。您说您想授予它Admin
访问权限,但除非这是您的 DBA 团队,否则我不会将 AD 组添加到sysadmin
. 而是授予他们您真正希望他们拥有的权限。听起来你想要
SELECT
数据库中的任何表/视图运行的角色UPDATE
,INSERT
或DELETE
对在任何数据库表/视图的语句。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 登录名(在这种情况下是您的服务帐户)进行连接。
您可以使用以下代码授予管理员访问权限:
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 权限层次结构海报来查看特定权限含义的高级视图。
归档时间: |
|
查看次数: |
7741 次 |
最近记录: |