在 Azure DevOps 管道中使用 Powershell,我试图通过调用命令为密钥保管库分配一个新的存储帐户Add-AzKeyVaultManagedStorageAccount
。
到目前为止,所有脚本似乎都有效,除了最后一个因Forbidden
错误而失败的命令。
我在 MSDN 上发现了一个类似的问题,但似乎 KeyVault 的策略设置正确。
服务主体的权限
Azure DevOps - Azure Resource Manager
以下是运行命令的服务主体(名为 )的权限:
Owner
该命令作为在订阅中具有角色的服务主体运行:
在该订阅中创建的资源组也归该服务主体所有:
Key Vault 主体已被赋予
Storage Account Key Operator Service Role
存储帐户上的角色:
已为 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
?