Azure PowerShell应用ID与客户端密钥登录权限不足问题
解决Azure服务主体订阅权限不足问题
问题场景
执行以下PowerShell脚本通过服务主体登录Azure时,出现权限不足错误:
$password = ConvertTo-SecureString "client secret" -AsPlainText -Force $cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "application ID", $password Write-Output "Login to azure environment" Connect-AzAccount -Credential $cred -Tenant "tenant ID" -Subscription "subscription ID" -ServicePrincipal Write-Output "Restarting Web App..." Restart-AzWebApp -ResourceGroupName "testconfogproxy_group" -Name "testconfogproxy" Write-Output "Operation Completed."
报错信息:
Connect-AzAccount : The provided account adf74536-2bd3-456a-96ba-2f98e4902525 does not have access to subscription ID "d9c408ef-39c7-408a-97c7-68c6ae84b760". Please try logging in with different credentials or a different subscription ID. If a subscription is not specified, please check the configs by
Get-AzConfig.
解决方案:为服务主体分配订阅/资源权限
方式1:通过Azure Portal操作
- 登录Azure门户,搜索进入订阅,找到目标订阅(ID: d9c408ef-39c7-408a-97c7-68c6ae84b760)
- 点击左侧菜单的访问控制(IAM)
- 点击添加 > 添加角色分配
- 在角色列表中选择合适的权限角色:仅需重启Web App的话,选择网站参与者或参与者即可;需要更精细权限可自定义角色
- 切换到成员页面,选择用户、组或服务主体,点击选择成员,搜索你的应用ID(adf74536-2bd3-456a-96ba-2f98e4902525)并选中
- 点击查看+分配完成角色分配,等待1-5分钟让权限生效
方式2:通过PowerShell命令操作
确保你已使用拥有订阅管理权限的账号登录Azure,执行以下命令分配权限:
分配订阅级参与者权限
New-AzRoleAssignment -ApplicationId "adf74536-2bd3-456a-96ba-2f98e4902525" ` -RoleDefinitionName "Contributor" ` -Scope "/subscriptions/d9c408ef-39c7-408a-97c7-68c6ae84b760"
分配单个Web App的网站参与者权限(更安全)
New-AzRoleAssignment -ApplicationId "adf74536-2bd3-456a-96ba-2f98e4902525" ` -RoleDefinitionName "Website Contributor" ` -Scope "/subscriptions/d9c408ef-39c7-408a-97c7-68c6ae84b760/resourceGroups/testconfogproxy_group/providers/Microsoft.Web/sites/testconfogproxy"
权限生效后,重新运行你的登录和Web App重启脚本即可。
内容的提问来源于stack exchange,提问作者北山硝子
相关产品推荐
相关产品推荐

