UNIQUE约束和CHECK约束是SQL Server中强制数据完整性的两类核心约束:UNIQUE确保非主键列值唯一且允许多个NULL中的一个,自动创建唯一索引;CHECK通过布尔表达式限制列值范围或跨列逻辑,保障域完整性。
要强制执行所有服务器身份标识的唯一性与有效性校验,核心在于从“标识生成—存储约束—登录验证—访问控制”四个环节同步设防,而不是只靠某一层拦截。
确保身份标识字段本身不可重复
在数据库或目录服务层面,对用户名、用户ID、服务主体名(SPN)等关键标识字段施加强制唯一约束:
- SQL Server 中对 login_name 或 principal_id 列添加 UNIQUE 约束,允许 NULL 但仅限一个;若需多列联合唯一(如 tenant_id + username),可定义复合 UNIQUE 约束
- Active Directory 中,sAMAccountName 和 userPrincipalName 默认强制唯一,但需定期审计是否存在手动绕过(如通过 LDIF 导入未校验的重复值)
- 自建用户表时,避免仅依赖应用层判断——必须由数据库引擎执行校验,防止并发插入导致重复
登录阶段强制有效性校验
标识存在 ≠ 标识有效。需在认证入口处验证其状态和凭证质量:
- 拒绝空口令:Linux 检查 /etc/shadow 中密码字段长度是否为 0;Windows 用 net user <username> 查看“密码最后设置时间”,结合本地安全策略确认密码策略已启用
- 启用登录失败锁定:Windows 组策略中配置“账户锁定阈值”(如 5 次失败后锁定 30 分钟);Linux 可通过 pam_faillock.so 实现同类机制
- 禁止默认/内置账号直接登录生产服务器:禁用 Administrator、root 等高权限默认账户,改用带明确职责命名的管理账号
远程管理通道必须绑定可信标识
远程登录(如 RDP、SSH、WinRM、JDBC 连接)不能脱离身份上下文运行:
- 禁用明文协议:关闭 Telnet、FTP、HTTP 管理界面;所有远程访问必须走 TLS 或 SSH 加密通道
- 服务端强制证书校验:例如 SQL Server 配置强制加密连接,并启用 Force Encryption = Yes;IIS 后端管理接口启用客户端证书映射
- 使用联合身份(如 Microsoft Entra ID)统一纳管,使服务器登录行为可追溯到企业级身份源,避免本地账号孤岛
运行时持续验证标识真实性
登录成功不等于全程可信,需在关键操作节点再次确认:
- 特权操作二次校验:执行 shutdown、DROP DATABASE、修改防火墙规则等敏感命令前,触发 MFA 或会话重认证
- 服务间调用携带可验证标识:微服务或后台任务调用其他服务时,使用 JWT 或 SAML 断言,并由接收方校验签发者、有效期及 scope
- 定期清理失效标识:脚本化扫描 90 天未登录账号、已离职人员账号、临时测试账号,自动禁用或归档
不复杂但容易忽略——唯一性靠约束兜底,有效性靠流程闭环,两者缺一不可。