SQL Server - 如何阻止公共连接?

Mik*_*ike 6 sql-server

今天,我们发现我们的两个 SQL Server(均为 2017 CU21)接受来自任何随机域帐户的连接,甚至是那些绝对没有直接登录或通过 AD 组成员身份访问的帐户。

每台服务器上都有一个用户数据库,允许这些随机域帐户进行连接。

根据我们看到的配置,我们预计任何随机域帐户(即任何没有登录实例的帐户)都会登录失败,除此之外还会被阻止连接到用户数据库。

对于这些数据库,来宾帐户被禁用,但为了更好的措施,我们执行了:

REVOKE CONNECT FROM guest
Run Code Online (Sandbox Code Playgroud)

这没有什么区别。

那么两个问题:

  1. 我们如何关闭/阻止这些公共连接成功?
  2. 什么 TSQL 语句可以向我们显示有问题的配置?

到目前为止我们已经看过的事情:

  • “公共”服务器角色似乎具有默认配置,与我们所有其他服务器相同,这不是问题
  • 来宾用户在所有数据库和服务器上肯定显示为禁用
  • “公共”数据库角色仅具有我们期望看到的默认权限
  • 每台服务器上只有 1 个用户数据库(加上 master、msdb 和 tempdb)可供这些随机帐户访问——所有其他数据库都表现正常,即该帐户无法连接到它们。
  • 在所有情况下,数据库包含类型设置均为“无”。
  • 任一服务器上均不存在涵盖所有域用户的登录名

一些上下文:这两个服务器是相关的——它们是同一应用程序的 DEV 和 PROD 服务器。此配置很可能是出于某种历史原因而故意完成的 - 但现在没有人知道为什么,所以我们想禁用此公共访问。

Dan*_*man 1

Windows 帐户通过 Windows 组成员身份继承权限。即使用户帐户不存在登录信息,如果组成员允许,该帐户仍然可以连接。

执行xp_logininfo,指定有问题的 Windows 帐户以及“all”以列出提供访问权限的所有权限路径(即帐户和/或组)。

EXEC xp_logininfo 'YourDomain\YourUser', 'all';
Run Code Online (Sandbox Code Playgroud)