访问 SQL Server 的域管理员帐户

Bil*_*eer 3 security sql-server

我正在使用 SQL Server Profiler 监视一些 SQL 调用,并注意到访问 SQL 的域管理员帐户相当多。我们目前没有 DBA。有两个开发人员,我是其中之一。这是一种不良做法和/或安全风险吗?我这么问是因为最近的勒索软件攻击非常强调劫持域管理员帐户权限,所以我很担心。

Han*_*non 5

您可以使用以下查询提供有关域管理员的一些快速详细信息:

SELECT des.session_id
    , des.host_name
    , des.login_time
    , des.is_user_process
    , des.last_request_start_time
    , dest.text
FROM sys.dm_exec_sessions des
    INNER JOIN sys.dm_exec_connections dec ON des.session_id = dec.session_id
    CROSS APPLY sys.dm_exec_sql_text(dec.most_recent_sql_handle) dest
WHERE des.login_name = N'DOMAIN\AccountName'
Run Code Online (Sandbox Code Playgroud)

它将显示他们连接的客户端机器的名称,以及他们执行的最后一条语句。

在一般情况下,你可能想要明确地控制谁可以访问到SQL Server,特别是对安全敏感的账户,如该成员sysadminsecurityadmin服务器角色。在最小权限原则适用

此查询将向您显示每个服务器级角色的成员:

SELECT spr.name
    , spm.name
FROM sys.server_principals spr
    INNER JOIN sys.server_role_members srm ON spr.principal_id = srm.role_principal_id
    INNER JOIN sys.server_principals spm ON srm.member_principal_id = spm.principal_id
ORDER BY spr.name
    , spm.name;
Run Code Online (Sandbox Code Playgroud)

一般来说,这个列表应该尽可能小。请特别注意 securityadmin 和 sysadmin 角色。

顺便说一句,您希望限制有权访问 Domain Admins AD 组的人数,因为该组的成员可以重新启动您的 SQL Server,以便他们可以访问它,即使他们没有明确授予访问权限。对于域管理员等高特权组,需要注意域范围内的许多安全隐患。