首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨数据库查看权限

跨数据库查看权限
EN

Stack Overflow用户
提问于 2010-07-20 04:21:00
回答 3查看 3.7K关注 0票数 1

我正在使用一个数据库(让我们称它为DB_data),它包含一系列应用程序的所有表。为了尽量减少升级期间的停机时间,已经创建了一个外观数据库(让我们称之为DB_facade),其中包含DB_data中每个表的视图。它还包含针对这些视图工作的所有函数和存储过程。

在尝试锁定DB_data中的安全性时,我们对DB_data中的所有用户的所有表进行了拒绝。所有这些用户也都是在DB_facade中创建的,具有视图的权限。

这里的问题是,由于跨数据库所有权链接,DB_data中的DENYs覆盖了DB_facade中的授权。

由于潜在的安全问题,我希望避免为这两个数据库启用所有权链接(尽管在我最初的测试中,这似乎确实纠正了访问问题)。此外,我们正在尝试最小化对应用程序的影响,因此要求所有访问都通过存储过程和使用证书(例如)是行不通的。

有没有人对如何处理这个问题有其他的建议?

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2010-07-20 05:16:00

如果在DB_data中排除表上的DENY,您会遇到这个问题吗?如果您没有显式授予对这些表的权限,则可以获得所需的安全性,并通过视图获得访问权限。

票数 1
EN

Stack Overflow用户

发布于 2010-07-20 05:29:35

据我所见和所做,sql server不会让你拥有任何权限,除非你明确地这样做了。您应该能够在DB_Data中向用户授予select (或使用角色datareader),只要它是同一个帐户,并且映射到两个数据库(您必须在db_facade上授予select和exec ),就可以正常工作。

票数 0
EN

Stack Overflow用户

发布于 2010-07-21 01:24:47

您可以在DB_data数据库中为DB_facade数据库中的每个视图创建一个视图。新视图将具有从表中进行选择的权限。对DB_data中的视图授予SELECT权限。更改DB_facade上的视图以从DB_data上的视图中进行选择。并且,这些表将设置为DENY。

我认识到这样做的一个缺点:用户仍然可以与DB_data数据库交互。他们不能访问这些表,但他们可以访问新视图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3284722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档