我可以通过ARM模板应用权限吗?

时间:2018-01-16 15:39:07

标签: azure permissions

在Azure中,如果我想通过RBAC为资源组提供读访问权限,我可以通过ARM模板执行此操作吗?我知道通过VSTS构建步骤或PS脚本可以实现,但有没有办法通过ARM模板提供权限?

3 个答案:

答案 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模板在订阅级别上应用权限。我们可以仅对资源组及其资源应用权限。