我正在使用 Azure DevOps 构建 Terraform 基础设施,并且我的基础设施中有一个 key 保管库。当尝试破坏环境(本地或管道中)时,terraform 返回以下错误:
Error: keyvault.VaultsClient#PurgeDeleted: Failure sending request: StatusCode=403
-- Original Error: Code="AuthorizationFailed" Message="The client 'my-email' with
object id 'my-object-id' does not have authorization to perform action
'Microsoft.KeyVault/locations/deletedVaults/purge/action' over scope
'/subscriptions/subscription-id' or the scope is invalid.
If access was recently granted, please refresh your credentials."
尽管我对配置此 kv 的资源组具有所有者/贡献者角色
,并且我在订阅级别具有Key Vault 管理员/贡献者
,但仍显示此错误。有人可以告诉我需要什么角色(限制越多越好)才能避免将来出现此问题吗?
谢谢
最佳答案
我尝试在我的环境中重现相同的结果并得到以下结果:
我创建了一个测试用户并分配了相同的角色,如下所示:
现在,我使用测试用户凭据登录到 Azure 门户,并尝试清除已删除的 key 保管库,如下所示:
转到 Azure 门户 -> key 保管库 -> 管理已删除的保管库 -> 选择订阅 -> 选择 key 保管库 -> 清除 -> 删除
当我点击删除时,它给了我相同的错误,如下所示:
To purge a soft deleted key vault, user requires
role
that includes permission like Microsoft.KeyVault/locations/deletedVaults/purge/action. Please note that, onlySubscription Owner
will have that permission.
要解决错误,您需要在订阅级别向用户分配所有者角色。
当我在获得订阅所有者
角色后尝试相同的操作时,我能够成功清除已删除的 key 保管库,如下所示:
如果您不想分配订阅所有者
角色,您可以通过添加所需权限来创建自定义 RBAC 角色并进行分配根据您的要求向用户提供。
引用文献:
关于azure - 删除时清除 Azure Key Vault 的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74206482/