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

使用服务主体登录Azure Linux VM的RBAC角色及问题排查

问题解答

1. 能否用服务主体登录Azure Linux VM?

可以,Azure官方支持使用Azure AD服务主体SSH登录Linux VM,前提是正确配置RBAC权限和登录命令。

2. 所需的RBAC角色组合

服务主体需要两个核心RBAC权限:

  • Virtual Machine Administrator Login(或Virtual Machine User Login,根据是否需要管理员权限选择):作用范围需覆盖目标VM(可直接指定VM资源,或其所在资源组),用于授权服务主体登录VM的权限。
  • Reader:作用范围需覆盖目标VM及其关联的网络接口(最简单的方式是直接在VM所在资源组级别分配),用于让服务主体能读取VM的网络配置、NIC等信息,确保az ssh vm命令能获取登录所需的网络参数。

注:你遇到的AuthorizationFailed错误,就是因为服务主体缺少读取网络接口的权限,添加Reader角色即可解决该报错。

3. 你遗漏的关键步骤

当你用服务主体登录Azure CLI后,执行az ssh vm时,需要明确指定使用服务主体身份进行AAD验证,而不是默认的交互式设备登录。正确的命令格式如下:

# 先确认已用服务主体登录Azure CLI
az login --service-principal -u <test-sp-app-id> -p <test-sp-secret-value> --tenant <tenant-id>

# 使用服务主体身份SSH登录VM
az ssh vm -n <vm-name> -g <resource-group-name> --login <test-sp-app-id> --aad

为什么之前的尝试失败?

  • 尝试1:添加Reader角色后触发设备登录,是因为az ssh vm默认会尝试交互式AAD登录流程,而服务主体无法通过浏览器设备登录验证,必须显式指定--login和--aad参数来调用服务主体身份验证。
  • 尝试2:使用--local-user参数是错误的,因为服务主体是Azure AD身份,并非VM本地用户,该参数只适用于VM本地账户登录。

额外验证步骤

  1. 确认AADLoginForLinux扩展已成功部署到VM:
    az vm extension show -n AADLoginForLinux -g <resource-group-name> --vm-name <vm-name>
    
  2. 确认服务主体的角色分配已生效(权限可能需要数分钟同步):
    az role assignment list --assignee <test-sp-app-id> --resource-group <resource-group-name>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:53:29