Sql server 具有SQL Server后端的MS Access应用程序的安全模型(部署)

Sql server 具有SQL Server后端的MS Access应用程序的安全模型(部署),sql-server,security,ms-access,deployment,sql-server-express,Sql Server,Security,Ms Access,Deployment,Sql Server Express,我们有一个应用程序,由一个MS Access前端(2007,mdb格式)、几个.net库和一个SQL Server(2008)后端组成。我正在开发一个安装程序,它可以自动安装MS Access运行时、我们的应用程序、我们的库、SQL Server Express并配置所有内容 显然,MS Access应用程序和库(在正常的非管理员用户上下文中运行)需要访问SQL Server数据库。授予应用程序访问权限的最佳方式是什么 这就是我想到的。不幸的是,所有这些似乎都有缺点: SQL Server

我们有一个应用程序,由一个MS Access前端(2007,mdb格式)、几个.net库和一个SQL Server(2008)后端组成。我正在开发一个安装程序,它可以自动安装MS Access运行时、我们的应用程序、我们的库、SQL Server Express并配置所有内容

显然,MS Access应用程序和库(在正常的非管理员用户上下文中运行)需要访问SQL Server数据库。授予应用程序访问权限的最佳方式是什么


这就是我想到的。不幸的是,所有这些似乎都有缺点:

  • SQL Server Compact Edition:不支持视图

  • :这似乎是最好的做法。但是,它需要在访问数据库之前执行存储过程(我无法在连接字符串中传递应用程序凭据)。因此,我不能使用它来访问,这是我们的访问应用程序的要求

  • :引用MSDN:“此功能将在Microsoft SQL Server的未来版本中删除。请避免在新的开发工作中使用此功能…”

  • :Microsoft说:“如果可能,请使用Windows身份验证。”

  • 使用Windows身份验证并授予内置\用户完全访问权限:这是迄今为止最简单的解决方案,但不知何故,这样做“似乎是错误的”

该应用程序面向非技术受众,因此要求用户配置权限不是一个选项

编辑:一些澄清:它是一个“本地”应用程序,即SQL Server与应用程序位于同一台机器上;从网络访问SQL Server既不必要也不可取。该软件(用于管理股票、发票等的常规业务应用程序)将免费下载,因此它应该在各种环境(域/非域、不同的操作系统等)中运行,安装它不需要it知识——除了通常的应用程序“单击setup.exe,确认UAC提示,确认安装目录,等等。”我认为最常见的场景是“Windows XP,本地管理员用户”和“Windows Vista/7,启用UAC的本地管理员用户”。因为我们希望遵循良好的做法,所以运行应用程序不需要“以管理员身份运行”“在后一种情况下。

@Heinzi写道:

使用Windows身份验证和 授予内置\用户完全访问权限: 这是迄今为止最简单的解决方案, 但不知何故,这样做“似乎是错误的” 那

这里通常的方法是添加一个自定义用户组(例如,“db用户”),并将用户放入该组中。这样,您就可以准确地控制允许访问的用户。

如何:

  • 使用Access ADP项目,预配置为连接到本地安装的SQL Server实例
  • 使用BuiltIn\Users组(或SQL身份验证)进行连接,但仅授予最低限度的凭据。足够登录并
  • 调用sp_setappprole将客户端连接“提升”到您定义的应用程序角色的标识
      如果听起来你只是冰山一角。在销售和部署access SQL应用程序时

      我走了另一条路。我有作为独立工作站的虚拟计算机,域服务器和工作站都是虚拟的

      我写了一个脚本,它们是VBA和VBScript的组合。 问 是要在单个计算机或不同计算机上运行的数据库和应用程序。 如果是不同的计算机,数据库所在的计算机名是什么。 数据库和应用程序是否位于工作组、家庭组或域环境中 数据库计算机是否已具有SQL Express或更高版本 应用程序计算机是否已安装Access或Access运行时。
      如果是,请选择哪个版本。 所有或仅有限的用户都可以访问。
      如果受限,将访问数据的用户的用户组名称是什么。 该组是否已存在 如果没有,请列出应添加到组中的用户的名称 还有关于管理员用户和组的问题

      该脚本启动虚拟机并通过一系列步骤代表MDB和SQL DB进行部署。然后为服务器安装创建一个MSI,并包含一个设置环境的自定义脚本。最后将MDB打包到一个漂亮的MSI中

      此后,我增强了该过程,允许在服务器安装开始时回答一些问题。这意味着可以根据先前提出的问题从工作站或域中的列表中选择用户组和用户

      如果用户应用程序用户是工作站或域的管理员组的成员。他们有额外的菜单选项。允许他们从工作站或域的DB用户组中添加或删除成员。我觉得这很有帮助

      我现在进入下一个阶段,希望将我的评估应用程序作为SasS(软件即服务)(租赁)托管。因此,该应用程序可以在任何HTML5浏览器、Windows或Mac中作为虚拟桌面或Android和苹果设备使用。话虽如此,移动设备上的访问有点难看


      当我启动并运行时,我将向其他人提供该平台

      谢谢你的意见。事实上,作为系统管理员,我会选择这个解决方案。问题是,软件应该是可下载的最终用户产品,即目标群体包括不知道“用户群体”是什么的人……在这种情况下,SQL Server身份验证和SQL Server角色在我看来是可行的,不是吗?是的,可能就是这样。我只是想知道这种方法是否有什么问题,因为我觉得SQL身份验证现在被认为有点“过时”。我发现Windows身份验证要容易得多,但在您的分发方案中,您有不同的考虑,所以我不认为它不合适。客户端和数据库服务器