【问题标题】:Authenticate user in a ms-access database在 ms-access 数据库中验证用户
【发布时间】:2010-09-21 06:47:03
【问题描述】:

我有一个 MS-access 数据库。但它在共享驱动器上。并且要求只有选定数量的人才能使用它。有没有办法对用户进行身份验证?

【问题讨论】:

  • @Varun——你可能想澄清一下。您是在寻找数据库 的安全性还是在整个数据库上寻找安全性?前者,我的意思是有人可以进入,但他们不能删除记录或类似的东西。后者类似于下面诺克斯的回答。
  • 整个数据库的安全性
  • @Varun——您可能想编辑您的问题以反映这一点。我就是这么说的。 :-)

标签: vba ms-access authentication ms-office


【解决方案1】:

是的,打开数据库然后运行工具->安全->用户级安全向导。它将引导您完成创建新工作组文件、创建用户和组以及保护 Access 对象的过程。

【讨论】:

  • 这会阻止人们复制实际文件吗?诺克斯的解决方案似乎涵盖了这一点。
  • 他们可以复制文件,但如果没有工作组文件和有效帐户,他们就无法进入(嗯,并非没有大量工作)。
  • Jet 用户级安全很容易破解。这并不意味着它毫无用处,但这意味着您不应该指望它来保护您的数据不被复制。使用 NTFS 文件权限来控制对 MDB 的访问,并使用 Jet 用户级安全性来控制应用程序内的访问。两者都是必要的。
【解决方案2】:

Access 2007 中不提供用户级安全性。

Get started with Access 2007 security 提供:

  • 信任(启用)禁用的内容 在数据库中
  • 使用密码 加密或解密数据库
  • 打包、签名和部署 Office 访问 2007 数据库

【讨论】:

    【解决方案3】:

    既然 Access 是文件驱动的,为什么不在共享驱动器中创建一个文件夹并将文件夹权限分配给适当的人。

    【讨论】:

    • 哦!我没想到:)
    • 保证允许使用数据库的人有完全权限,不允许的人不能打开数据库。
    【解决方案4】:

    如果您在域中,您是否可以不使用文件级安全性来阻止用户访问它?

    【讨论】:

      【解决方案5】:

      两种解决方案:

      1. 将 Access 文件放在具有适当权限设置的文件共享上。如果您需要提供只读访问权限,这将无法正常工作,因为 Access 无法写出它在打开 Access 文件 (.mdb) 时创建的临时 .ldb 文件。

      2. 将 Access 文件的“数据”移动到 Sql Server 实例...您可以在 SQL Server 中授予权限以限制人们可以执行的操作。我们使用这种方法为每个人提供只读访问权限,然后为特定人员提供读写访问权限。要将数据移动到 SQL,您可以将其导入新的 SQL 数据库,然后将表链接到 Access 文件(重命名以便报告/查询/等继续工作)。

      【讨论】:

        【解决方案6】:

        两者都做。设置目录的访问权限并为其创建一个新的安全文件。

        目录是您的前线安全,并在宏观层面限制访问

        安全文件可用于对各种表格、表单、报告等的访问权限进行分段。您甚至可以将它授予某些人只读访问权限和其他人更完整的权限。

        【讨论】:

          【解决方案7】:

          我在 VBA 中完成所有这些工作。在交换机 Form_Open 子中,使用 windows API 将用户名读入字符串变量,然后检查用户名是否在您的有效用户列表中。如果 OK,则发出欢迎消息,如果不 OK,则退出 Access。

          ' 检查用户 将用户调暗为字符串 将 AuthorizedUser 调暗为布尔值 用户 = UCase(CurrentUser())

          AuthorizedUser = True
          Select Case user
              Case "USER_A":
              Case "USER_B":
              Case "USER_C":     
              Case Else: AuthorizedUser = False
          End Select
          
          If AuthorizedUser = True Then
             MsgBox "Welcome authorized user " & user
          Else
             MsgBox user & "is not Authorized. For access to this database contact User_A"
             DoCmd.Quit
          End If
          

          【讨论】:

          • 在打开数据库的同时按住 shift 不能绕过这个问题吗?
          • 可以的。代码位于开关板 Form_Open 子中,按住 shift 键可在数据库打开时禁用打开开关板。不将此数据库用于关键数据,用户没有访问经验,只能看到编译的 MDE 文件(对 VBA 不可见)。很好的评论,谢谢。 ——迈克
          • 是的,@Mike 如果您的攻击者不聪明,基本上这是一个很好的预防措施。恐怕我们不应该假设这一点。是的,编译的 MDE 文件无法访问 VBA 代码,但正如 Leonard 指出的那样,它们可以绕过密码并完全访问链接的数据库或查询。很快一个 select 语句就变成了一个 drop table 语句。
          猜你喜欢
          • 1970-01-01
          • 2013-03-15
          • 1970-01-01
          • 1970-01-01
          • 2010-09-20
          • 1970-01-01
          • 2019-11-29
          • 1970-01-01
          • 2011-10-27
          相关资源
          最近更新 更多