【问题标题】:Prevent Users Creating Table防止用户创建表
【发布时间】:2010-02-03 11:56:40
【问题描述】:

我正在尝试使用工作组安全性来保护 MS Access 2003 mdb。我已经设置了大部分(使用新的 MDW 等),但我无法阻止人们在数据库中创建新表,如果他们有权打开它。我错过了什么吗?

所有帐户都没有任何权限,我都是通过组来完成的。 用户只有对数据库的 Open\Run 访问权限,没有对 的访问权限,并且只有对所有其他表(包括 MSys* 表)的“读取数据”访问权限。

有什么想法还是我正在尝试做不可能的事情?

--更新--

我已尝试按照建议使用向导,但这仍然给我留下了同样的问题。我创建了一个空白数据库并在其上运行向导。分配了 2 个用户,我和用户,并删除了对标准组的所有访问权限。我将 Me 添加到 Admin 组并将 User 添加到 Read Only 组。

如预期的那样,不使用 MDW 会拒绝访问。以我身份登录允许完全访问(设计事物、添加数据、删除数据等),以用户身份登录将允许读取数据不存在的表,但不能添加数据或设计它们(如预期的那样),但它仍然允许创建一个新表,然后用户将拥有添加、删除等的完全访问权限。

【问题讨论】:

  • 您没有正确保护它。您必须运行安全向导,该向导会创建一个新的工作组文件,该文件的 ADMIN 组与默认工作组文件(都具有相同的 ADMIN 组)不同。通常的做法是删除内置组和用户的所有权限,并使用客户组提供访问权限。
  • 我已经添加了更多详细信息到我目前所尝试的内容中,其中包括向导。我开始认为这是对工作组安全性的限制,我将不得不在 Code 中工作。 B.
  • 顺便说一句:很长一段时间以来,我一直使用您的引述作为签名,因为它每次都让我微笑:引述(David W. Fenton):我们可能会以完全相同的方式感到困惑,但混淆可能像 Null 一样,并且不可比较。
  • 哇,我不记得这样的报价。我以前很聪明!
  • 您是否删除了顶级数据库对象的权限?我已经忘记了这里的细节,但我知道我有一个应用程序,它仅在防止创建表的情况下是安全的(其他一切都是开放的)。不过,我无法检查它是如何完成的。

标签: security ms-access permissions


【解决方案1】:

所以,在发布这个问题一年多之后,我又尝试解决它,但他的成功时间!

我遇到了Microsoft Accesss Permissions Explorer,这表明保护数据库的标准方法(手动和使用向导)仍然为 Users 组提供显式 Create 权限在 Tabes 容器上。同样的软件还允许撤销上述权限,所以现在我可以拥有一个完全安全的数据库,任何用户都可以在不使用特殊 MDB 的情况下访问 mdb,但他们只能访问和编辑我希望他们访问的数据。

【讨论】:

  • 该更改是否也阻止了用户保存新查询?抱歉这么晚才问这个问题,但我才找到这个答案。
【解决方案2】:

您的用户可以使用 msAccess 的运行时版本吗?他们将无法创建任何新的 Access 对象,例如表、查询、表单等。

而且运行时版本是免费的,因此您还可以节省许可证!

【讨论】:

  • 运行时版本仍然允许使用 DAO(或 ADO)创建表,所以这不起作用。 :-(
  • 我不太确定。如果用户有可能生成一些 VB 代码并使用它在您的访问文件上发送 DDL 指令,那将是正确的,但这对于 Access 的运行时版本是不可能的。然后,如果您的用户足够聪明,可以做这类事情,他们就可以在 Excel 或 Word 模块中编写相同的代码来创建这些表。在这种情况下,您必须切换到 SQL SERVER 以增强数据库上的一些真正的安全策略。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-07
  • 2013-06-25
相关资源
最近更新 更多