【问题标题】:SELECT Access to SQL 2005 View with Restricted Access to Underlying Table选择对 SQL 2005 视图的访问,对基础表的访问受到限制
【发布时间】:2012-05-12 07:50:19
【问题描述】:

我在 SQL 2005 数据库中创建了一个 SQL 用户 ID、角色和架构。我在此架构下创建了一个 SQL 视图,该视图从 dbo 架构中的表中进行选择。但是,我不希望 SQL 用户能够从此表中进行选择。

例如:

CREATE VIEW [MySchema].[vwMyView]
AS
SELECT
    *
FROM
    dbo.MyTable

用户可以访问 MySchema 视图并且可以毫无问题地查询 vwMyView。但是,它们也可以从 dbo.MyTable 中选择。

如何限制对 dbo.MyTable 的所有访问?如果我拒绝对 dbo 架构的 SELECT 权限,则用户无法从视图中进行选择。

【问题讨论】:

  • 您是否尝试过撤销他们对视图的访问权限? REVOKE privilege_name ON object_name FROM {user_name |PUBLIC |role_name}
  • 我不想撤销他们对视图的访问,只撤销视图使用的表。

标签: sql security sql-server-2005 view schema


【解决方案1】:
REVOKE select 
ON tablename
FROM {user_name} 

仅撤销 select 本身并不会撤销其他权限。

然后在视图上执行显式授权选择。不确定这是否可行,因为我从未尝试过这种方式,但值得一试。

【讨论】:

  • 我不确定这是否能解决问题。 OP 仍然希望用户能够从视图中进行选择,而不是直接从基础表中进行选择。
  • 此语句撤销视图的 SELECT 权限。 SQL 用户应该有权从视图访问 SELECT,但不能访问表。
  • 正确。我得到了表格和视图要求。编辑了答案以提供一些尝试。现在我很好奇这是否可行
  • 谢谢,Brian,但这并没有改变任何东西。 user_name 仍然能够从视图和基础表中进行选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-05
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多