我怎样才能从我的用户锁定我的 MS-SQL 数据库,但仍然通过 ODBC 访问它?
Posted
技术标签:
【中文标题】我怎样才能从我的用户锁定我的 MS-SQL 数据库,但仍然通过 ODBC 访问它?【英文标题】:How can I lock down my MS-SQL DB from my users and yet still access it through ODBC? 【发布时间】:2008-09-08 17:04:17 【问题描述】:我有一个正在通过 ODBC 连接访问的 ms-access 应用程序和 ms-sql db。我试图强迫我的用户通过应用程序部分仅更新数据,但我不在乎他们是直接读取数据还是通过他们自己的自定义 ms-access db(他们使用它)用于创建临时报告)。
我正在寻找一种方法,使数据只有在使用我分发给他们的已编译 .mde 文件时才可编辑。我知道我可以将数据设置为仅供一般人群读取,并且可以对特定用户进行编辑。
有没有办法让 ms-sql 让数据只有在他们通过我的罐装 mde 访问数据时才可编辑?
想一想,有没有办法让 ms-access 以其他用户身份登录数据库(或在连接后更改登录名)?
@杰克, 是的,它使用表格。我想要做的只是在我弹出启动板/主菜单表单时切换用户一次。
@彼得, 这确实是我前进的方向。我还没有确定如何切换到第二个 ID。我并不担心密码被嗅探,用户都是内部的,并且在内部 LAN 上。如果他们能嗅出那个密码,他们当然可以嗅出我的特权 ID。
@没有人, 现在它的安全性是默默无闻的。我为用户提供了一个特殊的 .mdb 来进行报告,让他们可以读取数据,但不能更新数据。他们不知道通过 ODBC 连接重新链接到表。一个稍微懂 ms-access/DB 的用户可以在几秒钟内通过我所做的事情 - 并且有一些人认为自己是 DBA,所以他们最终会弄明白的。
【问题讨论】:
【参考方案1】:有一种方法可以对内部用户有效,但可能会被黑客入侵。您为每个用户创建两个 ID。一种是具有只读访问权限的报告 ID。这是用户知道的 ID:Fred / mypassword
第二个是可以做更新的ID。该 ID 是 Fred_app / mypassword_mangled。他们使用 Fred 登录您的应用程序。当您的应用程序访问数据时,它会使用应用程序 ID。
这可以被嗅探,但对于许多应用程序来说已经足够了。
【讨论】:
【参考方案2】:您的应用程序是否允许链接表更新或通过表单进行?听起来您使用具有不同角色的集中式用户的想法是可行的方法。是的,您可以更改用户,但我可能会引入更多编码,一旦您开始添加越来越多的代码,其他解决方案(存储过程等)可能听起来更有吸引力。
【讨论】:
以上是关于我怎样才能从我的用户锁定我的 MS-SQL 数据库,但仍然通过 ODBC 访问它?的主要内容,如果未能解决你的问题,请参考以下文章