0

我希望能够使用该Az模块从 Azure 密钥库中检索机密,以便与已部署到服务器并由 Windows 任务计划程序每天运行的 PowerShell 脚本一起使用。

最初,我需要遵循 oauth(猜测)过程:

Connect-AzAccount -Tenant '69a29f45-...'

重定向到https://login.microsoftonline.com/...,要求​​您选择一个帐户:

在此处输入图像描述

最终,它表示成功:

Authentication complete. You can return to the application. Feel free to close this browser tab.

完成此操作后,检索密钥的脚本将按预期工作:

...
$AccessToken = Get-AzKeyVaultSecret -VaultName 'MyVault' -Name 'MySecret' | Select-Object -ExpandProperty SecretValue | ConvertFrom-SecureString -AsPlainText
...

我担心令牌会过期,导致我的脚本失败。

SharePoint 模块 ( Pnp.PowerShell) 可以使用存储在 Windows 凭据管理器中的凭据。模块也可以Az这样做吗?

如果没有,是否有另一种方法来处理此身份验证过程而无需交互?

4

2 回答 2

1

您可以使用与 AD 租户中的服务主体 (SP) 绑定的证书登录。然后,您只需确保 SP 至少可以作为读取器访问您的密钥保管库。

于 2020-11-10T17:55:57.177 回答
1

看起来我们无法将Az模块与 Windows 凭据管理器一起使用,要Az以非交互方式使用 powershell,我们总是使用服务主体,请按照以下步骤操作。

1.向 Azure AD 注册应用程序并创建服务主体

2.获取登录值创建新的应用程序密码

3.然后使用下面的命令。

注意:不要忘记首先将服务主体添加到Access policies门户中具有 keyvault 的秘密权限。

$azureAplicationId ="<application-id>"
$azureTenantId= "<tenant-id>"
$azurePassword = ConvertTo-SecureString "<client-secret>" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($azureAplicationId , $azurePassword)
Connect-AzAccount -Credential $psCred -TenantId $azureTenantId -ServicePrincipal 
#get the secret
$AccessToken = Get-AzKeyVaultSecret -VaultName 'MyVault' -Name 'MySecret' | Select-Object -ExpandProperty SecretValue | ConvertFrom-SecureString -AsPlainText
于 2020-11-11T07:30:29.720 回答