数据库设计 – 通过第三个数据库使用相同的登录连接两个数据库更
我们有以下设置:
>包含桌面软件使用的私有数据的多个生产数据库 目前,网站登录到Web数据库,Web数据库连接到中间数据库以在生产数据库上提取数据或执行存储过程.所有数据库都在同一个SQL实例上,整个过程使用相同的用户帐户. 用户帐户具有对Web数据库和中间数据库的完全访问权限,但只能访问特定视图和私有数据库的存储过程 这真的比让公共数据库直接连接到私有数据库更安全吗? 看起来中间数据库只是使事情复杂化,因为相同的登录用于访问所有数据库中的数据,并且它已经仅限于私有数据库中所需的视图/ SP.我希望删除它. 解决方法有一件事跳出来:
问题 所以假设的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? 最后,似乎没有理由根据“不需要事务完整性”建立单独的数据库.看到这个问题来解释一下: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |