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

如何通过PowerShell为现有Azure SQL Server创建服务主体

关于Azure SQL Server关联Service Principal的PowerShell操作说明

首先明确:SQL Server的系统分配托管标识本身就是Azure AD中的一个Service Principal(SP),你看到的identity.principalId就是这个SP的ObjectId——无需手动创建新的SP来关联,之前的手动操作本质上是在使用这个Azure自动生成的托管标识,而非新建独立SP。

你的思路纠正

用New-AzADServicePrincipal的-ApplicationObject参数是错误的,该参数用于基于手动创建的Azure AD应用程序对象生成SP,而SQL Server的托管标识是Azure自动管理的,不需要额外创建SP。

正确操作步骤

  1. 获取SQL Server的托管标识信息

    # 替换为你的资源组和SQL Server名称
    $resourceGroupName = "your-resource-group"
    $sqlServerName = "your-sql-server-name"
    
    $sqlServer = Get-AzSqlServer -ResourceGroupName $resourceGroupName -ServerName $sqlServerName
    # 提取托管标识对应的SP ObjectId
    $managedIdentityObjectId = $sqlServer.Identity.PrincipalId
    
  2. 验证对应的SP存在
    若需确认该标识确实是Azure AD中的SP,可执行查询:

    Get-AzADServicePrincipal -ObjectId $managedIdentityObjectId
    
  3. 给该托管标识(SP)分配权限
    若要让这个SP访问其他Azure资源,可通过角色分配实现:

    # 替换为目标资源组和所需角色名称
    $targetResourceGroupName = "target-resource-group"
    $roleName = "Contributor"
    
    New-AzRoleAssignment -ObjectId $managedIdentityObjectId `
                         -ResourceGroupName $targetResourceGroupName `
                         -RoleDefinitionName $roleName
    

补充说明

如果你的SQL Server尚未启用系统托管标识,需先启用:

Set-AzSqlServer -ResourceGroupName $resourceGroupName -ServerName $sqlServerName -AssignIdentity

启用后,Azure会自动在AD中创建对应的SP,identity.principalId即为该SP的ObjectId。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:05:24