如何检查Azure SQL数据库中特定用户的所有访问权限?
我对模式/权限有以下问题:如何检查Azure SQL数据库中特定用户的所有访问权限?,azure,azure-sql-database,schema,privileges,azure-sql-server,Azure,Azure Sql Database,Schema,Privileges,Azure Sql Server,我对模式/权限有以下问题: 用户可能有多个数据库角色(架构) db_denydatareader的用途是什么?(看起来数据库之间可以有不同的数据库角色,对吗?) 若只希望用户读取特定数据库中的数据,那个么db_datareader和db_denydatawriter之间有什么区别 我试图从模式中撤销选择权(TestUser使用默认模式db_datareader),为什么它仍然可以搜索表 REVOKE SELECT ON SCHEMA::db_datareader TO TestUser; 如
REVOKE SELECT ON SCHEMA::db_datareader TO TestUser;
select * from sys.database_permissions where major_id <= 0;
select*from sys.database\u permissions where mair\u id似乎您认为架构和角色是相同的,但它们并不相同。角色是安全成员身份容器,主体可以是角色的成员。模式包含数据库模式绑定对象,它们有助于将数据库对象分组在一起,并由主体拥有。当您创建一个新用户时,您可以选择他的默认模式,将他添加到某些角色,并授予他模式的所有权
db_denydatareader固定数据库角色的成员无法读取数据库中用户表中的任何数据
关于db_datareader和db_denydatawriter之间的区别。db_datareader授予所有表的select权限,并且不影响任何insert、update和delete权限。同时,db_denydatawriter拒绝对所有表的插入、更新和删除权限,拒绝对任何表进行任何更改。即使某人被直接授予插入权限,他们仍然无法插入,因为拒绝会推翻授予。将用户分配给db_denydatawriter角色意味着,无论他们拥有什么其他权限,他们都无法对数据库进行任何更改。拒绝优先于给予
关于问题#4,您可以对架构上的表进行分组,然后拒绝主体或用户对架构的SELECT权限。db_datareader是一个固定的数据库角色,而不是架构
DENY SELECT ON schema::[SchemaName] TO [user_name]
类似地,您可以对包含一组表的数据库上的架构授予选择和更新权限
GRANT SELECT, UPDATE on SCHEMA::SchemaName TO [user_name]
您可以找到数据库角色的列表