Azure Synapse Analytics湖数据库中配置用户仅可见指定数据库的权限问题
Azure Synapse Analytics湖数据库中配置用户仅可见指定数据库的权限问题
你遇到的这个问题其实挺常见的——默认情况下,所有登录用户都会通过public角色获得查看所有数据库的权限,而直接拒绝public的VIEW ANY DATABASE权限又会导致用户连登录都失败,因为系统默认需要用户能看到至少一个数据库才能正常登录。咱们一步步来解决:
第一步:先恢复public角色的默认权限
先把之前对public的拒绝操作撤销,不然后续的权限配置没法正常生效:
USE master; GO REVOKE DENY VIEW ANY DATABASE TO public; GO
第二步:限制目标用户的全局数据库查看权限
接下来,针对你要限制的用户(也就是Alias@something.onmicrosoft.com这个登录账号),拒绝他查看所有数据库的全局权限:
USE master; GO DENY VIEW ANY DATABASE TO [Alias@something.onmicrosoft.com]; GO
第三步:授予用户查看指定数据库的权限
现在用户默认看不到任何数据库了,咱们给他单独授权查看MyDB的权限:
USE master; GO GRANT VIEW DEFINITION ON DATABASE::MyDB TO [Alias@something.onmicrosoft.com]; GO
第四步:确认目标数据库的读取权限正常
这一步你之前已经配置过了,不过可以再确认下:
USE MyDB; GO ALTER ROLE db_datareader ADD MEMBER Alias; GO
这样配置完成后,用户登录SSMS连接无服务器SQL端点时,就只能看到MyDB这一个数据库了,而且只能读取里面的数据,其他数据库会被完全隐藏。
需要注意的是,在Azure Synapse无服务器SQL环境中,权限继承逻辑和传统SQL Server略有差异,但这套配置逻辑完全适用。之后如果要调整其他用户的权限,也可以按照这个思路来:先限制全局查看权限,再单独授权指定数据库的访问权限。
备注:内容来源于stack exchange,提问作者Slow Snail
相关产品推荐
相关产品推荐

