如何证明SQL服务账户无法被人类登录?参数调整及功能影响咨询
解答
1. 实现服务账户无法被人类登录的参数调整方案
针对SQL Server的服务账户(SQL登录类型),你可以通过以下两种参数/设置来证明其无法被人类登录:
启用密码策略与过期检查
修改登录账户的CHECK_POLICY和CHECK_EXPIRATION参数(对应sys.sql_logins中的is_policy_checked和is_expiration_checked字段),确保密码不符合企业密码复杂度要求。人类尝试登录时,会被系统强制要求修改密码(因密码不满足策略),而应用程序使用该账户连接时,由于直接调用哈希密码进行认证,不会触发交互式的密码修改流程,仍能正常工作。
执行语句:ALTER LOGIN [YourServiceAccount] WITH CHECK_POLICY = ON, CHECK_EXPIRATION = ON;限制默认数据库访问
将登录账户的default_database_name(sys.sql_logins字段)修改为一个不存在的数据库,或该登录无访问权限的数据库。人类登录时会因无法访问默认数据库而报错,但应用程序可在连接字符串中指定具体业务数据库,不受影响。
执行语句:ALTER LOGIN [YourServiceAccount] WITH DEFAULT_DATABASE = [RestrictedOrNonExistentDB];
2. 禁用登录账户(is_disabled=1)对服务账户的影响
如果将is_disabled设为1,该登录账户会被SQL Server完全禁用,任何使用该账户的连接请求(包括应用程序的服务账户连接)都会被拒绝,因此服务账户无法正常运作。
内容的提问来源于stack exchange,提问作者erdemc
相关产品推荐
相关产品推荐

