Шаблон ARM для назначения ролей на уровне Mgmt Group

Я пытаюсь создать шаблон руки, который назначает роль RBAC группе на уровне группы управления. Я могу сделать это через CLI и PowerShell, но не могу заставить его работать через шаблон ARM

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "roleDefinitionId": {
            "type": "string",
            "defaultValue": "xxxx",
            "metadata": {
                "description": "roleDefinition for the assignment - default is reader"
            }
        }
    },
    "variables": {
        "roleAssignmentName": "[guid('/', variables('xxx'), parameters('roleDefinitionId'))]"
    },
    "resources": [
        {
            "name": "[variables('roleAssignmentName')]",
            "type": "Microsoft.Authorization/roleAssignments",
            "apiVersion": "2020-04-01-preview",
            "scope": "/providers/Microsoft.Management/managementGroups/xxxx",
            "properties": {
                "mode": "Incremental",
                "roleDefinitionId": "xxx",
                "principalId": "xxxx",
                "principalType": "Group"
            }
        }
    ]
}

Кто-нибудь знает, поддерживаются ли группы MGMT, если да, что я делаю не так?

Вот официальный документ для назначения ролей ARM https://docs.microsoft.com/en-us/azure/role-based-access-control/role-assignments-template, показано, как это сделать для подпрограмм и групп ресурсов.


person TalkingReckless    schedule 04.02.2021    source источник
comment
Не могли бы вы рассказать мне свое сообщение об ошибке?   -  person Jim Xu    schedule 05.02.2021
comment
это одна из ошибок, которые я получаю validResourceType", "message": "The resource type 'managementGroups' could not be found in the namespace 'Microsoft.Management' for api version '2020-04-01-preview'. The supported api-versions are '2020-10-01,2020-05-01,2020-02-01,2019-11-01,2018-03-01-preview,2018-01-01-preview,2017-11-01-preview,2017-08-31-preview,2017-06-30-preview,2017-05-31-preview,2018-03-01-beta'."   -  person TalkingReckless    schedule 05.02.2021
comment
Вы хотите развернуть шаблон в одной группе?   -  person Jim Xu    schedule 05.02.2021
comment
да, пробовал одну из версий api, перечисленных вверху, ни одна не работала   -  person TalkingReckless    schedule 05.02.2021


Ответы (1)


Удалите свойство scope из определения вашего ресурса ...

TL; DR; roleAssignments можно развернуть только в той области, которой они назначаются, поэтому свойство является посторонним. Кроме того, свойство scope не работает с ресурсами расширения managementGroup (я знаю, что сбивает с толку), что является просто моментом во времени. Свойство scope обычно используется для нацеливания ресурса на другую область (т.е. отличную от самого развертывания шаблона), но, поскольку roleAssignments не может быть перенаправлен, вам это не нужно, и в этом случае это вызовет у вас проблемы.

Вот мой образец (обратите внимание, что у меня нет свойства PrincipalType, поэтому он использует значение по умолчанию):

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "principalId": {
        "type": "string",
        "metadata": {
          "description": "principalId if the user that will be given contributor access to the resourceGroup"
        }
      },
      "roleDefinitionId": {
        "type": "string",
        "defaultValue": "b24988ac-6180-42a0-ab88-20f7382dd24c",
        "metadata": {
          "description": "roleDefinition for the assignment - default is contributor"
        }
      },
      "managementGroupName": {
        "type": "string",
        "metadata": {
          "description": "Name of the managementGroup for the roleAssignment"
        }
      }
    },
    "variables": {
      // this creates an idempotent GUID for the role assignment
      "roleAssignmentName": "[guid(parameters('managementGroupName'), parameters('principalId'), parameters('roleDefinitionId'))]"
     },
    "resources": [
      {
        "type": "Microsoft.Authorization/roleAssignments",
        "apiVersion": "2020-04-01-preview",
        "name": "[variables('roleAssignmentName')]",
        "properties": {
          "roleDefinitionId": "[tenantResourceId('Microsoft.Authorization/roleDefinitions', parameters('roleDefinitionId'))]",
          "principalId": "[parameters('principalId')]"
        }
      }
    ]
  }
person bmoore-msft    schedule 05.02.2021