我在 Azure Synapse Analytics Lake 数据库中有多个数据库。现在我试图限制其中一位用户的读取访问权限。我使用以下脚本为用户创建登录名:
使用大师 从外部提供商创建登录 [[电子邮件受保护]]; --在数据库中创建用户。更改数据库的上下文。
使用MyDB -- 在你的数据库中 从登录创建用户别名 [[电子邮件受保护]]; --将用户添加为数据库中指定角色的成员。
ALTER ROLE db_datareader 添加成员别名;
运行此脚本后,用户可以使用 SSMS 连接到 Azure Synpase Analytics 工作区无服务器 sql 端点,但用户仍然可以看到所有数据库,即使他只能访问一个数据库(上面的 MyDB)。有什么办法只能让他看到上面的MyDB吗?
我还尝试通过以下方式拒绝公众查看: 使用[主] 去 拒绝查看任何数据库 [public] 去吧
此后,他将无法再登录。现在我尝试使用以下脚本恢复拒绝:
使用大师 去 授予公众查看任何数据库
使用[大师]
去吧
将视图授予公共任何数据库
去吧
他仍然无法登录。我也尝试过
使用[大师]
去吧
将视图授予任何数据库至 [[电子邮件受保护]]
去吧
仍然没有运气。他如何收到网络拒绝错误。有什么想法如何将湖数据库中的拒绝视图恢复为公众?
如有任何帮助,我们将不胜感激!
您不需要在主数据库中为用户创建登录名。您只需在要授予其访问权限的特定数据库上创建一个包含的数据库用户即可。
USE [YourDatabase];
CREATE USER [YourAzureEntraUser] FROM EXTERNAL PROVIDER;
GO
ALTER ROLE db_datareader ADD MEMBER [YourAzureEntraUser];
GO
用户只有在尝试连接时指定该数据库才能连接,他将无法列出其他数据库。