azure - 删除时清除 Azure Key Vault 的权限

标签 azure azure-active-directory terraform azure-keyvault terraform-provider-azure

我正在使用 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 管理员/贡献者,但仍显示此错误。有人可以告诉我需要什么角色(限制越多越好)才能避免将来出现此问题吗?
谢谢

最佳答案

我尝试在我的环境中重现相同的结果并得到以下结果:

我创建了一个测试用户并分配了相同的角色,如下所示:

enter image description here

现在,我使用测试用户凭据登录到 Azure 门户,并尝试清除已删除的 key 保管库,如下所示:

转到 Azure 门户 -> key 保管库 -> 管理已删除的保管库 -> 选择订阅 -> 选择 key 保管库 -> 清除 -> 删除

enter image description here

当我点击删除时,它给了我相同的错误,如下所示:

enter image description here

To purge a soft deleted key vault, user requires role that includes permission like Microsoft.KeyVault/locations/deletedVaults/purge/action. Please note that, only Subscription Owner will have that permission.

解决错误,您需要在订阅级别向用户分配所有者角色。

enter image description here

当我在获得订阅所有者角色后尝试相同的操作时,我能够成功清除已删除的 key 保管库,如下所示:

enter image description here

如果您不想分配订阅所有者角色,您可以通过添加所需权限来创建自定义 RBAC 角色并进行分配根据您的要求向用户提供。

引用文献:

Azure Key Vault recovery overview | Microsoft

Azure custom roles - Azure RBAC | Microsoft

关于azure - 删除时清除 Azure Key Vault 的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74206482/

相关文章:

Azure Devops - 生产部署的服务主体手动(或)服务主体自动?

azure - 使用 terraform 将 .war 文件启动到 azure 中的应用程序服务上

aws-api-gateway - API 网关模拟集成失败,显示 500

Terraform S3后端vs terraform_remote_state

azure - 为了触发发布管道(为构建工件配置),构建管道必须具有 "publish artifact"任务?

azure - 能否将 SSL 证书与即用即付的 Azure 应用服务相关联?

javascript - 在客户端 React 中存储 MSAL Graph API token 并重复使用它直至过期

Azure 容器实例由于拉取镜像时出现问题而失败

asp.net-mvc - Azure 存储 api 不适用于 asnyc 上传

json - 使用 Powershell,如何将 Azure AD 组成员转换为 Json 对象(文件),然后进行更新?