首页 > 解决方案 > 如何在 Azure 数据仓库(突触)中授予架构级别权限?

问题描述

在我们的 Azure SQL 数据仓库 (Synapse) 中,我们有两个架构dbostaging. 我只想将架构级别权限授予我的Azure Active Directory 组用户“dbo”架构。我正在寻找的预期行为是,在授予此权限后,Azure Active Directory 组staging用户在 ssms 中打开数据库时不应看到架构。我尝试了以下方法来创建用户并授予权限,但用户仍然可以staging在他们的 ssms 中看到架构。

  1. 我使用以下内容创建了用户并添加了db_datareader角色:
CREATE USER [Azure Active Directory Group] FROM EXTERNAL PROVIDER WITH DEFAULT_SCHEMA = dbo;
EXEC sp_addrolemember 'db_datareader', 'Azure Active Directory Group'
  1. 然后使用以下方式授予架构级别权限:
GRANT SELECT ON SCHEMA::dbo TO [Azure Active Directory Group]
  1. 以下查询返回:
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';

在此处输入图像描述

有人知道我如何授予架构级别的权限吗?我被困住了!

标签: sql-serverazureazure-active-directorydatabase-schemaazure-synapse

解决方案


db_datareader : db_datareader 固定数据库角色的成员可以从所有用户表中读取所有数据。这意味着该db_datareader角色可以查看所有模式。所以我们需要撤销这个权限。

解决问题的方法有两种:

  1. 撤销db_datareader权限并将权限授予用户。
EXEC sp_droprolemember 'db_datareader', 'Azure Active Directory Group'

GRANT SELECT ON SCHEMA::dbo TO [Azure Active Directory Group]
  1. 我们还可以添加自定义角色并授予角色权限。
CREATE ROLE <Role_Name>; 

GRANT SELECT ON schema::dbo TO <Role_Name>;

EXEC sp_addrolemember '<Role_Name>', 'Azure Active Directory Group'

推荐阅读