我需要通过服务主体访问 Azure KeyVault 的帮助。我目前有两个订阅需要通信和访问另一个订阅的 Key Vault,但为此我需要通过 SPN 进行连接。我查看了文档Get-AzureRmKeyVault
,它没有提供通过 SPN 进行身份验证的方法。
如果有人有解决方案,我将不胜感激!
我需要通过服务主体访问 Azure KeyVault 的帮助。我目前有两个订阅需要通信和访问另一个订阅的 Key Vault,但为此我需要通过 SPN 进行连接。我查看了文档Get-AzureRmKeyVault
,它没有提供通过 SPN 进行身份验证的方法。
如果有人有解决方案,我将不胜感激!
不确定您的实际意思是什么access keyvault
,在 azure keyvault 中,有Management plane
并且Data 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
然后你可以做类似的Management plane
操作Update-AzKeyVault
,或者Data plane
类似的操作Get-AzKeyVaultSecret
。
要访问不同订阅中的密钥库,只需使用以下命令选择订阅。
Set-AzContext -Subscription <subscription-id>
而且我注意到您似乎正在使用旧AzureRm
模块,它已被弃用并且不会再更新,我建议您使用新Az
模块,按照Migrate Azure PowerShell from AzureRM to Az。