一种方法是使用“服务器属性”对话框中的“窗口身份验证模式”,这将只允许访问 Windows 登录名而不是 SQL 登录名。Microsoft 还建议仅使用 Windows 身份验证模式。需要注意的一件事是,即使您使用的是 Windows 身份验证,您也必须为 SA 帐户使用强密码,因为任何人都可以通过更新注册表值并重新启动 SQL 服务来更改身份验证模式。
禁用 SA 登录
禁用 SA 帐户是防止其被使用的好选择。当它被禁用时,没有人可以在任何情况下使用它,直到它被启用。唯一的缺点是我们不能在紧急情况下使用 SA 帐户。
您可以使用以下 T-SQL 来禁用 SA 帐户。
--Query to disable the SA account.
ALTER LOGIN sa DISABLE;
此查询将检查 SA 帐户的状态。值 1 表示帐户已禁用,值 0 表示帐户已启用。
--Query to check account status
SELECT name,is_disabled from sys.server_principals where name='sa'
重命名 SA 登录名
您也可以重命名 SA 帐户,这将在一定程度上防止黑客/用户。一个缺点是它不会更改默认为 0x01 的 SA 帐户的 SID,因此有人可以通过查找 SID 找到新名称。
--Query to check account status
ALTER LOGIN sa WITH NAME = [mssqltip];
其他用户能够更改 SA 帐户密码的唯一方法是 sysdamin 角色的其他成员和安全管理员角色的成员。您的用户是否属于系统管理员或安全管理员角色?
https://learn.microsoft.com/en-us/sql/relational-databases/security/authentication-access/server-level-roles?view=sql-server-2017
您无法阻止系统管理员更改 sa 密码,但我们可以保护少数用户的 SQL Server SA 登录。
保护 SA 登录的不同方法:
使用 Windows 身份验证模式
一种方法是使用“服务器属性”对话框中的“窗口身份验证模式”,这将只允许访问 Windows 登录名而不是 SQL 登录名。Microsoft 还建议仅使用 Windows 身份验证模式。需要注意的一件事是,即使您使用的是 Windows 身份验证,您也必须为 SA 帐户使用强密码,因为任何人都可以通过更新注册表值并重新启动 SQL 服务来更改身份验证模式。
禁用 SA 登录
禁用 SA 帐户是防止其被使用的好选择。当它被禁用时,没有人可以在任何情况下使用它,直到它被启用。唯一的缺点是我们不能在紧急情况下使用 SA 帐户。
您可以使用以下 T-SQL 来禁用 SA 帐户。
此查询将检查 SA 帐户的状态。值 1 表示帐户已禁用,值 0 表示帐户已启用。
重命名 SA 登录名
您也可以重命名 SA 帐户,这将在一定程度上防止黑客/用户。一个缺点是它不会更改默认为 0x01 的 SA 帐户的 SID,因此有人可以通过查找 SID 找到新名称。
此查询可用于根据 SID 查找 SA 帐户的名称。