数据库访问控制:应用程序或数据库级控制?

web*_*orm 5 sql-server permissions ms-access

我一直在Access 2003中开发一个使用SQL Server作为后端数据存储的应用程序.Access仅用作GUI,不存储任何数据.应用程序中的所有代码都是使用ADO进行数据访问的VBA编写的.

在最近的会议中,在我的组织中工作的DBA越来越担心应用程序逻辑控制哪些数据可供查看和更新​​.到目前为止,我一直在开发应用程序的方法是使用单个数据库登录来访问数据库.此数据库登录是唯一允许访问数据库的用户,并且所有其他数据库用户(DBA类型除外)都受到限制.

此项目的DBA坚持要求应用程序的每个用户将其帐户仅映射到他们应该访问的数据库中的那些对象.我当然可以看到他的担忧,这就是为什么我希望提出两个问题......

  1. 是否有单一的应用程序级别登录数据库是一种不好的做法?我曾计划实施一个基于角色的安全模型,其中"访问"用户的使用取决于他们的应用程序角色.但是,应用程序逻辑确定是否允许某些查询/更新继续进行.

  2. 有没有人知道一些资源(文章/书籍)如何设计一个应用程序,其中数据库访问是从SQL Server内部而不是通过应用程序控制的?

Chr*_*ver 1

在我看来

  1. 是的,这是不好的做法,因为用户可以使用凭据以其他方式访问数据库,绕过应用程序访问控制并执行他们不应该执行的操作。如果您位于 Windows 域中,则可以在 AD 中为每个角色创建一个组并将用户分配到该组,然后根据该组应用权限,这样您就不必向 SQL 添加新用户。

如果沿着 Active Directory 路径,您可以使用 LDAP 查询来查看用户属于哪些组,然后您可以决定他们是否应该具有访问权限。

阅读其他对此的回应会很有趣。