如何解决如何在 Azure 数据仓库 (Synapse) 中授予架构级别权限?
在我们的 Azure SQL 数据仓库 (Synapse) 中,我们有两个架构 dbo
和 staging
。
我想仅向我的 Azure Active Directory 组 用户授予“dbo”架构的架构级别权限。我正在寻找的预期行为是,在授予此权限后,Azure Active Directory 组 用户在 ssms 中打开数据库时不应看到 staging
架构。我尝试了以下方法来创建用户并授予权限,但用户仍会在其 ssms 中看到 staging
架构。
- 我使用以下内容创建了用户并添加了
db_datareader
角色:
CREATE USER [Azure Active Directory Group] FROM EXTERNAL PROVIDER WITH DEFAULT_SCHEMA = dbo;
EXEC sp_addrolemember 'db_datareader','Azure Active Directory Group'
- 然后使用以下方法授予架构级权限:
GRANT SELECT ON SCHEMA::dbo TO [Azure Active Directory Group]
- 返回以下查询:
select pr.name, pr.type_desc, pe.permission_name, pe.state_desc, pe.class_desc, object_name(pe.major_id)
FROM sys.database_principals AS pr
JOIN sys.database_permissions AS pe
ON pe.grantee_principal_id = pr.principal_id where name='Azure Active Directory Group Users';
有谁知道我如何授予架构级别的权限我被卡住了! 谢谢
解决方法
db_datareader:db_datareader 固定数据库角色的成员可以读取所有用户表中的所有数据。这意味着 db_datareader
角色可以查看所有架构。所以我们需要撤销这个权限。
有两种方法可以解决问题:
- 撤销
db_datareader
权限并授予用户权限。
EXEC sp_droprolemember 'db_datareader','Azure Active Directory Group'
GRANT SELECT ON SCHEMA::dbo TO [Azure Active Directory Group]
- 我们还可以添加自定义角色并授予角色权限。
CREATE ROLE <Role_Name>;
GRANT SELECT ON schema::dbo TO <Role_Name>;
EXEC sp_addrolemember '<Role_Name>','Azure Active Directory Group'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。