You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Entra组实现Azure应用服务托管身份认证SQL Server?

解决方案:通过Entra组统一管理托管身份访问Azure VM上的SQL Server

一、解决托管身份页面「添加用户/组」按钮禁用的问题

系统分配的托管身份无法通过Azure门户直接加入Entra组,这是门户的固有限制,与账号权限无关——即使拥有Cloud Application Administrator或Application Administrator权限也无法启用该按钮,必须通过PowerShell或Microsoft Graph API操作:

  • PowerShell方式:
    # 获取目标托管身份的对象ID
    $managedIdentity = Get-AzADServicePrincipal -DisplayName "你的应用服务名称"
    # 获取Entra安全组的对象ID
    $targetGroup = Get-AzADGroup -DisplayName "你的目标组名称"
    # 将托管身份加入组
    Add-AzADGroupMember -TargetGroupObjectId $targetGroup.Id -MemberObjectId $managedIdentity.Id
    
  • Microsoft Graph API方式(需账号拥有GroupMember.ReadWrite.All权限):
    POST https://graph.microsoft.com/v1.0/groups/{组对象ID}/members/$ref
    Content-Type: application/json
    
    {
      "@odata.id": "https://graph.microsoft.com/v1.0/servicePrincipals/{托管身份对象ID}"
    }
    

如果是用户分配的托管身份仍出现按钮禁用,需检查账号是否拥有Directory.ReadWrite.All或GroupMember.ReadWrite.All权限,Cloud Application Administrator权限不包含组成员写入的完整权限,需单独分配上述细粒度权限。

二、通过Entra组实现托管身份认证SQL Server的完整流程

  1. 创建合规的Entra安全组
    在Entra ID中创建类型为「安全」的组,默认安全组支持添加服务主体(即托管身份),无需额外配置。
  2. 批量添加托管身份到组
    用上述PowerShell/Graph API方法,将所有需要访问SQL的应用服务托管身份加入该组。
  3. 在SQL Server中创建组登录名
    连接到Azure VM上的SQL Server,执行以下语句:
    CREATE LOGIN [你的Entra组名称] FROM EXTERNAL PROVIDER;
    
  4. 分配数据库权限
    切换到目标业务数据库,创建组用户并分配所需权限:
    USE [你的数据库名称];
    CREATE USER [你的Entra组名称] FROM LOGIN [你的Entra组名称];
    -- 示例:分配数据读取权限
    ALTER ROLE db_datareader ADD MEMBER [你的Entra组名称];
    -- 若需写入权限,可添加db_datawriter角色
    -- ALTER ROLE db_datawriter ADD MEMBER [你的Entra组名称];
    
  5. 验证访问
    应用服务无需修改原有托管身份认证配置,连接SQL时会自动继承所在Entra组的权限,实现统一管理。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 11:47:26