Vedi Impostazione dell'ambito per le risorse di estensione nei modelli di ARM.
Una risorsa di estensione è una risorsa che modifica un'altra risorsa. Ad esempio, puoi assegnare un ruolo a una risorsa. L'assegnazione di ruolo è un tipo di risorsa di estensione.
Per un elenco completo dei tipi di risorse di estensione, vedi Tipi di risorse che estendono le funzionalità di altre risorse.
Questo articolo spiega come impostare l'ambito per un tipo di risorsa di estensione quando viene distribuita con un modello di Azure Resource Manager (modello di ARM). Descrive la proprietà Scope disponibile per le risorse di estensione quando si applicano a una risorsa.
Nota
La proprietà scope è disponibile solo per i tipi di risorse di estensione. Per specificare un ambito diverso per un tipo di risorsa che non è un tipo di estensione, usa una distribuzione annidata o collegata. Per altre informazioni, vedi distribuzioni di gruppi di risorse,distribuzioni di sottoscrizioni, distribuzioni di gruppi di gestione e distribuzioni di tenant.
Applicare all'ambito di distribuzione
Per applicare un tipo di risorsa di estensione all'ambito della distribuzione di destinazione, aggiungere la risorsa al modello come si farebbe con qualsiasi altro tipo di risorsa. Gli ambiti disponibili sono gruppo di risorse, sottoscrizione, gruppo di gestione e tenant. L'ambito di distribuzione deve supportare il tipo di risorsa.
Il modello seguente distribuisce un blocco.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
},
"resources": [
{
"type": "Microsoft.Authorization/locks",
"apiVersion": "2016-09-01",
"name": "rgLock",
"properties": {
"level": "CanNotDelete",
"notes": "Resource Group should not be deleted."
}
}
]
}
Quando viene distribuito in un gruppo di risorse, blocca il gruppo di risorse.
az deployment group create \
--resource-group ExampleGroup \
--template-uri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/scope/locktargetscope.json"
Nell'esempio seguente viene assegnato un ruolo.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"parameters": {
"principalId": {
"type": "string",
"metadata": {
"description": "The principal to assign the role to"
}
},
"builtInRoleType": {
"type": "string",
"allowedValues": [
"Owner",
"Contributor",
"Reader"
],
"metadata": {
"description": "Built-in role to assign"
}
},
"roleNameGuid": {
"type": "string",
"metadata": {
"description": "The role assignment name"
}
}
},
"variables": {
"Owner": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')]",
"Contributor": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]",
"Reader": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]"
},
"resources": [
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2020-10-01-preview",
"name": "[parameters('roleNameGuid')]",
"properties": {
"roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
"principalId": "[parameters('principalId')]"
}
}
],
"outputs": {}
}
Quando viene distribuita in una sottoscrizione, assegna il ruolo alla sottoscrizione.
az deployment sub create \
--name demoSubDeployment \
--location centralus \
--template-uri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/scope/roletargetscope.json"
Applicare alla risorsa
Per applicare una risorsa di estensione a una risorsa, usa la proprietà scope
. Imposta la proprietà scope sul nome della risorsa a cui si aggiunge l'estensione. La proprietà scope è una proprietà radice per il tipo di risorsa di estensione.
Nell'esempio seguente viene creato un account di archiviazione e gli si applica un ruolo.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"principalId": {
"type": "string",
"metadata": {
"description": "The principal to assign the role to"
}
},
"builtInRoleType": {
"type": "string",
"allowedValues": [
"Owner",
"Contributor",
"Reader"
],
"metadata": {
"description": "Built-in role to assign"
}
},
"roleNameGuid": {
"type": "string",
"defaultValue": "[newGuid()]",
"metadata": {
"description": "A new GUID used to identify the role assignment"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"Owner": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')]",
"Contributor": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]",
"Reader": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]",
"storageName": "[concat('storage', uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('storageName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
},
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2020-10-01-preview",
"name": "[parameters('roleNameGuid')]",
"scope": "[concat('Microsoft.Storage/storageAccounts', '/', variables('storageName'))]",
"dependsOn": [
"[variables('storageName')]"
],
"properties": {
"roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
"principalId": "[parameters('principalId')]"
}
}
]
}
Le proprietà resourceGroup e subscription sono consentite solo nelle distribuzioni annidate o collegate. Queste proprietà non sono consentite per le singole risorse. Usa i moduli annidati o collegati se vuoi distribuire una risorsa di estensione con l'ambito impostato su una risorsa in un gruppo di risorse diverso.
Passaggi successivi
- Per informazioni su come definire i parametri nel tuo modello, vedi Comprendere la struttura e la sintassi dei modelli di ARM.
- Per suggerimenti su come risolvere i comuni errori di distribuzione, vedere Risolvere errori comuni durante la distribuzione di risorse in Azure con Azure Resource Manager.
- Per informazioni sulla distribuzione di un modello che richiede un token di firma di accesso condiviso, vedi Distribuire un modello di ARM privato con un token di firma di accesso condiviso.