为什么在使用服务主体执行 Add-AzKeyVaultManagedStorageAccount 时出现错误 'Forbidden.'?
Why do I get the error 'Forbidden.' when executing Add-AzKeyVaultManagedStorageAccount using a Service Principal?
在 Azure DevOps 管道中使用 Powershell,我试图通过调用命令 Add-AzKeyVaultManagedStorageAccount
.
为密钥保管库分配一个新的存储帐户
到目前为止,除了最后一个命令失败并出现 Forbidden
错误外,所有脚本似乎都有效。
我找到了 a similar issue on the MSDN,但似乎 KeyVault 的策略设置正确。
服务主体的权限
这里是服务主体(名为Azure DevOps - Azure Resource Manager
)的权限,命令是运行:
该命令是 运行 作为在订阅中具有 Owner
角色的服务主体:
在该订阅中创建的资源组也归该服务主体所有:
Key Vault principal 已被赋予
角色
Storage Account Key Operator Service Role
在存储帐户上:
proper policies 已经配置了 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 :
问题
在脚本中,我运行下面的命令,就像documentation中描述的那样:
Add-AzKeyVaultManagedStorageAccount -VaultName $keyVaultName -AccountName $storageAccountName -AccountResourceId $storageAccount.Id -ActiveKeyName 'key1' -DisableAutoRegenerateKey
我收到以下错误:
Operation returned an invalid status code 'Forbidden'
为什么在执行命令 Add-AzKeyVaultManagedStorageAccount
时出现错误 Forbidden
?
有点奇怪。我有同样的问题。
但是当我使用预览功能 Azure role-based 访问控制(预览) 时,我可以 运行 成功。
以下是我的步骤供大家参考:
将密钥保管库管理员角色分配给服务主体。
在 Azure DevOps 管道中使用 Powershell,我试图通过调用命令 Add-AzKeyVaultManagedStorageAccount
.
到目前为止,除了最后一个命令失败并出现 Forbidden
错误外,所有脚本似乎都有效。
我找到了 a similar issue on the MSDN,但似乎 KeyVault 的策略设置正确。
服务主体的权限
这里是服务主体(名为Azure DevOps - Azure Resource Manager
)的权限,命令是运行:
该命令是 运行 作为在订阅中具有 Owner
角色的服务主体:
在该订阅中创建的资源组也归该服务主体所有:
Key Vault principal 已被赋予
角色
Storage Account Key Operator Service Role
在存储帐户上:
proper policies 已经配置了 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 :
问题
在脚本中,我运行下面的命令,就像documentation中描述的那样:
Add-AzKeyVaultManagedStorageAccount -VaultName $keyVaultName -AccountName $storageAccountName -AccountResourceId $storageAccount.Id -ActiveKeyName 'key1' -DisableAutoRegenerateKey
我收到以下错误:
Operation returned an invalid status code 'Forbidden'
为什么在执行命令 Add-AzKeyVaultManagedStorageAccount
时出现错误 Forbidden
?
有点奇怪。我有同样的问题。
但是当我使用预览功能 Azure role-based 访问控制(预览) 时,我可以 运行 成功。
以下是我的步骤供大家参考:
将密钥保管库管理员角色分配给服务主体。