通过 SPN 连接到 Azure KeyVault

Connecting to Azure KeyVault via SPN

我需要有关通过服务主体访问 Azure KeyVault 的帮助。我目前有两个订阅需要通信和访问另一个订阅的 Key Vault,但为了这样做,我需要通过 SPN 进行连接。我查看了 Get-AzureRmKeyVault 的文档,它没有提供通过我能找到的 SPN 进行身份验证的方法。

如果有人有解决方案,我将不胜感激!

不确定你的意思 access keyvault,在 azure keyvault 中,有 Management planeData plane,它们使用不同的访问控制机制。

如果您希望您的服务主体执行 Management plane 操作(例如,设置您的密钥保管库的标签),您需要在门户中的密钥保管库的 Access control (IAM) 中赋予它一个角色。如果您想进行 Data plane 操作(例如,对密钥库中的密钥、机密、证书进行操作),您需要将具有正确权限的服务主体添加到密钥库的 Access policies

关于keyvault访问控制的更多细节,你可以查看- Secure access to a key vault.

因此请确保您的服务主体已经拥有正确的权限,然后使用下面的命令。

$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 

然后你可以像Update-AzKeyVault, or the Data plane operations like Get-AzKeyVaultSecret.

那样做Management plane操作

要访问不同订阅中的密钥库,只需使用下面的命令select订阅。

Set-AzContext -Subscription <subscription-id>

而且我注意到你似乎在使用旧的 AzureRm 模块,它已被弃用并且不会再更新,我建议你使用新的 Az 模块,按照 Migrate Azure PowerShell from AzureRM to Az.