具有 Active Directory 用户的 MS 访问权限

MS Access permissions with Active Directory users

是否可以使用 Active Directory 用户设置访问权限?
编辑:总体目标是允许某些用户查看某些表并拒绝其他用户的此权限。我想知道是否可以使用活动目录用户来完成。


取决于访问权限的含义。访问用户级别的安全性不会以任何方式与 Active Directory 交互。 ACC:下载中心提供的 Microsoft Access 安全常见问题解答 建议您重读此常见问题解答数次。我必须承认我从来没有完全理解它。另请参阅 ACC2000:如何保护 Microsoft Access 数据库的概述

现在您可以做的是读取登录用户和组等的 Active Directory 数据。然后使用一些本地表将各种 AD 组以及登录用户 ID 映射到 Access 中的各种对象和菜单项,您可以以这种方式控制访问。但是请注意,精明的用户等可能会弄乱本地表。

我找到的最有用的 URL 是以下新闻组发布需要帮助,通过使用 VB 选项获取 W2K 广告域 (fqdn) 列表我在处理这个主题时保留了一页笔记,但它们可能会也可能不会有用。如果需要,我可以发布它们。


我同意 Tony 和 Philippe 发布的内容。我只想补充一点:

如果您真的需要安全性,那么 Jet/ACE 后端将无法为"安全性"一词的任何重要定义做好工作。 Jet ULS 是可破解的并且相当容易,因此对于具有基本编程能力的任何人来说都是如此。因此,如果您正在寻找数据安全性,Philippe 是正确的,您应该选择不同的数据库引擎。

但如果您只想在前端应用程序中控制 ACCESS,您有三个选择:

  • 在您的用户数据库中维护几个表以及每个对象的权限。

  • 实现 Jet 用户级安全性。

  • 使用 AD 用户/组代替 Jet ULS。

  • 这些选择都不是天衣无缝的。

    所有这些都意味着您的前端必须经过编程才能处理这些问题。

    如果您出于安全原因限制访问,那么使用与 Windows 安全性集成的数据库引擎(即 SQL Server)是有意义的。

    如果您这样做只是为了简化程序流程,并在运行时调整应用程序以适应特定用户的需求,那么您不一定需要数据存储的安全性,因为您需要一种方法来保持跟踪谁在使用数据库以及他们所属的组,然后他们应该有权访问应用程序的哪些部分(其次,访问级别、读/写、只读等)。

    多年来,我一直将 Jet ULS 用于最后一个目的,但从未对它完全满意,因为让它易于用户管理并不容易。与 AD 集成将是一个不错的选择,但这意味着管理您的应用程序的人需要具有管理 AD 用户的权限。这可能不是您友好的邻居系统管理员愿意同意的。

    另一方面,如果您最终需要后端安全性和前端访问控制,则无法击败使用 Windows 安全性通过 AD 进行一站式购物的 SQL Server 后端。


    根据您最近几天在 Access 上发布的几个问题,我认为您应该考虑将表(而不是表单)从 Access/mdb 文件切换到 SQLExpress 服务器,所有这些安全问题都可以易于管理。升级您的数据库,将您的连接字符串作为公共变量添加到您的客户端应用程序中(或在 xml 文件、本地表或任何其他可以保存该字符串的内容中,即使是访问文件的额外属性也可以通过 currentDb 来解决问题.createProperty 方法),然后进行真正的客户端-服务器配置。