在Azure中,如果我想通过RBAC为资源组提供读访问权限,我可以通过ARM模板执行此操作吗?我知道通过VSTS构建步骤或PS脚本可以实现,但有没有办法通过ARM模板提供权限?
答案 0 :(得分:4)
不,这是不可能的,因为REST调用应用权限是这样的:
/subscriptions/xxx/providers/Microsoft.Authorization/roleDefinitions/xxx
您无法复制订阅"等级"使用ARM模板进行休息调用。
Welp,与我所知道的相反,这有效:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"resources": [
{
"type": "Microsoft.Authorization/roleAssignments",
"name": "8446a13c-6886-46e2-a17f-9df73adb334e",
"apiVersion": "2017-10-01-preview",
"location": "[resourceGroup().location]",
"properties": {
"roleDefinitionId": "[concat(subscription().Id, '/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c')]",
"principalId": "user_guid_goes_here",
"scope": "[resourceGroup().Id]"
}
}
]
}
这为用户分配了贡献者角色,并为您部署模板的资源组提供了guid(principalId)。分配其他角色得到它的指导并替换贡献者guid(b24988ac-6180-42a0-ab88-20f7382dd24c - 众所周知的guid)。您还可以为特定资源分配权限。使用scope
执行此操作(将其更改为resourceId)。 Name
必须是新的指南。
我不知道为什么会这样,当我发现它为什么有效时,我会回复你。
答案 1 :(得分:0)
我们可以为资源组及其资源分配权限。
{
"type": "Microsoft.Authorization/roleAssignments",
"name": "[variables('roleName')]",
"apiVersion": "[variables('authAPIVersion')]",
"properties": {
"roleDefinitionId": "[concat(subscription().id, '/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c')]",
"principalId": "[parameters('principalId')]",
"scope": "[concat(subscription().id, '/resourceGroups/',resourceGroup().name)]"
}
}
转到此链接了解更多详情 - Role-Based Access Control(RBAC)
答案 2 :(得分:0)
一件重要的事情,我们不能使用ARM模板在订阅级别上应用权限。我们可以仅对资源组及其资源应用权限。