Tworzenie grup zasobów i zasobów na poziomie subskrypcjiCreate resource groups and resources at the subscription level

Aby uprościć zarządzanie zasobami, możesz użyć szablonu Azure Resource Manager (szablon ARM) do wdrażania zasobów na poziomie subskrypcji platformy Azure.To simplify the management of resources, you can use an Azure Resource Manager template (ARM template) to deploy resources at the level of your Azure subscription. Na przykład można wdrożyć zasady i kontrolę dostępu opartą na ROLACH (Azure RBAC) w ramach subskrypcji, która stosuje je w ramach subskrypcji.For example, you can deploy policies and Azure role-based access control (Azure RBAC) to your subscription, which applies them across your subscription. Możesz również utworzyć grupy zasobów w ramach subskrypcji i wdrożyć zasoby w grupach zasobów w ramach subskrypcji.You can also create resource groups within the subscription and deploy resources to resource groups in the subscription.

Uwaga

Można wdrożyć do 800 różnych grup zasobów w ramach wdrożenia na poziomie subskrypcji.You can deploy to 800 different resource groups in a subscription level deployment.

Aby wdrożyć szablony na poziomie subskrypcji, użyj interfejsu wiersza polecenia platformy Azure, programu PowerShell, interfejsu API REST lub portalu.To deploy templates at the subscription level, use Azure CLI, PowerShell, REST API, or the portal.

Obsługiwane zasobySupported resources

Nie wszystkie typy zasobów można wdrożyć na poziomie subskrypcji.Not all resource types can be deployed to the subscription level. W tej sekcji przedstawiono typy zasobów, które są obsługiwane.This section lists which resource types are supported.

W przypadku planów platformy Azure Użyj:For Azure Blueprints, use:

W przypadku zasad platformy Azure Użyj:For Azure Policies, use:

W przypadku kontroli dostępu opartej na rolach platformy Azure (RBAC) Użyj:For Azure role-based access control (Azure RBAC), use:

W przypadku szablonów zagnieżdżonych, które są wdrażane w grupach zasobów, użyj:For nested templates that deploy to resource groups, use:

Aby utworzyć nowe grupy zasobów, użyj:For creating new resource groups, use:

Aby zarządzać subskrypcją, użyj:For managing your subscription, use:

Inne obsługiwane typy to:Other supported types include:

SchematSchema

Schemat używany do wdrożeń na poziomie subskrypcji różni się od schematu dla wdrożeń grup zasobów.The schema you use for subscription-level deployments is different than the schema for resource group deployments.

W przypadku szablonów Użyj:For templates, use:

https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#

Schemat pliku parametrów jest taki sam dla wszystkich zakresów wdrożenia.The schema for a parameter file is the same for all deployment scopes. W przypadku plików parametrów należy użyć:For parameter files, use:

https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#

Zakresy wdrożeniaDeployment scopes

Podczas wdrażania w ramach subskrypcji można wskazać jedną subskrypcję i grupy zasobów w ramach subskrypcji.When deploying to a subscription, you can target one subscription and any resource groups within the subscription. Nie można przeprowadzić wdrożenia w ramach subskrypcji innej niż subskrypcja docelowa.You can't deploy to a subscription that is different than the target subscription. Użytkownik wdrażający szablon musi mieć dostęp do określonego zakresu.The user deploying the template must have access to the specified scope.

Zasoby zdefiniowane w sekcji zasobów szablonu są stosowane do subskrypcji.Resources defined within the resources section of the template are applied to the subscription.

{
    "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        subscription-level-resources
    ],
    "outputs": {}
}

Aby określić grupę zasobów w ramach subskrypcji, Dodaj wdrożenie zagnieżdżone i Uwzględnij resourceGroup Właściwość.To target a resource group within the subscription, add a nested deployment and include the resourceGroup property. W poniższym przykładzie zagnieżdżone wdrożenie jest przeznaczone dla grupy zasobów o nazwie rg2 .In the following example, the nested deployment targets a resource group named rg2.

{
    "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2020-06-01",
            "name": "nestedDeployment",
            "resourceGroup": "demoResourceGroup",
            "properties": {
                "mode": "Incremental",
                "template": {
                    resource-group-resources
                }
            }
        }
    ],
    "outputs": {}
}

