数据库设计 – 通过第三个数据库使用相同的登录连接两个数据库更安全吗?

前端之家收集整理的这篇文章主要介绍了数据库设计 – 通过第三个数据库使用相同的登录连接两个数据库更安全吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们有以下设置:

>包含桌面软件使用的私有数据的多个生产数据库
>公共网站的Web数据库,需要来自私有数据库的一些数据
>中间数据库,包含从私有数据库提取数据的一些视图和存储过程

目前,网站登录到Web数据库,Web数据库连接到中间数据库以在生产数据库提取数据或执行存储过程.所有数据库都在同一个sql实例上,整个过程使用相同的用户帐户.

用户帐户具有对Web数据库和中间数据库的完全访问权限,但只能访问特定视图和私有数据库的存储过程

这真的比让公共数据库直接连接到私有数据库更安全吗?

看起来中间数据库只是使事情复杂化,因为相同的登录用于访问所有数据库中的数据,并且它已经仅限于私有数据库中所需的视图/ SP.我希望删除它.

解决方法

有一件事跳出来:

The entire process uses the same set of login credentials

问题

所以假设的userX(无论是使用Excel的一些meatsack,还是IIS AppPool Identity)都可以看到一些视图和代码.这些视图和代码在哪个数据库中无关紧要,因为无论如何都在3个数据库中设置了userX.

但是,你失去了这样的所有权链接.

假设WebDB.dbo.SomeProc调用PrivateDB.dbo.SoMetable. UserX需要两个对象的权限.如果这是使用OneDB.dbo.SoMetable的OneDB.WebGUI.SomeProc,那么只有OneDB.WebGUI.SomeProc需要权限.不检查具有相同所有者的引用对象的权限.

注意:我对cross database ownership chaining没有太深入了解.我只知道普通的旧“ownership chaining”

现在,根据评论,您确实有2个可以组合的数据库.最初暗示的不是3.但是,可以组合中间体和网.

其他“私人”数据库​​也许可以合并,但这将是一个单独的问题.有关“一个数据库或多个数据库”的更全面讨论,请参见底部链接

解?

如果额外的数据库只是代码容器,那么模式是一个更好的主意.

这听起来像你使用“数据库”,你应该使用“架构”(在sql Server意义上,而不是MysqL意义上).我有一个WebGUI架构,一个Helper或Common架构(用于替换Intermediate数据库)和Desktop架构.这样,您可以根据客户端分离权限,只需拥有一个数据库

使用一个数据库(除了“所有权链接”),您还可以开始考虑索引视图,SCHEMABINDING(我总是使用它),这样就无法通过单独的数据库来完成

有关模式的更多信息,请参阅以下问题:

> Schema design – best practices?
> Over use/correct use of schemas?

最后,似乎没有理由根据“不需要事务完整性”建立单独的数据库.看到这个问题来解释一下:
Decision criteria on when to use a non-dbo schema vs a new Database

猜你在找的MsSQL相关文章