作为对我们的一个运行手册使用的服务主体的权限问题进行故障排除/诊断的一部分,Microsoft 支持要求我在本地运行相同的 PowerShell 代码,以便我们可以捕获日志。为此,我需要以与运行手册完全相同的方式进行身份验证,这意味着使用AzureRunAsConnection
正在使用的证书进行身份验证。
在将一些仅存在于 Azure 自动化中的 cmdlet 换成 Azure RM 的等效命令(例如Get-AutomationConnection
,必须替换为Get-AzAutomationAccount
and Get-AzAutomationConnection
,并且您必须切换到 using FieldDefinitionValues
)之后,我的脚本的身份验证部分如下所示:
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
$PSDefaultParameterValues['*:ErrorAction']='Stop'
'*** Authenticating with Azure'
$automationAccount = Get-AzAutomationAccount `
-Name "MY_AUTOMATION_ACCOUNT" `
-ResourceGroupName "MY_RESOURCE_GROUP"
$connection = $automationAccount | Get-AzAutomationConnection -Name "AzureRunAsConnection"
# Log-in to Az Account Management Graph API (for DNS updates)
Login-AzAccount -ServicePrincipal `
-Tenant $connection.FieldDefinitionValues.TenantID `
-ApplicationId $connection.FieldDefinitionValues.ApplicationID `
-CertificateThumbprint $connection.FieldDefinitionValues.CertificateThumbprint
但是,当我运行它时,我收到了这个错误:
Login-AzAccount : No certificate was found in the certificate store with thumbprint
93FAB7F0BA11D08F8ABBAF5C587C77ECB058A8BB
看来我需要导出AzureRunAsConnection
正在使用的证书,以便可以将其导入本地计算机。但是,尽管我可以续订 Azure 自动化使用的证书或上传我自己的证书,但似乎没有一种简单的方法可以获取当前证书。我知道这是设计使然 - 出于安全考虑 - 但对于这样的情况,这是一种痛苦。
Get-AutomationCertificate
我发现这篇 2018 年的文章描述了如何在混合工作人员中导出证书,但代码在 Azure Cloud Shell 和本地(未定义)
中对我不起作用: https ://www.lunavi.com/blog /how-to-download-an-azure-automation-connection-certificate-locally
网络上的一些指南建议创建一个 blob 存储帐户,然后编写一个脚本来导出到它,但这似乎需要付出很多努力,因为我只需要一次来进行此复制。
获得此证书以进行本地调试/复制的最快、最简单的方法是什么?