首页 > 解决方案 > Set-AzureRmKeyVaultAccessPolicy cmdlet 将策略分配为用户而不是应用程序

问题描述

我们在尝试在 KeyVault 上添加访问策略以提供对自动化帐户服务主体上的机密的权限时遇到问题。我们正在使用以下 cmdlet:

Set-AzureRmKeyVaultAccessPolicy -VaultName "KeyVaultName" -ApplicationId "0aaa8314-872d-41ef-a75e-d3a5ec5b31e6" -ObjectId "443d03a7-6b76-47d1-9406-8fb87c17bbc3" -PermissionsToSecrets recover,delete,backup,set,restore,list,get

当 cmdlet 执行时,我们会在门户中看到类似的内容。请注意看起来像用户的图标。

在此处输入图像描述

尽管在访问策略中看到了这一点,但在尝试访问 keyvault 时,自动化帐户的运行手册仍然失败并出现错误“禁止”:

Get-AzureKeyVaultSecret : Operation returned an invalid status code 'Forbidden'
At C:\Modules\User\CustomModule.psm1:28 char:22
+ ... clientID = (Get-AzureKeyVaultSecret -VaultName $global:ManagementKeyV ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Get-AzureKeyVaultSecret], KeyVaultErrorException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.KeyVault.GetAzureKeyVaultSecret

尝试使用以下 cmdlet 以多种方式为自动化帐户服务主体提供对 keyvault 的访问,但仍然得到相同的结果。

Set-AzureRmKeyVaultAccessPolicy -VaultName "KeyVaultName" -ObjectId "443d03a7-6b76-47d1-9406-8fb87c17bbc3" -PermissionsToSecrets recover,delete,backup,set,restore,list,get -BypassObjectIdValidation 

Set-AzureRmKeyVaultAccessPolicy -VaultName "KeyVaultName" -ServicePrincipalName ((Get-AzureRmADServicePrincipal -ApplicationId "0aaa8314-872d-41ef-a75e-d3a5ec5b31e6").ServicePrincipalNames[0]) -PermissionsToSecrets recover,delete,backup,set,restore,list,get 

但是,从门户手动添加相同的服务主体后,我们会看到相同服务主体的不同图标。

在此处输入图像描述

有人可以帮忙吗?难道我做错了什么?

非常感谢!

标签: azure-powershellazure-keyvaultazure-automation

解决方案


尝试这个:

Set-AzureRmKeyVaultAccessPolicy [-VaultName] -ServicePrincipalName "0aaa8314-872d-41ef-a75e-d3a5ec5b31e6" -PermissionsToSecrets 恢复、删除、备份、设置、恢复、列出、获取

其中 SPN 是应用程序 ID。

我知道这很混乱。


推荐阅读