0

在 Azure DevOps 管道中使用 Powershell,我试图通过调用命令为密钥保管库分配一个新的存储帐户Add-AzKeyVaultManagedStorageAccount

到目前为止,所有脚本似乎都有效,除了最后一个因Forbidden错误而失败的命令。

在 MSDN 上发现了一个类似的问题,但似乎 KeyVault 的策略设置正确。

服务主体的权限

Azure DevOps - Azure Resource Manager以下是运行命令的服务主体(名为 )的权限:

服务主体权限

Owner该命令作为在订阅中具有角色的服务主体运行:

订阅中的所有者

在该订阅中创建的资源组也归该服务主体所有:

资源组的所有者

Key Vault 主体已被赋予
Storage Account Key Operator Service Role存储帐户上的角色:

KeyVault 应用程序

已为 Key Vault 配置了正确的策略,最重要的是以下Permissions to (Key Vault Managed) Storage部分:

Vault Name                          : accountsmanager-test
Resource Group Name                 : accountsmanager-test-global-rg
Location                            : Canada Central
Resource ID                         : /subscriptions/***/resourceGroups/accountsmanager-test-global-rg/providers/Microsoft.KeyVault/vaults/accountsmanager-test
Vault URI                           : https://accountsmanager-test.vault.azure.net/
Tenant ID                           : ***
SKU                                 : Standard
Enabled For Deployment?             : False
Enabled For Template Deployment?    : False
Enabled For Disk Encryption?        : False
Enabled For RBAC Authorization?     : False
Soft Delete Enabled?                : True
Soft Delete Retention Period (days) :
Access Policies                     :
                                      Tenant ID                                  : ***
                                      Object ID                                  : ***
                                      Application ID                             :
                                      Display Name                               : accountsmanager-test (6c55f481-78bf-4f5c-ab40-d8c93d7707df)
                                      Permissions to Keys                        :
                                      Permissions to Secrets                     : get
                                      Permissions to Certificates                :
                                      Permissions to (Key Vault Managed) Storage :

                                      Tenant ID                                  : ***
                                      Object ID                                  : <Service Principal's Object ID>
                                      Application ID                             :
                                      Display Name                               :
                                      Permissions to Keys                        :
                                      Permissions to Secrets                     :
                                      Permissions to Certificates                :
                                      Permissions to (Key Vault Managed) Storage : get, list, delete, set, update, regeneratekey, getsas, listsas,
                                      deletesas, setsas, recover, backup, restore, purge


Network Rule Set                    :
                                      Default Action                             : Allow
                                      Bypass                                     : AzureServices
                                      IP Rules                                   :
                                      Virtual Network Rules                      :

Tags                                :

问题

在脚本中,我运行以下命令,如文档中所述:

Add-AzKeyVaultManagedStorageAccount -VaultName $keyVaultName -AccountName $storageAccountName -AccountResourceId $storageAccount.Id -ActiveKeyName 'key1' -DisableAutoRegenerateKey

我收到以下错误:

Operation returned an invalid status code 'Forbidden'

为什么Forbidden执行命令时会出现错误Add-AzKeyVaultManagedStorageAccount

4

1 回答 1

1

这有点奇怪。我有同样的问题。

但是当我使用预览功能Azure 基于角色的访问控制(预览)时,我可以成功运行它。

以下是我的步骤供您参考:

在此处输入图像描述

将密钥保管库管理员角色分配给服务主体。

在此处输入图像描述

于 2020-11-04T02:05:12.240 回答