W tym artykule można znaleźć szablony, które pokazują, jak wdrażać zasoby w różnych zakresach.In this article, you can find templates that show how to deploy resources to different scopes. Aby utworzyć szablon, który tworzy grupę zasobów i wdraża do niej konto magazynu, zobacz Tworzenie grupy zasobów i zasobów.For a template that creates a resource group and deploys a storage account to it, see Create resource group and resources. W przypadku szablonu, który tworzy grupę zasobów, stosuje do niej blokadę i przypisuje rolę dla grupy zasobów, zobacz Kontrola dostępu.For a template that creates a resource group, applies a lock to it, and assigns a role for the resource group, see Access control.

Polecenia wdrażaniaDeployment commands

Polecenia dla wdrożeń na poziomie subskrypcji są inne niż polecenia dla wdrożeń grup zasobów.The commands for subscription-level deployments are different than the commands for resource group deployments.

W przypadku interfejsu wiersza polecenia platformy Azure Użyj polecenia AZ Deployment sub Create.For Azure CLI, use az deployment sub create. Poniższy przykład wdraża szablon w celu utworzenia grupy zasobów:The following example deploys a template to create a resource group:

az deployment sub create \
  --name demoSubDeployment \
  --location centralus \
  --template-uri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/emptyRG.json" \
  --parameters rgName=demoResourceGroup rgLocation=centralus

W przypadku polecenia wdrażania programu PowerShell Użyj poleceń New-AzDeployment i New-AzSubscriptionDeployment.For the PowerShell deployment command, use New-AzDeployment or New-AzSubscriptionDeployment. Poniższy przykład wdraża szablon w celu utworzenia grupy zasobów:The following example deploys a template to create a resource group:

