Azure SQL中如何使用RBAC为特定表授予只读权限?(新手求助)
在Azure SQL中为特定表配置只读权限的步骤
一、权限模型说明
Azure SQL的RBAC(基于角色的访问控制)主要负责服务器/数据库级的管理权限(如创建数据库、查看监控),而表级的细粒度权限需要结合数据库内部的SQL权限体系实现。要给特定表设置只读权限,需先让用户能访问数据库,再授予表的SELECT权限。
二、具体操作步骤
方式1:Azure门户 + T-SQL(新手友好)
1. 配置数据库访问用户
- Azure AD用户/组:先在Azure SQL服务器的「Azure Active Directory」页面设置AD管理员,再在目标数据库执行:
USE [你的数据库名]; CREATE USER [AzureAD账户名] FROM EXTERNAL PROVIDER; - SQL登录用户:在Azure SQL服务器的「安全性-登录名」创建SQL登录,再在目标数据库执行:
USE [你的数据库名]; CREATE USER [SQL用户名] FOR LOGIN [SQL登录名];
2. 创建自定义只读角色(推荐批量管理)
如果需要给多个用户配置相同权限,先创建数据库级角色:
USE [你的数据库名]; CREATE ROLE [TableReadOnlyRole];
3. 授予表只读权限
给角色或用户直接授予目标表的SELECT权限:
USE [你的数据库名]; -- 给角色授权 GRANT SELECT ON [你的表名] TO [TableReadOnlyRole]; -- 直接给用户授权 GRANT SELECT ON [你的表名] TO [用户名];
4. 关联用户与角色(若使用角色)
USE [你的数据库名]; ALTER ROLE [TableReadOnlyRole] ADD MEMBER [用户名];
方式2:纯T-SQL脚本一键完成
如果使用SSMS或Azure Data Studio,直接执行以下脚本:
-- 切换到目标数据库 USE [你的数据库名]; -- 创建SQL用户(AD用户替换为CREATE USER ... FROM EXTERNAL PROVIDER) CREATE USER [ReadOnlyUser] FOR LOGIN [ReadOnlyLogin]; -- 创建自定义只读角色 CREATE ROLE [SpecificTableReadOnlyRole]; -- 授予角色目标表的SELECT权限 GRANT SELECT ON [dbo.你的表名] TO [SpecificTableReadOnlyRole]; -- 将用户加入角色 ALTER ROLE [SpecificTableReadOnlyRole] ADD MEMBER [ReadOnlyUser];
三、验证权限
用目标用户登录后,执行以下命令验证:
SELECT * FROM [你的表名]; -- 正常返回数据则只读权限生效 INSERT INTO [你的表名] (列名) VALUES (测试值); -- 提示权限不足则验证成功
内容的提问来源于stack exchange,提问作者Antonio Fontoura
相关产品推荐
相关产品推荐

