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

时间:2010-01-18 16:58:19

标签: sql-server security ms-access deployment sql-server-express

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

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


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

  • SQL Server Compact Edition :不支持视图。

  • Application Roles :这似乎是最佳做法。但是,它需要在访问数据库之前执行存储过程(我无法在连接字符串中传递应用程序凭据)。因此,我不能将此用于attach the SQL Server tables as a linked tables in the Access MDB,这是我们的Access应用程序的要求。

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

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

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

    < / LI>

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

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

3 个答案:

答案 0 :(得分:1)

@Heinzi写道:

  

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

此处通常的方法是添加自定义用户组(例如“db-users”)并将用户放入该组。这样,您就可以准确控制谁被允许访问。

答案 1 :(得分:1)

怎么样:

  • 使用预先配置为连接到本地安装的SQL Server实例的Access ADP项目。
  • 使用BuiltIn \ Users组(或SQL身份验证)进行连接,但仅授予最低限度的凭据。足够登录和......
  • 调用sp_setappprole以“提升”客户端连接到您定义的应用程序角色的身份。

答案 2 :(得分:1)

如果听起来像你只有冰山一角。在销售和部署访问SQL应用程序时。

我采取了不同的路线。我将虚拟计算机作为独立工作站,并将域服务器和工作站全部虚拟化。

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

该脚本启动虚拟机并执行一系列步骤来代理MDB和SQL DB以进行部署。然后为服务器安装创建一个MSI,其中包含一个用于设置环境的自定义脚本。最后将MDB打包成一个不错的MSI。

我已经改进了流程,以便在服务器安装开始时回答一些问题。这意味着可以从工作站或域中的列表中选择用户组和用户,具体取决于之前提出的问题。

如果用户,则应用用户是工作站或域的管理员组的成员。他们获得额外的菜单选项。这允许他们在工作站或域的数据库用户组中添加或删除成员。我觉得这很有帮助。

我现在正在进入下一阶段,并将我的评估应用程序托管为SasS(软件即服务)(租赁)。因此,该应用程序可以在任何HTML5浏览器,Windows或Mac中用作虚拟桌面或Android和Apple设备。说过Access在移动设备上有点难看。

当我启动并运行时,我会将平台提供给其他人。