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

如何使用service principal权限运行Azure CLI及PowerShell命令?

解决方案

方法1:使用PowerShell Az模块以服务主体身份登录

提前准备好服务主体的3项核心信息:应用程序(客户端)ID、目录(租户)ID、客户端密钥(若使用证书认证则准备对应证书)

  • 若本地未安装Az模块,先执行安装命令:
    Install-Module -Name Az -AllowClobber -Scope CurrentUser
  • 密钥认证方式登录命令:
$tenantId = "替换为你的租户ID"
$clientId = "替换为服务主体的客户端ID"
$clientSecret = ConvertTo-SecureString "替换为服务主体的客户端密钥" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($clientId, $clientSecret)
Connect-AzAccount -ServicePrincipal -Credential $credential -Tenant $tenantId

登录完成后所有执行的Az模块命令都会继承该服务主体的权限,可直接运行删除角色等操作,示例命令:
Remove-AzRoleAssignment -ObjectId <目标对象ID> -RoleDefinitionName <角色名称> -Scope <资源作用域>

  • 若服务主体使用证书认证,登录命令替换为以下内容,需提前将证书导入本地证书存储:
    Connect-AzAccount -ServicePrincipal -ApplicationId $clientId -Tenant $tenantId -CertificateThumbprint <证书指纹>

如果你仍在使用旧版AzureRM模块,将登录命令替换为Connect-AzureRmAccount,其余参数保持一致即可。官方已停止维护AzureRM模块,建议优先使用Az模块。

方法2:使用Azure CLI以服务主体身份登录

  • 本地安装Azure CLI完成后,执行密钥认证登录命令:
    az login --service-principal -u <服务主体客户端ID> -p <客户端密钥> --tenant <租户ID>
    登录成功后即可执行对应操作,删除角色示例命令:
    az role assignment delete --assignee <目标对象ID> --role <角色名称> --scope <资源作用域>
  • 证书认证方式登录命令:
    az login --service-principal -u <服务主体客户端ID> -p <本地证书文件路径> --tenant <租户ID>

注意事项

  • 客户端密钥属于敏感信息,请勿硬编码到脚本中,生产环境建议使用Azure Key Vault存储密钥,运行时动态拉取
  • 操作前可执行Get-AzContext(PowerShell)或az account show(CLI)确认当前登录身份为目标服务主体,避免误操作
  • 需确保所用服务主体已被分配对应范围的权限(如所有者、用户访问管理员角色),否则仍会触发权限不足报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:06:01