无法理解 Azure 的角色 JSON

问题描述

这只是一个概念,我无法理解通配符 * 及其含义,因此这里我们有两个角色所有者和贡献者。

"Name": "Contributor","Id": "b24988ac-6180-42a0-ab88-20f7382dd24c","IsCustom": false,"Description": "Lets you manage everything except access to resources.","Actions": ["*"],"NotActions": [
 "Microsoft.Authorization/*/Delete","Microsoft.Authorization/*/Write","Microsoft.Authorization/elevateAccess/Action'],"DataActions": [],"NotDataActions": [],"AssignableScopes": [],"/"
Name             : Owner
Id               : 8e3af657-a8ff-443c-a75c-2fe8c4bcb635
IsCustom         : False
Description      : Grants full access to manage all resources,including the ability to assign roles in Azure RBAC.
Actions          : {*}
NotActions       : {}
DataActions      : {}
NotDataActions   : {}
AssignableScopes : {/}

所以我的挂断是使用星号,我知道所有者下的 * 意味着一切,但对于贡献者,为什么在 NotActions 权限下使用它?为什么是“Microsoft.Authorization/*/Delete”而不是Microsoft.Authorization/Delete”。有问题的权限会阻止贡献者删除用户。所以我知道这些角色和权限是如何工作的,我只是在语法上很挣扎。我已经阅读了有关 microsoft learn 的文档,但有一些我显然不了解 * 的知识。有没有人知道解释这一点的方法以帮助清除它,或者有人可以指点我一些更好的文档?有帮助吗?将不胜感激。

解决方法

为什么是“Microsoft.Authorization/*/Delete”而不是 Microsoft.授权/删除”。

要了解这一点,请参阅此 link 特别是 Operations format 部分。

基本上每个操作都以 {Company}.{ProviderName}/{resourceType}/{action} 格式指定。

因此,当您将操作指定为 Microsoft.Authorization/*/Delete 时,实际上是允许对 Microsoft.Authorization 资源提供程序下的所有资源进行删除操作。

这种格式还使您能够在资源提供者下的每个资源级别上细粒度地指定操作。