New-AzSubscriptionDeployment `
  -Name demoSubDeployment `
  -Location centralus `
  -TemplateUri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/emptyRG.json" `
  -rgName demoResourceGroup `
  -rgLocation centralus

W przypadku interfejsu API REST Użyj wdrożeń — Utwórz zakres subskrypcji.For REST API, use Deployments - Create At Subscription Scope.

Lokalizacja i nazwa wdrożeniaDeployment location and name

W przypadku wdrożeń na poziomie subskrypcji należy podać lokalizację wdrożenia.For subscription level deployments, you must provide a location for the deployment. Lokalizacja wdrożenia jest oddzielona od lokalizacji wdrażanych zasobów.The location of the deployment is separate from the location of the resources you deploy. Lokalizacja wdrożenia określa miejsce przechowywania danych wdrożenia.The deployment location specifies where to store deployment data.

Możesz podać nazwę wdrożenia lub użyć domyślnej nazwy wdrożenia.You can provide a name for the deployment, or use the default deployment name. Nazwa domyślna to nazwa pliku szablonu.The default name is the name of the template file. Na przykład wdrożenie szablonu o nazwie azuredeploy.jsw programie tworzy domyślną nazwę wdrożenia azuredeploy.For example, deploying a template named azuredeploy.json creates a default deployment name of azuredeploy.

Dla każdej nazwy wdrożenia lokalizacja jest niezmienna.For each deployment name, the location is immutable. Nie można utworzyć wdrożenia w jednej lokalizacji, gdy istnieje wdrożenie o tej samej nazwie w innej lokalizacji.You can't create a deployment in one location when there's an existing deployment with the same name in a different location. Jeśli zostanie wyświetlony kod błędu InvalidDeploymentLocation , użyj innej nazwy lub tej samej lokalizacji co poprzednie wdrożenie dla tej nazwy.If you get the error code InvalidDeploymentLocation, either use a different name or the same location as the previous deployment for that name.

Korzystanie z funkcji szablonuUse template functions

W przypadku wdrożeń na poziomie subskrypcji istnieją pewne ważne zagadnienia dotyczące korzystania z funkcji szablonu:For subscription-level deployments, there are some important considerations when using template functions:

  • Funkcja przesourceing () nie jest obsługiwana.The resourceGroup() function is not supported.

  • Obsługiwane są funkcje Reference () i list () .The reference() and list() functions are supported.

  • Nie należy używać ResourceID () w celu uzyskania identyfikatora zasobu dla zasobów wdrożonych na poziomie subskrypcji.Don't use resourceId() to get the resource ID for resources that are deployed at subscription level. Zamiast tego należy użyć funkcji subscriptionResourceId () .Instead, use the subscriptionResourceId() function.

    Aby na przykład uzyskać identyfikator zasobu definicji zasad wdrożonej w ramach subskrypcji, użyj:For example, to get the resource ID for a policy definition that is deployed to a subscription, use:

    subscriptionResourceId('Microsoft.Authorization/roleDefinitions/', parameters('roleDefinition'))
    

    Identyfikator zwróconego zasobu ma następujący format:The returned resource ID has the following format:

    /subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
    

Grupy zasobówResource groups

Tworzenie grup zasobówCreate resource groups

Aby utworzyć grupę zasobów w szablonie ARM, zdefiniuj zasób Microsoft. resources/resourceGroups z nazwą i lokalizacją grupy zasobów.To create a resource group in an ARM template, define a Microsoft.Resources/resourceGroups resource with a name and location for the resource group.

Poniższy szablon tworzy pustą grupę zasobów.The following template creates an empty resource group.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "rgName": {
      "type": "string"
    },
    "rgLocation": {
      "type": "string"
    }
  },
  "variables": {},
  "resources": [
    {
      "type": "Microsoft.Resources/resourceGroups",
      "apiVersion": "2020-06-01",
      "name": "[parameters('rgName')]",
      "location": "[parameters('rgLocation')]",
      "properties": {}
    }
  ],
  "outputs": {}
}

Użyj kopiowania elementu z grupami zasobów, aby utworzyć więcej niż jedną grupę zasobów.Use the copy element with resource groups to create more than one resource group.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "rgNamePrefix": {
      "type": "string"
    },
    "rgLocation": {
      "type": "string"
    },
    "instanceCount": {
      "type": "int"
    }
  },
  "variables": {},
  "resources": [
    {
      "type": "Microsoft.Resources/resourceGroups",
      "apiVersion": "2020-06-01",
      "location": "[parameters('rgLocation')]",
      "name": "[concat(parameters('rgNamePrefix'), copyIndex())]",
      "copy": {
        "name": "rgCopy",
        "count": "[parameters('instanceCount')]"
      },
      "properties": {}
    }
  ],
  "outputs": {}
}

Aby uzyskać informacje o iteracji zasobów, zobacz wdrażanie więcej niż jednego wystąpienia zasobu w szablonach Azure Resource Manageri Samouczek: Tworzenie wielu wystąpień zasobów przy użyciu szablonów Menedżer zasobów.For information about resource iteration, see Deploy more than one instance of a resource in Azure Resource Manager Templates, and Tutorial: Create multiple resource instances with Resource Manager templates.

Tworzenie grupy zasobów i zasobówCreate resource group and resources

Aby utworzyć grupę zasobów i wdrożyć do niej zasoby, użyj szablonu zagnieżdżonego.To create the resource group and deploy resources to it, use a nested template. Szablon zagnieżdżony definiuje zasoby, które mają zostać wdrożone w grupie zasobów.The nested template defines the resources to deploy to the resource group. Ustaw szablon zagnieżdżony jako zależny od grupy zasobów, aby upewnić się, że grupa zasobów istnieje przed wdrożeniem zasobów.Set the nested template as dependent on the resource group to make sure the resource group exists before deploying the resources. Można wdrożyć maksymalnie 800 grup zasobów.You can deploy to up to 800 resource groups.

Poniższy przykład tworzy grupę zasobów i wdraża konto magazynu w grupie zasobów.The following example creates a resource group, and deploys a storage account to the resource group.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "rgName": {
      "type": "string"
    },
    "rgLocation": {
      "type": "string"
    },
    "storagePrefix": {
      "type": "string",
      "maxLength": 11
    }
  },
  "variables": {
    "storageName": "[concat(parameters('storagePrefix'), uniqueString(subscription().id, parameters('rgName')))]"
  },
  "resources": [
    {
      "type": "Microsoft.Resources/resourceGroups",
      "apiVersion": "2020-06-01",
      "name": "[parameters('rgName')]",
      "location": "[parameters('rgLocation')]",
      "properties": {}
    },
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2020-06-01",
      "name": "storageDeployment",
      "resourceGroup": "[parameters('rgName')]",
      "dependsOn": [
        "[resourceId('Microsoft.Resources/resourceGroups/', parameters('rgName'))]"
      ],
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {},
          "variables": {},
          "resources": [
            {
              "type": "Microsoft.Storage/storageAccounts",
              "apiVersion": "2019-06-01",
              "name": "[variables('storageName')]",
              "location": "[parameters('rgLocation')]",
              "sku": {
                "name": "Standard_LRS"
              },
              "kind": "StorageV2"
            }
          ],
          "outputs": {}
        }
      }
    }
  ],
  "outputs": {}
}

Azure PolicyAzure Policy

Przypisz definicję zasadAssign policy definition

Poniższy przykład przypisuje istniejącą definicję zasad do subskrypcji.The following example assigns an existing policy definition to the subscription. Jeśli definicja zasad przyjmuje parametry, podaj je jako obiekt.If the policy definition takes parameters, provide them as an object. Jeśli definicja zasad nie przyjmuje parametrów, Użyj domyślnego pustego obiektu.If the policy definition doesn't take parameters, use the default empty object.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "policyDefinitionID": {
      "type": "string"
    },
    "policyName": {
      "type": "string"
    },
    "policyParameters": {
      "type": "object",
      "defaultValue": {}
    }
  },
  "variables": {},
  "resources": [
    {
      "type": "Microsoft.Authorization/policyAssignments",
      "apiVersion": "2018-03-01",
      "name": "[parameters('policyName')]",
      "properties": {
        "scope": "[subscription().id]",
        "policyDefinitionId": "[parameters('policyDefinitionID')]",
        "parameters": "[parameters('policyParameters')]"
      }
    }
  ]
}

Aby wdrożyć ten szablon przy użyciu interfejsu wiersza polecenia platformy Azure, użyj polecenia:To deploy this template with Azure CLI, use:

# Built-in policy definition that accepts parameters
definition=$(az policy definition list --query "[?displayName=='Allowed locations'].id" --output tsv)

az deployment sub create \
  --name demoDeployment \
  --location centralus \
  --template-uri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/policyassign.json" \
  --parameters policyDefinitionID=$definition policyName=setLocation policyParameters="{'listOfAllowedLocations': {'value': ['westus']} }"

Aby wdrożyć ten szablon przy użyciu programu PowerShell, użyj polecenia:To deploy this template with PowerShell, use:

$definition = Get-AzPolicyDefinition | Where-Object { $_.Properties.DisplayName -eq 'Allowed locations' }

$locations = @("westus", "westus2")
$policyParams =@{listOfAllowedLocations = @{ value = $locations}}

New-AzSubscriptionDeployment `
  -Name policyassign `
  -Location centralus `
  -TemplateUri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/policyassign.json" `
  -policyDefinitionID $definition.PolicyDefinitionId `
  -policyName setLocation `
  -policyParameters $policyParams

