使用Azure PowerShell cmdlets查找Azure服务主体所需权限的高效方法
使用
Get-AzProviderOperationcmdlet直接查询
这个cmdlet可以列出Azure资源提供者的所有操作,你可以通过资源类型或操作关键词筛选,精准找到对应cmdlet所需的权限。比如要找启动虚拟机的Start-AzVM对应的权限,执行:Get-AzProviderOperation "*virtualMachines/start*"结果里的
Name字段就是你需要添加到自定义角色的权限字符串,比如Microsoft.Compute/virtualMachines/start/action。如果不确定关键词,也可以通过资源命名空间模糊搜索,比如查询所有计算相关的操作:Get-AzProviderOperation "Microsoft.Compute/*"查看Cmdlet内置帮助文档的权限说明
每个Azure PowerShell cmdlet的帮助文档里都明确标注了所需权限,执行以下命令查看完整帮助:Get-Help [Cmdlet名称] -Full在输出的PERMISSIONS章节里,会直接列出该cmdlet需要的具体权限,比如
Start-AzVM的帮助里会显示需要Microsoft.Compute/virtualMachines/start/action权限。通过活动日志验证实际所需权限
先让服务主体临时使用一个权限较宽的角色执行目标cmdlet,然后在Azure门户的活动日志中找到该操作记录,查看其中的“操作名称”字段,这个字段对应的就是该cmdlet实际调用的权限字符串,直接把它添加到自定义角色即可。这种方法能确保你拿到的是最准确的权限,避免遗漏或多余的权限。利用Azure CLI辅助查询(可选)
如果你习惯用CLI,也可以用az provider operation show命令查询,比如:az provider operation show --namespace Microsoft.Compute --query "[?contains(name, 'virtualMachines/start')]"结果同样会返回对应的权限名称。
内容的提问来源于stack exchange,提问作者Calin Pavel

