Azure Automation中SP生成的Context传参至子Runbook失败问题
Azure Automation中SP与托管身份生成的Context传递子Runbook差异原因
核心差异原因
- 托管身份生成的Context:本质是绑定到Azure Automation账户环境的身份引用,传递时并非完整序列化对象,子Runbook在同一Automation账户环境中可以直接复用该身份的验证权限,无需额外携带敏感凭证数据,因此能正常执行操作。
- Service Principal(SP)生成的Context:是包含SP敏感验证信息的序列化对象,但Azure Automation在Runbook间传递对象时,会自动过滤掉Context中的敏感字段(如SP密钥),导致子Runbook接收到的Context不完整,缺失必要的验证凭据,因此执行
Get-AzResourceGroup时会报凭证未设置或过期的错误。
解决方法
如果需要基于SP身份在子Runbook中执行操作,不要直接传递Context对象,可采用以下两种方式:
- 传递Automation账户中存储的SP凭据资产名称,在子Runbook中通过
Get-AzAutomationCredential获取凭据,再重新执行Connect-AzAccount -ServicePrincipal -Credential $credential -Tenant $tenantId生成可用的Context。 - 在主Runbook中将SP的租户ID、应用ID、密钥作为参数传递给子Runbook,子Runbook自行构建凭据对象并完成身份连接。
内容的提问来源于stack exchange,提问作者wenbo
相关产品推荐
相关产品推荐

