如何为365组用户配置Azure SQL数据库只读权限
错误原因
- 执行操作的账号权限不足:你需要使用Azure SQL服务器管理员、Azure AD管理员,或者持有
ALTER ANY ROLE权限、db_owner角色的账号执行角色修改操作,普通账号无相关操作权限。 - 操作执行的数据库错误:
db_datareader是数据库级内置角色,你需要切换到目标业务数据库下执行语句,不能在master库或其他无关数据库中操作。 - 角色名拼写错误:确认你没有拼写错
db_datareader名称,Azure SQL DB原生支持该内置角色,不存在角色不存在的情况,绝大多数报错都是前两类原因导致。
权限调整操作
1. 先撤销现有过高权限
你遇到的组成员默认拥有增删改权限,说明该组继承了其他高权限角色(如db_datawriter、db_owner),或被显式授予了修改类权限,必须先清理:
- 先查询该组当前的权限配置:
-- 查询组所属数据库角色 EXEC sp_helpuser 'GroupName' -- 查询组的显式授权记录 SELECT * FROM sys.database_permissions WHERE grantee_principal_id = USER_ID('GroupName')
- 若组属于写权限角色,先移除对应角色成员:
ALTER ROLE db_datawriter DROP MEMBER [GroupName] -- 如属于其他高权限角色同理执行移除操作
- 若存在显式授予的修改类权限,执行撤销:
REVOKE INSERT, UPDATE, DELETE, ALTER ON SCHEMA::dbo TO [GroupName] -- 可根据实际业务的schema范围调整撤销的权限范围
2. 重新分配只读权限
使用高权限账号切换到目标业务数据库后,执行以下语句分配只读权限:
ALTER ROLE db_datareader ADD MEMBER [GroupName]
配置验证
使用组内成员账号登录数据库测试,执行SELECT语句可正常返回结果,执行DELETE/UPDATE/INSERT等修改类语句返回权限不足报错,即为配置成功。
内容的提问来源于stack exchange,提问作者user3127399
相关产品推荐
相关产品推荐

