为AD组授权访问Azure SQL Server数据库遇阻,咨询正确配置方法
关于Azure SQL Server配置Entra组访问指定数据库的问题
核心结论
你在目标数据库执行GRANT CONNECT TO ADGroup;的操作是正确的,结合已分配的db_reader角色,该Entra组应该可以正常连接目标数据库。Azure SQL Server不存在服务器级的CONNECT权限,连接权限是数据库级的,只要目标库的用户拥有CONNECT权限和对应的数据库角色权限,即可完成连接,不需要服务器额外做“允许连接”的配置。
你当前配置的问题点
你在master库执行CREATE USER "ADGroup" FROM EXTERNAL PROVIDER;是错误的——master库中应该创建服务器级登录名,而非数据库用户。数据库用户归属具体数据库,master库的用户对目标数据库的访问没有帮助,反而可能造成混淆。
正确的配置步骤
在master库创建Entra组的外部登录名
这一步是让Azure SQL Server识别该Entra组的身份,执行语句:CREATE LOGIN [ADGroup] FROM EXTERNAL PROVIDER;在目标数据库创建关联登录名的用户
将服务器级的登录名映射到目标数据库的用户,执行语句:CREATE USER [ADGroup] FOR LOGIN [ADGroup]; -- 若未在master库创建登录名,也可直接从外部提供者创建用户: -- CREATE USER [ADGroup] FROM EXTERNAL PROVIDER;分配目标数据库的只读权限
将db_reader角色添加给该用户,赋予只读权限:ALTER ROLE db_reader ADD MEMBER [ADGroup];确保目标库用户拥有CONNECT权限
默认创建用户后会自动拥有CONNECT权限,但若权限被移除,可手动授予:GRANT CONNECT TO [ADGroup];
额外注意事项
- 确保Azure SQL Server已启用Entra ID身份验证,且你的账号拥有足够权限(如
dbmanager或loginmanager角色)来创建登录名和用户。 - 测试连接时,使用Entra组内的用户账号,连接字符串中需指定身份验证方式为
Active Directory Integrated或对应方式。
内容的提问来源于stack exchange,提问作者BlakeB9
相关产品推荐
相关产品推荐

