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

Azure 我可以通过ARM模板应用权限吗?,azure,permissions,Azure,Permissions,在Azure中,如果我想通过RBAC为资源组授予读取权限,我可以通过ARM模板来实现吗?我知道这可以通过VSTS构建步骤或PS脚本实现,但有没有办法通过ARM模板授予权限?不,这是不可能的,因为应用权限的REST调用是这样的: /subscriptions/xxx/providers/Microsoft.Authorization/roleDefinitions/xxx 您还不能使用ARM模板复制订阅“级别”rest调用 Welp,与我所知道的相反,这是有效的: { "$schema"

在Azure中,如果我想通过RBAC为资源组授予读取权限,我可以通过ARM模板来实现吗?我知道这可以通过VSTS构建步骤或PS脚本实现,但有没有办法通过ARM模板授予权限?

不,这是不可能的,因为应用权限的REST调用是这样的:

/subscriptions/xxx/providers/Microsoft.Authorization/roleDefinitions/xxx
您还不能使用ARM模板复制订阅“级别”rest调用

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并替换参与者guid(b24988ac-6180-42a0-ab88-20f7382dd24c-众所周知的guid)。您还可以为特定资源分配权限。使用
scope
执行此操作(将其更改为resourceId)<代码>名称必须是新的guid

我不知道为什么会这样,我会在找到原因后再联系您。

不,这是不可能的,因为应用权限的REST调用是这样的:

/subscriptions/xxx/providers/Microsoft.Authorization/roleDefinitions/xxx
您还不能使用ARM模板复制订阅“级别”rest调用

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并替换参与者guid(b24988ac-6180-42a0-ab88-20f7382dd24c-众所周知的guid)。您还可以为特定资源分配权限。使用
scope
执行此操作(将其更改为resourceId)<代码>名称必须是新的guid


我不知道为什么会这样,我会在找到原因后再联系您。

我们可以为资源组及其资源分配权限

{
    "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)]"
    }     
}

有关更多详细信息,请转到此链接-

我们可以为资源组及其资源分配权限

{
    "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)]"
    }     
}

有关更多详细信息,请访问此链接-

一件重要的事情,我们无法使用ARM模板对订阅级别应用权限。我们只能对资源组及其资源应用权限。

重要的一点是,我们不能使用ARM模板对订阅级别应用权限。我们只能对资源组及其资源应用权限。

本文档中的内容如何:?我无法让它工作,但你确定这只能通过REST电话实现吗?检查更新的答案。我不知道它是如何工作的,因为它不应该;)是的,这完全奏效了。我想我的手机坏了,因为我的手机版本不对。对于资源的名称,我使用了一个GUID生成器,它可以正常工作。您能解释一下为什么资源的名称需要是GUID吗?因为这是资源提供程序的工作方式。它将随机GUID分配给资源名称。你必须模仿这种行为如果我想把这一步放在多个方面,我每次都需要一个唯一的GUID吗?文档中的东西呢?我无法让它工作,但你确定这只能通过REST电话实现吗?检查更新的答案。我不知道它是如何工作的,因为它不应该;)是的,这完全奏效了。我想我的手机坏了,因为我的手机版本不对。对于资源的名称,我使用了一个GUID生成器,它可以正常工作。您能解释一下为什么资源的名称需要是GUID吗?因为这是资源提供程序的工作方式。它将随机GUID分配给资源名称。你必须模仿这种行为如果我想把这一步放在多个方面,我每次都需要一个唯一的GUID吗?
{
    "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)]"
    }     
}