社区首页 >问答首页 >如何检查Azure SQL数据库中特定用户的所有访问权限?

如何检查Azure SQL数据库中特定用户的所有访问权限?
EN

Stack Overflow用户
提问于 2019-02-01 00:07:40
回答 1查看 5.5K关注 0票数 1

我有以下关于模式/特权的问题:

  1. 用户可以有多个DB角色(模式)吗?
  2. db_denydatareader是用来干什么的?(数据库之间似乎可以有不同的DB角色,对吗?)
  3. 如果只希望用户读取特定数据库中的数据,那么db_datareader和db_denydatawriter之间有什么区别?
  4. 我试图从模式中撤销SELECT权限(TestUser是默认模式db_datareader),为什么它仍然可以搜索表呢? 将SCHEMA::db_datareader上的SELECT撤销为TestUser;
  5. 如何将选择和更新权限授予少数表,只授予用户,而不授予所有表?(即没有删除和插入权限)
  6. 这些系统特权指的是什么,我在sys.objects表中找不到? 从sys.database_permissions中选择* major_id <= 0;

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-01 03:57:55

似乎您认为模式和角色是相同的,但它们并不相同。角色是安全成员身份容器,主体可以是角色的成员。架构包含数据库架构绑定对象,它们有助于将数据库对象组合在一起,并且属于主体。当您创建一个新用户时,您可以选择他的默认架构,将他添加到某些角色,并授予他对模式的所有权。

db_denydatareader固定数据库角色的成员不能读取数据库中的用户表中的任何数据。

关于db_datareader和db_denydatawriter的区别。db_datareader授予所有表的select权限,并且不影响任何insert、update、delete权限。同时,db_denydatawriter拒绝对所有表进行插入、更新和删除权限,拒绝对任何表进行任何更改。即使有人被直接授予插入权限,他们仍然无法插入,因为拒绝超限权限授予。将用户分配给db_denydatawriter角色意味着他们将永远无法对数据库进行任何更改,不管他们拥有什么其他权限。拒绝优先于授予。

关于问题#4,可以对架构上的表进行分组,然后拒绝对主或用户对架构的选择权限。db_datareader是一个固定的数据库角色,它不是模式。

代码语言:javascript
代码运行次数:0
复制
DENY SELECT ON schema::[SchemaName] TO [user_name]

类似地,您可以通过包含一组表的数据库上的架构授予SELECT和UPDATE权限。

代码语言:javascript
代码运行次数:0
复制
GRANT SELECT, UPDATE on SCHEMA::SchemaName TO [user_name]

您可以找到数据库角色这里的列表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54475320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档