Set-AzureRmKeyVaultAccessPolicy cmdlet将策略分配为用户而不是应用程序

时间:2018-06-06 06:16:36

标签: azure-powershell azure-keyvault azure-automation

我们在尝试在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执行时,我们在门户网站中看到类似的内容。请注意看起来像用户的图标。

enter image description here

尽管在访问策略中看到了这一点,但在尝试访问keyvault时,自动化帐户的Runbook仍会失败并显示错误“Forbidden”:

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 

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

enter image description here

有人可以帮帮忙吗?我做错了吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

试试这个:

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

其中SPN是申请ID。

我知道这令人困惑。