`
dengbaoleng
  • 浏览: 1189635 次
文章分类
社区版块
存档分类
最新评论

在 SQL Server 中使用 Windows 用户组的一些诡异问题

 
阅读更多

最近,在SQLServer中使用Windows用户组时,发现了一些比较诡异的问题。

SQL Server版本:SQL Server 2008 R2

问题1Login failed for user 'xx\xx'

操作描述:

SQL Server中添加一个Windows用户,并且使用该用户连接SQLServerWindows身份验证),登录失败,日志中出现如下错误:

Login failed for user 'xx\xx'. 原因: 基于令牌的服务器访问验证失败,出现基础结构错误。请检查以前的错误。 [客户端: <xxxx>]

检查权限分配没有任何异常,后来属性,该用户属于一个Windows用户组,这个用户组也是SQL ServerLogin,并且显式拒绝了CONNECT SQL权限,尝试去掉Windows组上的拒绝权限,发现可以正常登录。

反复测试后发现,如果Windows用户和它所属的Windows用户组都是SQLServerLogin的话,则Windows用户的权限为其自身的权限+所属Windows组的权限,并且拒绝权限优先。也就是说,只要Windows用户所属的用户组具有某个对象的访问权限,那么Windows用户也会有这个权限;而如果其所属的用户组设置了拒绝权限,则即使显式给Windows用户权限,也会出现权限拒绝的现象。我所遇到的问题,就是因为用户所属Windows用户组设置了拒绝连接SQL Server,所以不管我是否授予用户连接SQL Server的权限,均无法连接SQL Server

问题2孤立用户???

操作描述:

这个是在测试问题1的过程中发现的。当我为Windows用户组授予了某个数据库的权限之后,这个用户组所属的用户也获得了这个权限(没有为用户显式授权),这个在问题1中已经结案了。

现在的问题是,当我把Windows用户组对应的Login(是实例级别的Login,不是数据库级别的User)删除后,发现这个组对应的Windows用户(在SQLServer中有对应的Login)还是具有所属Windows用户组的权限。

看起来在删除Windows用户组的时候要小心,不但要删除Login,还要删除数据库级别的User。否则可能会因为这个而产生安全漏洞。

注:

删除Login的时候,数据库级别的User不会自动删除,这种User称之为孤立用户。(联机帮助上的原文“如果删除了对应的 SQL Server 登录名,则数据库用户可能会变为孤立用户”)。
孤立用户由于没有Login,无法产生与之相关的登录,所以一般情况下我们会认为孤立用户不会影响到安全性。但对于Windows用户组,看起来就危险了。

问题3还是孤立用户???

操作描述:

在问题2的基础上,发现了一个列有趣的问题。可以直接通过CREATE USER [xx\xx] FOR LOGIN [xx\xx]语句,在DB级别上,为Windows用户组创建User,并且可以授权。这似乎就是人为创建孤立用户了。

分享到:
评论

相关推荐

    Windows Server 2012 + SQL Server 2016安装必读

    本文档将分步骤地指导用户安装 Windows Server 2012 和 SQL Server 2016,并提供了安装过程中的重要注意事项和配置建议。 一、 Windows Server 2012 安装 1. 解压缩安装包 首先,用户需要将三个压缩文件解压到...

    SQL Server 2019 for Windows Server 2019无域搭建always-on.pdf

    在企业级数据库管理中,SQL Server 2019的Always-On可用性组是确保高可用性和灾难恢复的关键技术。然而,在没有域环境的情况下进行配置,无疑增加了实施的复杂度。本文详细介绍了如何在Windows Server 2019上,不...

    Linux平台下访问Windows平台的SQL Server数据库的方法.pdf

    在SQL Server数据库服务器上,笔者使用的是SQL Server 7.0(经实际测试,本文中的程序在SQL Server 2000下工作也正常)。注意其认证方式为SQL Server和Windows NT混合认证。两台服务器应联网(局域网或广域网),在...

    WINDOWS7 SQL SERVER

    - 创建一个SQL Server企业管理器的快捷方式,并设置为“以管理员身份运行”,将其添加到启动项,这样可以在用户登录时自动以管理员权限运行SQL Server服务。 5. **安装失败的解决办法**: - 如果在卸载后重新安装...

    sql server2019安装包

    在安装过程中,可以选择安装类型(如Developer Edition或Enterprise Edition)、配置SQL Server服务账户、设置实例名称、配置身份验证模式(Windows身份验证或混合模式)等。安装完成后,可以通过SSMS连接到SQL ...

    在32位sql server 使用4G以上的内存设置

    如果是非域环境,可以打开组策略,计算机配置----》windows 设置----》用户权限分配,找到“内存中锁定页面”,添加能够运行sqlserver.exe的用户。如果是域环境,可以从管理工具打开域安全策略,域控制器安全策略---...

    Windows-7.4-PHP适配SQLserver驱动

    与SQL Server的集成是许多企业和开发者的需求,因为SQL Server是一个功能强大的关系型数据库管理系统,尤其在大型企业环境中非常常见。这篇内容将深入探讨如何在PHP 7.4中配置与SQL Server的连接驱动。 首先,为了...

    sql server 导入超大SQL脚本文件

    在 SQL Server 2008 中,如果我们要导入超大 SQL 脚本文件(超过 10MB),使用 SQL Management Studio 查询工具可能无法打开脚本文件。这时,我们可以使用 osql 工具来导入超大 SQL 脚本文件。 osql 工具的使用格式...

    SQL Server 18452登录错误

    在“Microsoft SQL Server Management Stdio”中,展开"SQL Server 组",鼠标右键点击 SQL Server 服务器的名称,然后选择"属性",再选择"安全性"选项卡,在"身份验证"下,选择"SQL Server 和 Windows 身份验证模式...

    WindowsServer2022服务器安装SQLServer数据库详细教程,详细完整,每一步都有截图

    Windows Server 2022服务器安装SQL Server数据库是一项关键任务,尤其是在数据密集型应用和服务部署中。本教程详细指导用户如何在Windows Server 2022上安装最新版本的SQL Server数据库,通过每一步操作提供截图指导...

    SQLServer+ 免安装版

    让软件企业在发布基于SQLServer2000数据库软件的时候,只要把软件打包进入安装包而不需要再单独安装数据库,也不需要另外进行数据库的设置,就如同使用ACCESS数据库一样简单,但却是SQLServer2000这样大中型数据库的...

    sql server客户端安装包

    SQL Server客户端安装包是用于与Microsoft SQL Server进行交互的软件组件集合,它包含了连接到SQL Server、执行查询、管理数据库以及进行数据...正确安装和使用这些工具,将极大地提高你在SQL Server环境中的工作效率。

    sqlserver离线安装包

    "sqlserver离线安装包" 提供了这样一种解决方案,使得我们可以在无网络的情况下完成 SQL Server 的部署。 离线安装通常涉及到以下几个关键步骤和知识点: 1. **下载完整安装包**: 要进行离线安装,首先你需要在有...

    Windows-Server-2012-R2安装SQL-Server-2012出现的问题.docx

    在安装 SQL Server 2012 时,可能会出现一些问题,例如 OS 和 SQL Server 语言不同导致的报错、安装停留在启用操作系统功能 NetFx3 界面上、安装 .NET Framework 3.5 失败等。这些问题的解决方法将在下面详细介绍。 ...

    SqlServer连接工具

    在本篇文章中,我们将深入探讨SQL Server连接工具的核心功能和使用场景。 首先,SQL Server Management Studio (SSMS) 是微软官方提供的一个全面的集成环境,专为管理和开发SQL Server设计。它包含了对SQL Server...

    看看如何解决“SQL Server只能使用Windows身份登录,不能使用sa等Sql server身份进行登录”的问题.doc

    在SQL Server中,Windows身份验证和SQL Server身份验证是两种不同的登录方式,分别适用于不同的安全需求。当SQL Server只能使用Windows身份验证而无法使用sa(系统管理员)或其它SQL Server身份登录时,通常是由于...

    在SQL Server里查看当前连接的在线用户数

    在SQL Server中,掌握如何查看当前连接的在线用户数是一项重要的技能,这有助于数据库管理员(DBA)监控系统性能、优化资源分配以及处理潜在的安全问题。以下是从给定的文件信息中提炼出的关键知识点,包括如何查询...

    SqlServer2005 打开 SqlServer2008 mdf文件

    Sql Server 2005 打开 Sql Server 2008 mdf 文件数据库转换是指将 Sql Server 2008 中的数据库文件(mdf 文件)转换为 Sql Server 2005 可以识别的格式,以便在 Sql Server 2005 中使用。这种转换过程需要使用 Sql ...

    SQL Server Native Client 9.0~11.0(32位和64位)

    4. **兼容性问题**:尽管SQL Server Native Client兼容多个SQL Server版本,但某些新特性可能仅在特定版本的服务器上可用。 总之,SQL Server Native Client是一个强大的数据库访问工具,为开发人员提供了高效、...

    SQL Server Native Client 10.0

    在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**: ...

Global site tag (gtag.js) - Google Analytics