SQL Server 集成安全性(Windows 身份验证)
Posted
技术标签:
【中文标题】SQL Server 集成安全性(Windows 身份验证)【英文标题】:SQL Server Integrated Security (Windows Authentication) 【发布时间】:2014-12-12 15:09:06 【问题描述】:我有一个关于 SQL Server 上的 Windows 身份验证的问题。
如果我将我的数据库提供给任何人,他们是否仍然能够使用集成安全性访问它?
因为如果我将数据库从一台机器移动到另一台机器,我仍然可以使用集成安全性访问它。这是否意味着任何人都可以使用集成安全性(Windows 身份验证)访问它,如果我将文件提供给他们?
编辑: 我只是好奇,因为我正在处理我的 SQL Server 文件 (.mdf),然后我将它移动到另一台机器上,我仍然能够使用 Windows 身份验证访问它
编辑: 它是我附加的 MDF 文件
【问题讨论】:
动机不明? 这是一个“包含”数据库还是您分离/附加的常规 MDF 文件?您现在如何访问它:您是否将登录名映射到您的 Windows 登录名,或者是否有一个登录名映射到 Windows 组? 它和 MDF 文件,我使用 Visual Studio 访问它。这是否意味着当我最终将它部署给客户时,我可以简单地将其留在“Windows 身份验证”? 【参考方案1】:如果您在这台新机器上登录到 SQL Server,并且通过各种方式中的任何一种成为sysadmin
角色的成员,那么您绝对可以访问它。属于sysadmin
角色的任何人都可以访问它。
对于通过集成安全/可信连接进行身份验证且不是sysadmin
的人员,如果数据库中的用户链接到基于 Windows 组的登录名(在 SQL Server 中),那么任何人因为只要 MDF 连接到属于同一网络的实例,该 Windows 组仍然具有访问权限,因此该 Windows 组的安全 ID (SID) 与连接该 Windows 组的数据库中列出的相同登录用户(在 [master] 中)。
使用 LocalDB 时,向客户“部署”意味着他们的 PC 上有一个 LocalDB 实例,您将附加此数据库。他们将是本地 LocalDB 实例的系统管理员,因此应该可以访问任何附加的数据库。请记住,LocalDB 的实例是 per-windows-Login,因此只有该 PC 上的 Login 才会拥有包含您的数据库的 LocalDB 实例。它可以与其他人“共享”,但您需要单独设置。
但是,了解此计划是否可行的最佳方法是尝试一下。将您的数据库部署到同事的 PC 上,看看他们(不是您)是否可以访问该数据库。这是一个更好的指示,然后这里的任何答案都可以给出;-)。更好的做法是将其“部署”到甚至不属于您的网络的计算机上(这与客户的 PC 基本相同,对吧?)。
【讨论】:
假设我正在 Visual Studio 中处理文件;当我完成并最终想将其部署给客户时,我是否必须设置密码或者我可以将连接字符串保留为“Integrated Security”? @MunasheTsododo 这取决于您的应用程序的设置方式。这是本地数据库吗?如果您部署到客户的系统(本地 PC 或服务器),使他们在该实例上是系统管理员,他们就可以访问。 我将它附加到 localdb 是的,它的 localdb @srutzky @MunasheTsododo 我更新了我的答案。【参考方案2】:这是一个有点奇怪的问题 - 如果你给某人你的数据库(无论如何你这样做)并让他们在他们管理的 SQL 服务器上设置它,那么是的,他们将有权访问它。
如果您的应用程序随后访问了您的数据库,您将需要他们设置适当的帐户以根据他们的要求访问数据库。
【讨论】:
假设我正在处理一个 MDF 文件,当我最终将它部署给客户时,我可以简单地将它留在“Windows 身份验证”吗?【参考方案3】:只要我知道是的。如果您将数据库提供给其他人,您可以随时获得数据库的所有权并编辑他的权限
【讨论】:
以上是关于SQL Server 集成安全性(Windows 身份验证)的主要内容,如果未能解决你的问题,请参考以下文章
与 IIS、Firefox 和 SQL Server 集成的 Windows 身份验证
没有 SQL Server Management Studio 的 SQL Server 集成安全性
java模拟使用windows身份验证连接到sql server