我正在尝试创建一个自定义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
中使用某种通配符?简单的星号无效。或者,也许我可以使用资源组标签或其他?
提前非常感谢您。
最佳答案
AFAIK,您不能在assignableScopes
中使用通配符,New-AzureRmRoleDefinition
powershell命令本质上调用了 Role Definitions - Create Or Update
REST API,assignableScopes
仅接受三种类型,请参阅此link。
如果要仅对订阅资源组的某些子集指定AssignableScopes,则需要在assignableScopes
中一一指定它们,例如
"assignableScopes": [
"subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1",
"subscriptions/{subscriptionId}/resourceGroups/myresourcegroup2",
"subscriptions/{subscriptionId}/resourceGroups/myresourcegroup3",
]
不,可能的属性都在REST API文档中列出,没有其他属性。
关于azure - 具有特殊AssignableScopes的Azure自定义RM角色定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53290344/