Tworzenie i przypisywanie definicji zasadCreate and assign policy definitions

Można zdefiniować i przypisać definicję zasad w tym samym szablonie.You can define and assign a policy definition in the same template.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "variables": {},
  "resources": [
    {
      "type": "Microsoft.Authorization/policyDefinitions",
      "apiVersion": "2018-05-01",
      "name": "locationpolicy",
      "properties": {
        "policyType": "Custom",
        "parameters": {},
        "policyRule": {
          "if": {
            "field": "location",
            "equals": "northeurope"
          },
          "then": {
            "effect": "deny"
          }
        }
      }
    },
    {
      "type": "Microsoft.Authorization/policyAssignments",
      "apiVersion": "2018-05-01",
      "name": "location-lock",
      "dependsOn": [
        "locationpolicy"
      ],
      "properties": {
        "scope": "[subscription().id]",
        "policyDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/policyDefinitions', 'locationpolicy')]"
      }
    }
  ]
}

Aby utworzyć definicję zasad w ramach subskrypcji, a następnie przypisać ją do subskrypcji, użyj następującego polecenia CLI:To create the policy definition in your subscription, and assign it to the subscription, use the following CLI command:

az deployment sub create \
  --name demoDeployment \
  --location centralus \
  --template-uri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/policydefineandassign.json"

Aby wdrożyć ten szablon przy użyciu programu PowerShell, użyj polecenia:To deploy this template with PowerShell, use:

