【发布时间】:2011-03-15 10:08:26
【问题描述】:
我一直在 Access 2003 中开发一个使用 SQL Server 作为后端数据存储的应用程序。 Access 仅用作 GUI,不存储任何数据。应用程序中的所有代码都是用 VBA 编写的,使用 ADO 进行数据访问。
在最近的会议中,在我的组织中工作的 DBA 越来越担心应用程序逻辑控制哪些数据可用于查看和更新这一事实。到目前为止,我一直在开发应用程序的方式是使用单个数据库登录来访问数据库。此数据库登录名是唯一允许访问数据库的用户,所有其他数据库用户(DBA 类型除外)都受到限制。
该项目的 DBA 坚持应用程序的每个用户都将他们的帐户映射到数据库中他们应该有权访问的那些对象。我当然可以看到他的担忧,这就是为什么我希望提出两个问题......
使用单个应用程序级别登录数据库是一种不好的做法吗?我曾计划实施一个基于角色的安全模型,其中授予的“访问”用户取决于他们的应用程序角色。但是,应用程序逻辑决定是否允许某些查询/更新继续进行。
有谁知道一些资源(文章/书籍),这些资源(文章/书籍)介绍了如何设计一个应用程序,其中数据库访问是从 SQL Server 内部而不是通过应用程序控制的?
【问题讨论】:
-
在我看来,错误在于使用 SQL Server 身份验证而不是 Windows。如果您执行后者,则无需将登录凭据存储在 Access 前端。忽略那些说 Access 是一个糟糕的前端的顽固分子——它是一个很棒的前端,但你必须构建它才能正常工作,而且在我看来,Windows 身份验证是要求之一。
-
我们确实在使用 Windows 身份验证。我个人认为 .NET(ASP.NET 或 WinForms)会是更好的解决方案,但是,这不是我的决定。
标签: sql-server ms-access permissions