最近,在SQLServer中使用Windows用户组时,发现了一些比较诡异的问题。
SQL Server版本:SQL Server 2008 R2
问题1:Login failed for user 'xx\xx'
操作描述:
在SQL Server中添加一个Windows用户,并且使用该用户连接SQLServer(Windows身份验证),登录失败,日志中出现如下错误:
Login failed for user 'xx\xx'. 原因:
基于令牌的服务器访问验证失败,出现基础结构错误。请检查以前的错误。 [客户端: <xxxx>]
检查权限分配没有任何异常,后来属性,该用户属于一个Windows用户组,这个用户组也是SQL Server的Login,并且显式拒绝了CONNECT
SQL权限,尝试去掉Windows组上的拒绝权限,发现可以正常登录。
反复测试后发现,如果Windows用户和它所属的Windows用户组都是SQLServer的Login的话,则Windows用户的权限为其自身的权限+所属Windows组的权限,并且拒绝权限优先。也就是说,只要Windows用户所属的用户组具有某个对象的访问权限,那么Windows用户也会有这个权限;而如果其所属的用户组设置了拒绝权限,则即使显式给Windows用户权限,也会出现权限拒绝的现象。我所遇到的问题,就是因为用户所属Windows用户组设置了拒绝连接SQL
Server,所以不管我是否授予用户连接SQL Server的权限,均无法连接SQL Server。
操作描述:
这个是在测试问题1的过程中发现的。当我为Windows用户组授予了某个数据库的权限之后,这个用户组所属的用户也获得了这个权限(没有为用户显式授权),这个在问题1中已经结案了。
现在的问题是,当我把Windows用户组对应的Login(是实例级别的Login,不是数据库级别的User)删除后,发现这个组对应的Windows用户(在SQLServer中有对应的Login)还是具有所属Windows用户组的权限。
看起来在删除Windows用户组的时候要小心,不但要删除Login,还要删除数据库级别的User。否则可能会因为这个而产生安全漏洞。
注:
删除Login的时候,数据库级别的User不会自动删除,这种User称之为孤立用户。(联机帮助上的原文“如果删除了对应的 SQL Server
登录名,则数据库用户可能会变为孤立用户”)。
孤立用户由于没有Login,无法产生与之相关的登录,所以一般情况下我们会认为孤立用户不会影响到安全性。但对于Windows用户组,看起来就危险了。
操作描述:
在问题2的基础上,发现了一个列有趣的问题。可以直接通过CREATE
USER [xx\xx]
FOR LOGIN [xx\xx]语句,在DB级别上,为Windows用户组创建User,并且可以授权。这似乎就是人为创建孤立用户了。
分享到:
相关推荐
本文档将分步骤地指导用户安装 Windows Server 2012 和 SQL Server 2016,并提供了安装过程中的重要注意事项和配置建议。 一、 Windows Server 2012 安装 1. 解压缩安装包 首先,用户需要将三个压缩文件解压到...
在企业级数据库管理中,SQL Server 2019的Always-On可用性组是确保高可用性和灾难恢复的关键技术。然而,在没有域环境的情况下进行配置,无疑增加了实施的复杂度。本文详细介绍了如何在Windows Server 2019上,不...
在SQL Server数据库服务器上,笔者使用的是SQL Server 7.0(经实际测试,本文中的程序在SQL Server 2000下工作也正常)。注意其认证方式为SQL Server和Windows NT混合认证。两台服务器应联网(局域网或广域网),在...
- 创建一个SQL Server企业管理器的快捷方式,并设置为“以管理员身份运行”,将其添加到启动项,这样可以在用户登录时自动以管理员权限运行SQL Server服务。 5. **安装失败的解决办法**: - 如果在卸载后重新安装...
在安装过程中,可以选择安装类型(如Developer Edition或Enterprise Edition)、配置SQL Server服务账户、设置实例名称、配置身份验证模式(Windows身份验证或混合模式)等。安装完成后,可以通过SSMS连接到SQL ...
如果是非域环境,可以打开组策略,计算机配置----》windows 设置----》用户权限分配,找到“内存中锁定页面”,添加能够运行sqlserver.exe的用户。如果是域环境,可以从管理工具打开域安全策略,域控制器安全策略---...
与SQL Server的集成是许多企业和开发者的需求,因为SQL Server是一个功能强大的关系型数据库管理系统,尤其在大型企业环境中非常常见。这篇内容将深入探讨如何在PHP 7.4中配置与SQL Server的连接驱动。 首先,为了...
在 SQL Server 2008 中,如果我们要导入超大 SQL 脚本文件(超过 10MB),使用 SQL Management Studio 查询工具可能无法打开脚本文件。这时,我们可以使用 osql 工具来导入超大 SQL 脚本文件。 osql 工具的使用格式...
在“Microsoft SQL Server Management Stdio”中,展开"SQL Server 组",鼠标右键点击 SQL Server 服务器的名称,然后选择"属性",再选择"安全性"选项卡,在"身份验证"下,选择"SQL Server 和 Windows 身份验证模式...
Windows Server 2022服务器安装SQL Server数据库是一项关键任务,尤其是在数据密集型应用和服务部署中。本教程详细指导用户如何在Windows Server 2022上安装最新版本的SQL Server数据库,通过每一步操作提供截图指导...
让软件企业在发布基于SQLServer2000数据库软件的时候,只要把软件打包进入安装包而不需要再单独安装数据库,也不需要另外进行数据库的设置,就如同使用ACCESS数据库一样简单,但却是SQLServer2000这样大中型数据库的...
SQL Server客户端安装包是用于与Microsoft SQL Server进行交互的软件组件集合,它包含了连接到SQL Server、执行查询、管理数据库以及进行数据...正确安装和使用这些工具,将极大地提高你在SQL Server环境中的工作效率。
"sqlserver离线安装包" 提供了这样一种解决方案,使得我们可以在无网络的情况下完成 SQL Server 的部署。 离线安装通常涉及到以下几个关键步骤和知识点: 1. **下载完整安装包**: 要进行离线安装,首先你需要在有...
在安装 SQL Server 2012 时,可能会出现一些问题,例如 OS 和 SQL Server 语言不同导致的报错、安装停留在启用操作系统功能 NetFx3 界面上、安装 .NET Framework 3.5 失败等。这些问题的解决方法将在下面详细介绍。 ...
在本篇文章中,我们将深入探讨SQL Server连接工具的核心功能和使用场景。 首先,SQL Server Management Studio (SSMS) 是微软官方提供的一个全面的集成环境,专为管理和开发SQL Server设计。它包含了对SQL Server...
在SQL Server中,Windows身份验证和SQL Server身份验证是两种不同的登录方式,分别适用于不同的安全需求。当SQL Server只能使用Windows身份验证而无法使用sa(系统管理员)或其它SQL Server身份登录时,通常是由于...
在SQL Server中,掌握如何查看当前连接的在线用户数是一项重要的技能,这有助于数据库管理员(DBA)监控系统性能、优化资源分配以及处理潜在的安全问题。以下是从给定的文件信息中提炼出的关键知识点,包括如何查询...
Sql Server 2005 打开 Sql Server 2008 mdf 文件数据库转换是指将 Sql Server 2008 中的数据库文件(mdf 文件)转换为 Sql Server 2005 可以识别的格式,以便在 Sql Server 2005 中使用。这种转换过程需要使用 Sql ...
4. **兼容性问题**:尽管SQL Server Native Client兼容多个SQL Server版本,但某些新特性可能仅在特定版本的服务器上可用。 总之,SQL Server Native Client是一个强大的数据库访问工具,为开发人员提供了高效、...
在SQL Server 2012中,虽然主要推荐使用SQL Server Native Client 11.0,但为了兼容旧版本的SQL Server,如SQL Server 2000,仍然需要使用SQL Server Native Client 10.0。 **1. ODBC与OLE DB接口** - **ODBC**: ...