如何配置Azure SQL Server权限:可访问数据、添加AD用户但禁建数据库
Azure SQL Server 权限配置步骤
一、配置你的权限(满足读取数据、添加AD用户需求)
以SQL Server管理员(AD管理员或SA账户)身份登录,执行以下SQL语句:
1. 授予服务器级别核心权限
-- 允许你在任意数据库中创建/添加AD用户 GRANT ALTER ANY USER TO [你的Azure AD账户名]; -- 允许你查看所有数据库 GRANT VIEW ANY DATABASE TO [你的Azure AD账户名];
2. 授予数据库读取权限
针对每个需要访问的数据库,切换到对应数据库后执行:
USE [目标数据库名称]; -- 添加到内置只读角色,可读取该数据库所有表数据 EXEC sp_addrolemember 'db_datareader', [你的Azure AD账户名];
如果需要更细粒度的读取权限(比如仅特定表),替换为:
USE [目标数据库名称]; GRANT SELECT ON [指定表名] TO [你的Azure AD账户名];
二、添加AD用户并限制其权限(禁止创建新数据库)
用你的AD账户登录SQL Server后,按以下步骤操作:
1. 创建AD用户到目标数据库
USE [目标数据库名称]; -- 从Azure AD同步创建数据库用户 CREATE USER [需添加的AD账户名] FROM EXTERNAL PROVIDER;
2. 授予用户必要的数据库权限(无服务器级创建权限)
推荐使用内置角色或自定义角色控制权限,确保用户仅拥有数据库内的访问权限:
USE [目标数据库名称]; -- 示例:添加到只读角色,仅允许读取数据 EXEC sp_addrolemember 'db_datareader', [需添加的AD账户名];
如果需要自定义权限集合,可创建专属角色:
USE [目标数据库名称]; -- 创建自定义数据库角色 CREATE ROLE [CustomDBAccess]; -- 授予该角色所需权限(示例:读取+执行指定存储过程) GRANT SELECT TO [CustomDBAccess]; GRANT EXECUTE ON [指定存储过程名] TO [CustomDBAccess]; -- 将AD用户添加到该角色 EXEC sp_addrolemember 'CustomDBAccess', [需添加的AD账户名];
3. 确保用户无数据库创建权限
默认情况下,新添加的AD用户没有服务器级的CREATE ANY DATABASE权限或dbmanager服务器角色,无需额外操作。如果之前有授予相关权限,可执行以下语句撤销:
-- 撤销服务器级创建数据库权限 REVOKE CREATE ANY DATABASE FROM [需限制的AD账户名]; -- 移除dbmanager服务器角色(如果已添加) ALTER SERVER ROLE dbmanager DROP MEMBER [需限制的AD账户名];
内容的提问来源于stack exchange,提问作者ZZZSharePoint
相关产品推荐
相关产品推荐

