具有特殊AssignableScopes的Azure自定义RM角色定义

时间:2018-11-13 22:16:23

标签: azure powershell rbac

我正在尝试创建一个自定义Azure RM角色定义,该定义适用于一个订阅中的某些资源组。我不想提供对所有订阅或仅一个资源组的访问权限,并且我无法指定资源组的列表,因为其中一些尚未创建。我只想提供访问权限,以便订阅资源组的某些子集。

为此,我使用PowerShell cmdlet

New-AzureRmRoleDefinition -InputFile .\new-role.json 

JSON在哪里

{
  "Name": "RoleAssignmentsWriter",
  "Description": "Allow to perform role assignment",
  "Actions": [
    "Microsoft.Authorization/roleAssignments/write"
  ],
  "AssignableScopes": [
    "/subscriptions/xxxxx-xxxxx-xxxx-xxx-xxxxxxx/resourceGroups/prefix*"
  ]
} 

其中 前缀 是存在的和要素资源组名称的前缀。

如果AssignableScopes: [“/subscriptions/xxxxx-xxxxx-xxxx-xxx-xxxxxxx”] –整个订阅或AssignableScopes: ["/subscriptions/xxxxx-xxxxx-xxxx-xxx-xxxxxxx/resourceGroups/ResourceGroupName”]

都可以使用

但是,如果我指定了AssignableScopes: ["/subscriptions/xxxxx-xxxxx-xxxx-xxx-xxxxxxx/resourceGroups/prefix*"]甚至是AssignableScopes: ["/subscriptions/xxxxx-xxxxx-xxxx-xxx-xxxxxxx/resourceGroups/*"],就无法使用。

重要的一件事是我想为尚不存在的资源组创建角色定义,稍后将创建它们。

问题是:是否可以仅对订阅资源组的某些子集指定AssignableScopes?也许我可以在AssignableScopes中使用某种通配符?简单的星号无效。 或者,也许我可以使用资源组标签或其他东西?

非常感谢您。

1 个答案:

答案 0 :(得分:2)

  

是否可以仅对订阅资源组的某些子集指定AssignableScopes?也许我可以在AssignableScopes中使用某种通配符?

AFAIK,您不能在assignableScopes中使用通配符,New-AzureRmRoleDefinition powershell命令本质上调用了Role Definitions - Create Or Update REST API,assignableScopes仅接受三种类型,请参阅link

enter image description here

如果只想为订阅资源组的某些子集指定AssignableScopes,则需要在assignableScopes中一一指定,例如

 "assignableScopes": [
      "subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1",
      "subscriptions/{subscriptionId}/resourceGroups/myresourcegroup2",
      "subscriptions/{subscriptionId}/resourceGroups/myresourcegroup3",
    ]
  

或者也许我可以使用资源组标签或其他东西?

否,REST API文档中列出了所有可能的属性,没有其他属性。