azure-powershell - 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
但是,从门户手动添加相同的服务主体后,我们会看到相同服务主体的不同图标。
有人可以帮忙吗?难道我做错了什么?
非常感谢!
解决方案
尝试这个:
Set-AzureRmKeyVaultAccessPolicy [-VaultName] -ServicePrincipalName "0aaa8314-872d-41ef-a75e-d3a5ec5b31e6" -PermissionsToSecrets 恢复、删除、备份、设置、恢复、列出、获取
其中 SPN 是应用程序 ID。
我知道这很混乱。
推荐阅读
- javascript - 调用对象内的函数并将结果保存到另一个对象
- android - 在 android studio 中构建工作错误和一些错误
- javascript - 带有扩展拉丁语的 Javascript RegExp
- python - 增强同步软件 API 以允许异步消费
- jdbc - JDBC mySQL 错误:由于超时或客户端请求而取消语句
- google-chrome - 从后台脚本显示扩展 browser_action
- jquery - 无法点击正文背景图片进行重定向
- mysql - 使用 MySQL 表进行盲 SQLInjection
- c++ - 通过与 PCL 链接构建 cpp 应用程序时出错
- r - 将 R 中的列名与另一个数据集分配