我需要帮助通过服务委托人访问 Azure KeyVault。我目前有两个订阅,需要进行通信并访问另一个订阅的 Key Vault,但要做到这一点,我需要通过 SPN 进行连接。我查看了 Get-AzureRmKeyVault
它没有提供通过SPN认证的方法,从我可以找到。
如果有人有解决方案,我将非常感激!
不知道你实际上是什么意思 access keyvault
,在 azure keyvault 中,有 Management plane
和 Data plane
,他们使用不同的访问控制机制。
如果你想让你的服务委托人做 Management plane
操作(例如设置你的keyvault的标签),你需要给它一个作用在 Access control (IAM)
你的钥匙库中的门户。如果你想做 Data plane
操作(例如对keyvault中的密钥、秘密、证书进行操作),你需要将具有正确权限的服务委托人添加到 Access policies
的钥匙库。
有关钥匙库的访问控制的更多细节,你可以检查 - 钥匙库的访问控制。安全进入钥匙库.
所以请确认你的服务委托人已经有了正确的权限,然后使用下面的命令。
$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
.
要在不同的订阅中访问keyvault,只需使用下面的命令来选择订阅。
Set-AzContext -Subscription <subscription-id>
我注意到似乎你正在使用旧的 AzureRm
模块,它已经被废弃,不会再更新了,我建议你使用新的 Az
模块,遵循 将Azure PowerShell从AzureRM迁移到Azure。.