如果我想限制用户对数据库的访问,是让数据库处理这个问题更好,还是制作一个单独的程序来桥接两者

本文关键字:数据库 一个 程序 单独 桥接 用户 访问 问题 如果 处理 更好 | 更新日期: 2023-09-27 18:23:56

我有一个SQL Server,它保存了大量数据。在其他几个客户端上运行的应用程序都访问该服务器以获取各种数据进行处理。这个程序的前一个版本几乎允许任何使用该程序的人无限制地访问数据库中的所有数据。现在,我正在制作这个应用程序的新版本,并希望实现一些奇特的功能,比如使用用户名登录,拥有不同级别的用户,并相应地限制他们可以访问/更改的内容。

我对MSSQL服务器的了解有点有限,尽管还在增长,我知道我可以在数据库本身中做很多不同的事情来限制谁可以访问什么。另一种选择是关闭数据库与传出连接的连接,只需在本地DB服务器上运行一个应用程序,该应用程序通过套接字处理传入连接,验证用户,并检查他们试图访问的内容是否可以访问。对我来说,这似乎是一个更简单的想法;我只需要担心一个数据库用户,并且我可以严格控制不同级别的用户访问哪些表(如果需要,还可以访问列)。尽管正如我所说,SQL server不是我的专长,我想知道我是否过于复杂化了在数据库中完成一件非常容易的事情,或者可能会给自己带来一些我可能没有想到的其他问题?用户不多。目前还不到10个,预计不会增长,所以不必担心这个单独的应用程序上运行的套接字或线程太多。

我在这里最担心的是数据库中包含了一些重要的个人信息。无论如何,这不是一家大公司,但与此同时,如果有人掌握了这些数据,那将是非常糟糕的(是的,这些数据是加密的)。对于旧的应用程序,如果你有正确的连接字符串,你可以进入并获得你想要的任何东西,虽然这从未发生过,但我不想成为那些在需要它之后实现更强安全性的程序员之一。

如果我想限制用户对数据库的访问,是让数据库处理这个问题更好,还是制作一个单独的程序来桥接两者

试图构建自己注定会失败。SqlServer已经内置了大量的安全功能。

我认为解决您问题的最佳方案是使用集成安全性(即用户使用他们的实际Windows凭据登录)。这也会使您的所有连接字符串相同。然后,您可以只将对表/模式的访问权限授予那些应该有权访问它们的人。

相关文章: