如何阻止访问 Azure SQL 数据库中的表、视图和存储过程?

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

有人可以让我知道如何阻止用户(创建者除外)访问或查看某些表、视图和存储过程吗?

我目前正在使用 SSMS,但不确定要选择哪些选项:

我已更新此问题以解决@Bhavani 下面提供的解决方案,因为他的建议似乎不起作用。

我将 Azure Active Directory 用户添加到数据库,如下所示:

CREATE USER [[email protected]] 
FROM EXTERNAL PROVIDER 
WITH DEFAULT_SCHEMA = config;

ALTER ROLE db_datareader ADD MEMBER [[email protected]]; 

然后我拒绝了对名为 dbo.UpdatedProducts 的表的所有访问,如下所示

完成上述操作后,当 [电子邮件受保护] 访问数据库时,他仍然可以在表 dbo.UpdatedProducts 上读取、选择、更改等。

如果我错过了某个步骤,有人可以告诉我吗?

azure-sql-database ssms
1个回答
1
投票

以下是有关如何阻止用户(创建者除外)访问或查看某些数据库对象的分步指南:

  • 右键单击表、视图或存储过程,然后选择“属性”。
  • 转到“权限”选项卡。
  • 点击“搜索”找到您想要授予或拒绝权限的用户或角色,如下图:

enter image description here

  • 在“[用户/角色]的显式权限”部分中,为您要限制的特定权限选择“拒绝”或“授予”。例如,如果要访问表、视图或存储过程数据,可以授予选择选项的权限,如下所示:

enter image description here

与 AAD 用户合作时,请务必注意权限是通过角色和成员身份管理的。不要使用

DENY
权限,而是考虑使用
GRANT
REVOKE
的组合来管理权限。拒绝权限使用起来可能很棘手,并且由于继承的原因可能并不总是按预期运行。

-- Revoke permissions explicitly if previously granted
REVOKE SELECT, INSERT, UPDATE, DELETE ON dbo.UpdatedProducts TO [[email protected]];

-- Grant only the necessary permissions
GRANT SELECT ON dbo.UpdatedProducts TO [[email protected]];
© www.soinside.com 2019 - 2024. All rights reserved.