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

大京

我对架构/权限存在以下问题:

  1. 用户可以具有多个数据库角色(架构)吗?
  2. db_denydatareader的作用是什么?(似乎数据库之间可以具有不同的数据库角色,对吗?)
  3. 如果仅希望用户读取特定数据库中的数据,db_datareader和db_denydatawriter有什么区别?
  4. 我试图直接从架构中撤消SELECT(TestUser使用的是默认架构db_datareader),为什么它仍然可以搜索表?

    REVOKE SELECT ON SCHEMA::db_datareader TO TestUser;
    
  5. 如何仅向用户而非所有表授予对几个表的选择和更新权限?(即没有删除和插入权限)

  6. 我在sys.objects表中找不到这些系统特权,它们指的是什么?

    select * from sys.database_permissions where major_id <= 0;
    

谢谢。

阿尔贝托·莫里洛

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

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

关于db_datareader和db_denydatawriter之间的区别。db_datareader授予对所有表的选择权限,并且不影响任何插入,更新,删除权限。同时,db_denydatawriter拒绝对所有表的插入,更新和删除权限,它拒绝对任何表进行任何更改的权限。即使直接授予某人插入权限,他们也仍然无法插入,因为拒绝否决授予。将用户分配给db_denydatawriter角色意味着,无论他们具有什么其他权限,他们将永远无法对数据库进行任何更改。拒绝优先于授予。

关于问题#4,您可以将模式上的表分组,然后将模式上的DENY SELECT权限授予主体或用户。db_datareader是固定的数据库角色,它不是架构。

DENY SELECT ON schema::[SchemaName] TO [user_name]

同样,您可以对包含一组表的数据库模式授予SELECT和UPDATE权限。

GRANT SELECT, UPDATE on SCHEMA::SchemaName TO [user_name]

您可以在此处找到数据库角色列表

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何快速检查用户是否对SQL Server中的特定数据库具有写权限?

如何仅授予特定用户访问数据库的权限?

如何将用户权限与数据库中的所有权限匹配

启动静态服务时,如何检查属性文件中提到的数据库用户是否已授予对架构中定义的所有表的访问权限

如何限制对实时数据库中特定节点下声明的用户的写访问权限

如何理解用户在SQL Server中获得数据库访问权限

如何从数据库访问所有用户?

如何防止特定用户访问SQL数据库中的特定表?

如何授予不使用特定用户名和密码的用户访问数据库的权限?

通过SQL数据库中的Azure AD授予对多个数据库的访问权限

在Angular中->如何使用基于角色的访问以及将角色保存在数据库中来检查用户是否具有权限

如何授予用户从 SQL Server 中的存储过程内部访问数据库的权限 - 获取错误:过程中不允许使用数据库语句

如何为Plesk 11用户授予对特定数据库的访问权限

SQL Server:如何从数据库中的所有存储过程中找到特定值?

如何使用聚合检查MongoDB数据库中的所有文档的特定字段的最新值?

如何检查数据库中的所有年份

如何在SQL中检查数据库以确保其所有表都在使用中?

查询Azure SQL数据库中的所有数据库用户以及他们拥有的任何角色

如何创建具有读取、写入、删除和查看数据库中所有对象的完全权限的 sql 用户角色?

如何检查SQL数据库中是否有记录?

如何检查特定用户是否对Delphi中的文件夹/文件具有特定访问权限

如何在Azure SQL数据库中记录所有查询事件

如何处理数据库架构中的用户权限?

如何在SQL Server数据库中添加与在同一服务器上的另一用户具有相同权限的用户?

如何向Azure SQL数据库中的用户授予数据库作用域凭据

如何在 Azure SQL 数据库中对用户隐藏其他数据库?

如何使用 ACL 限制用户对 Redis 中特定数据库的访问

如何列出特定表中的列具有特定类型的所有数据库?

审核特定的Azure SQL Server数据库用户