sql-server - 如何在 Azure 数据仓库(突触)中授予架构级别权限?
问题描述
在我们的 Azure SQL 数据仓库 (Synapse) 中,我们有两个架构dbo
和staging
. 我只想将架构级别权限授予我的Azure Active Directory 组用户“dbo”架构。我正在寻找的预期行为是,在授予此权限后,Azure Active Directory 组staging
用户在 ssms 中打开数据库时不应看到架构。我尝试了以下方法来创建用户并授予权限,但用户仍然可以staging
在他们的 ssms 中看到架构。
- 我使用以下内容创建了用户并添加了
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'
推荐阅读
- python - 如何使用 While 循环生成序列
- android-studio - Ktlint 因通配符导入而失败(无法自动更正)
- flutter - 如何限制 TextField 的最大字数
- python - 如何使用 if 语句处理 pysimplegui 中的复选框
- sqlite - Xamarin Forms SQLLite 将 OneToOne 和 OneToMany 子对象添加到 db
- php - PHP 代码点火器
- arrays - 两个数组元素乘积的最小和
- javascript - 我可以生成一个 javascript 文件的哈希值来检查它是否已被客户端编辑过吗?
- c# - 来自 PayU 的传入请求被阻止?.net 核心 3.1
- intellij-idea - 是什么让 Maven 配置文件没有出现在 Intellij 中?