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

如何通过PowerShell/Azure CLI为Azure AD原生应用添加用户/组并分配角色?

如何为Azure AD原生应用添加用户/组并分配应用角色

当然可以!虽然Azure AD原生应用在Portal的企业应用界面里找不到直接添加用户/组、分配角色的选项,但我们可以通过PowerShell或者Azure CLI来完成操作——本质上是调用Azure AD的底层API实现,和Web App/API的逻辑是一致的。

不过先提个前提:不管是Web还是原生应用,要分配应用角色,必须先在应用注册的「应用角色」页面定义好对应的角色(原生应用也支持在应用注册里添加角色,只是Portal的企业应用入口没展示分配选项而已)。

方法一:使用Microsoft Graph PowerShell

现在微软更推荐用Microsoft Graph模块,步骤如下:

  1. 安装并连接Graph PowerShell

    # 安装模块(首次运行需要)
    Install-Module Microsoft.Graph -Force
    # 连接并申请必要的权限
    Connect-MgGraph -Scopes "AppRoleAssignment.ReadWrite.All, Directory.Read.All"
    
  2. 获取原生应用的服务主体ID
    你可以用应用名称或者客户端ID来查找:

    # 通过应用名称查找
    $appServicePrincipal = Get-MgServicePrincipal -Filter "displayName eq '你的原生应用显示名称'"
    # 或者通过客户端ID查找
    $appServicePrincipal = Get-MgServicePrincipal -Filter "appId eq '你的原生应用客户端ID'"
    
  3. 获取要分配的用户/组对象ID

    # 获取用户(替换为目标用户的UPN)
    $user = Get-MgUser -Filter "userPrincipalName eq 'user@yourdomain.com'"
    # 获取组(替换为目标组的名称)
    $group = Get-MgGroup -Filter "displayName eq '你的目标组名称'"
    
  4. 获取要分配的应用角色ID
    先找到你之前在应用注册里定义的角色(比如角色值为NativeAppUser):

    $appRole = $appServicePrincipal.AppRoles | Where-Object { $_.Value -eq "NativeAppUser" }
    
  5. 创建应用角色分配

    • 分配给用户:
      New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $appServicePrincipal.Id `
        -PrincipalId $user.Id `
        -AppRoleId $appRole.Id `
        -ResourceId $appServicePrincipal.Id
      
    • 分配给组:
      New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $appServicePrincipal.Id `
        -PrincipalId $group.Id `
        -AppRoleId $appRole.Id `
        -ResourceId $appServicePrincipal.Id
      

方法二:使用Azure CLI

如果你更习惯用CLI,步骤也很清晰:

  1. 登录并设置租户

    # 登录Azure账号
    az login
    # 切换到目标租户(可选,如果你有多个租户)
    az account set --tenant "你的租户ID或域名"
    
  2. 获取原生应用的服务主体ID

    # 通过应用名称获取
    app_sp_id=$(az ad sp list --display-name "你的原生应用显示名称" --query "[0].id" -o tsv)
    # 或者通过客户端ID获取
    app_sp_id=$(az ad sp list --filter "appId eq '你的原生应用客户端ID'" --query "[0].id" -o tsv)
    
  3. 获取用户/组对象ID

    # 获取用户ID
    user_id=$(az ad user show --id "user@yourdomain.com" --query id -o tsv)
    # 获取组ID
    group_id=$(az ad group show --group "你的目标组名称" --query id -o tsv)
    
  4. 获取应用角色ID

    app_role_id=$(az ad sp show --id $app_sp_id --query "appRoles[?value=='NativeAppUser'].id" -o tsv)
    
  5. 创建应用角色分配

    • 分配给用户:
      az ad app role assignment create --assignee $user_id --role $app_role_id --resource $app_sp_id
      
    • 分配给组:
      az ad app role assignment create --assignee $group_id --role $app_role_id --resource $app_sp_id
      

验证分配结果

操作完成后,你可以用以下命令验证分配是否成功:

  • PowerShell:Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $appServicePrincipal.Id
  • Azure CLI:az ad app role assignment list --resource $app_sp_id

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:11:59