New-AzSubscriptionDeployment `
  -Name definePolicy `
  -Location centralus `
  -TemplateUri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/policydefineandassign.json"

Azure BlueprintsAzure Blueprints

Utwórz definicję planuCreate blueprint definition

Definicję planu można utworzyć na podstawie szablonu.You can create a blueprint definition from a template.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "blueprintName": {
      "defaultValue": "sample-blueprint",
      "type": "String",
      "metadata": {
        "description": "The name of the blueprint definition."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Blueprint/blueprints",
      "apiVersion": "2018-11-01-preview",
      "name": "[parameters('blueprintName')]",
      "properties": {
        "targetScope": "subscription",
        "description": "Blueprint with a policy assignment artifact.",
        "resourceGroups": {
          "sampleRg": {
            "description": "Resource group to add the assignment to."
          }
        },
        "parameters": {
          "listOfResourceTypesNotAllowed": {
            "type": "array",
            "metadata": {
              "displayName": "Resource types to pass to the policy assignment artifact."
            },
            "defaultValue": [
              "Citrix.Cloud/accounts"
            ]
          }
        }
      }
    },
    {
      "type": "Microsoft.Blueprint/blueprints/artifacts",
      "apiVersion": "2018-11-01-preview",
      "name": "[concat(parameters('blueprintName'), '/policyArtifact')]",
      "kind": "policyAssignment",
      "dependsOn": [
        "[parameters('blueprintName')]"
      ],
      "properties": {
        "displayName": "Blocked Resource Types policy definition",
        "description": "Block certain resource types",
        "policyDefinitionId": "[tenantResourceId('Microsoft.Authorization/policyDefinitions', '6c112d4e-5bc7-47ae-a041-ea2d9dccd749')]",
        "resourceGroup": "sampleRg",
        "parameters": {
          "listOfResourceTypesNotAllowed": {
            "value": "[[parameters('listOfResourceTypesNotAllowed')]"
          }
        }
      }
    }
  ]
}

Aby utworzyć definicję planu w ramach subskrypcji, należy użyć następującego polecenia CLI:To create the blueprint definition in your subscription, use the following CLI command:

az deployment sub create \
  --name demoDeployment \
  --location centralus \
  --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/subscription-deployments/blueprints-new-blueprint/azuredeploy.json"

Aby wdrożyć ten szablon przy użyciu programu PowerShell, użyj polecenia:To deploy this template with PowerShell, use:

New-AzSubscriptionDeployment `
  -Name demoDeployment `
  -Location centralus `
  -TemplateUri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/subscription-deployments/blueprints-new-blueprint/azuredeploy.json"

Kontrola dostępuAccess control

Aby dowiedzieć się więcej o przypisywaniu ról, zobacz Dodawanie przypisań ról platformy Azure przy użyciu szablonów Azure Resource Manager.To learn about assigning roles, see Add Azure role assignments using Azure Resource Manager templates.

Poniższy przykład tworzy grupę zasobów, stosuje do niej blokadę i przypisuje rolę do podmiotu zabezpieczeń.The following example creates a resource group, applies a lock to it, and assigns a role to a principal.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "rgName": {
      "type": "string",
      "metadata": {
        "description": "Name of the resourceGroup to create"
      }
    },
    "rgLocation": {
      "type": "string",
      "metadata": {
        "description": "Location for the resourceGroup"
      }
    },
    "principalId": {
      "type": "string",
      "metadata": {
        "description": "principalId of the user that will be given contributor access to the resourceGroup"
      }
    },
    "roleDefinitionId": {
      "type": "string",
      "defaultValue": "b24988ac-6180-42a0-ab88-20f7382dd24c",
      "metadata": {
        "description": "roleDefinition to apply to the resourceGroup - default is contributor"
      }
    },
    "roleAssignmentName": {
      "type": "string",
      "defaultValue": "[guid(parameters('principalId'), parameters('roleDefinitionId'), parameters('rgName'))]",
      "metadata": {
        "description": "Unique name for the roleAssignment in the format of a guid"
      }
    }
  },
  "variables": { },
  "resources": [
    {
      "type": "Microsoft.Resources/resourceGroups",
      "apiVersion": "2019-10-01",
      "name": "[parameters('rgName')]",
      "location": "[parameters('rgLocation')]",
      "tags": {
        "Note": "subscription level deployment"
      },
      "properties": {}
    },
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2019-10-01",
      "name": "applyLock",
      "resourceGroup": "[parameters('rgName')]",
      "dependsOn": [
        "[parameters('rgName')]"
      ],
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "resources": [
            {
              "type": "Microsoft.Authorization/locks",
              "apiVersion": "2017-04-01",
              "name": "DontDelete",
              "properties": {
                "level": "CanNotDelete",
                "notes": "Prevent deletion of the resourceGroup"
              }
            },
            {
              "type": "Microsoft.Authorization/roleAssignments",
              "apiVersion": "2020-04-01-preview",
              "name": "[guid(parameters('roleAssignmentName'))]",
              "properties": {
                "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', parameters('roleDefinitionId'))]",
                "principalId": "[parameters('principalId')]",
                "scope": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('rgName'))]"
              }
            }
          ]
        }
      }
    }
  ]
}

Następne krokiNext steps