我在sql server中限制了表级的选择访问权限,但用户可以访问在该表之上创建的视图。但用户可以访问在该表之上创建的视图。

问题描述 投票:0回答:1

我在sql server(2016)中限制了1个单表'A'的表级选择访问。但是用户能够访问在该表'A'上面创建的视图。

When users run select statement on table 'A'(select * from table 'A') users are getting 'select permission is denied on object table 'A' ' message.when users run select statement on view (select * from view 'A') users are able to access all data.

用户可以通过在表'A'上写select语句来创建新的视图。

我怎样才能限制用户从视图中访问表'A'。

sql sql-server database-administration
1个回答
1
投票

这是由于所有权链的预期行为。只要视图和表具有相同的所有者(AUTHORIZATION),就不会检查视图引用的表的权限。

要打破所有权链,你可以把表移到不同的模式(与视图模式不同的用户拥有),或者改成表的所有者。下面举例说明。

--move table to different schema
CREATE USER RestricedTablesOwner WITHOUT LOGIN;
GO
CREATE SCHEMA RestricedTables AUTHORIZATION RestricedTablesOwner;
GO
ALTER SCHEMA RestricedTables TRANSFER dbo.A;
GO

--change table to different owner, retaining same schema
ALTER AUTHORIZATION ON OBJECT::dbo.A TO RestricedTablesOwner;
© www.soinside.com 2019 - 2024. All rights reserved.