我创建了名为limited_a的登录名,然后为数据库test_db创建了名为limited_u的limited_a用户。 我有表 t1、t2、t3、t4,用户 limit_u 仅对 t1 和 t2 有选择权限 他们是一个名为 get_t3 的视图,它从表 t3 中检索数据,还有一个名为 update_t4 的过程,它更新表 t4 中的数据。据我们所知,用户 limit_u 无权访问表 t3 和表 t4,但仍然可以使用过程视图或任何其他方法(如函数)间接操作数据。我需要限制用户 limted_u。 如何实现对用户的限制。 我无法限制用户访问过程或视图,但我需要限制用户通过视图和过程访问表。
我已经尝试使用更改授权来实现这一点,但随后它撤销了其他用户的权限。 我尝试拒绝,撤销对表的权限,但用户仍然可以通过视图或过程访问表
以下是如何限制数据库用户通过 SQL Server 中的视图或过程间接访问表:
授予视图和程序权限:
示例:
T-SQL:
CREATE TABLE Customers (
CustomerID int PRIMARY KEY,
CustomerName nvarchar(50) NOT NULL,
Email nvarchar(100),
Phone varchar(20)
);
CREATE VIEW CustomerList AS
SELECT CustomerID, CustomerName
FROM Customers;
T-SQL:
CREATE LOGIN SalesUser WITH PASSWORD = 'StrongPassword!';
CREATE USER SalesUser FOR LOGIN SalesUser;
GRANT SELECT ON CustomerList TO SalesUser;
在此场景中,SalesUser 可以通过 CustomerList 视图访问客户名称和 ID,但他们无法直接访问 Customers 表以及电子邮件地址和电话号码等潜在敏感信息。
其他技术:
记住: