Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Saiba como usar a scope
propriedade com tipos de recurso de extensão em modelos do ARM (Azure Resource Manager). Os recursos de extensão permitem modificar ou adicionar recursos a outros recursos, como atribuir uma função ou aplicar um bloqueio.
Os recursos de extensão são uma maneira poderosa de gerenciar permissões, políticas e outras configurações em recursos do Azure. Para obter uma lista completa, consulte os tipos de recursos que estendem os recursos de outros recursos.
A scope
propriedade só está disponível para tipos de recursos de extensão. Para especificar um escopo diferente para um tipo de recurso que não seja um tipo de extensão, use uma implantação aninhada ou vinculada. Para obter mais informações, consulte:
- Implantações do grupo de recursos
- Implantações da assinatura
- Implantações do grupo de gerenciamento
- Implantações de locatário
Aplicar no escopo da implantação
Para aplicar um tipo de recurso de extensão no escopo de implantação de destino, você deve adicionar o recurso ao modelo, como faria com qualquer tipo de recurso. Os escopos disponíveis são:
- Grupo de recursos
- Subscrição
- Grupo de gerenciamento
- Inquilino
O modelo a seguir implanta um bloqueio.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Authorization/locks",
"apiVersion": "2020-05-01",
"name": "rgLock",
"properties": {
"level": "CanNotDelete",
"notes": "Resource Group should not be deleted."
}
}
]
}
Quando implantado em um grupo de recursos, ele bloqueia o grupo de recursos.
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"
O próximo exemplo atribui uma função.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.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",
"metadata": {
"description": "The role assignment name"
}
}
},
"variables": {
"roleDefinitionIds": {
"Owner": "[format('/subscriptions/{0}/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635', subscription().subscriptionId)]",
"Contributor": "[format('/subscriptions/{0}/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c', subscription().subscriptionId)]",
"Reader": "[format('/subscriptions/{0}/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7', subscription().subscriptionId)]"
}
},
"resources": [
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2022-04-01",
"name": "[parameters('roleNameGuid')]",
"properties": {
"roleDefinitionId": "[variables('roleDefinitionIds')[parameters('builtInRoleType')]]",
"principalId": "[parameters('principalId')]"
}
}
]
}
Quando implantado em uma assinatura, ele atribui a função à assinatura.
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"
Aplicar ao recurso
Para aplicar um recurso de extensão a um recurso, use a scope
propriedade. Defina a propriedade de escopo como o nome do recurso ao qual você está adicionando a extensão. A propriedade de escopo é uma propriedade raiz para o tipo de recurso de extensão.
O exemplo a seguir cria uma conta de armazenamento e aplica uma função a ela.
{
"$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]",
"metadata": {
"description": "The ___location for the resources"
}
}
},
"variables": {
"roleDefinitionIds": {
"Owner": "[format('/subscriptions/{0}/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635', subscription().subscriptionId)]",
"Contributor": "[format('/subscriptions/{0}/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c', subscription().subscriptionId)]",
"Reader": "[format('/subscriptions/{0}/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7', subscription().subscriptionId)]"
},
"storageName": "[format('storage{0}', uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-01-01",
"name": "[variables('storageName')]",
"___location": "[parameters('___location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
},
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2022-04-01",
"scope": "[format('Microsoft.Storage/storageAccounts/{0}', variables('storageName'))]",
"name": "[parameters('roleNameGuid')]",
"properties": {
"roleDefinitionId": "[variables('roleDefinitionIds')[parameters('builtInRoleType')]]",
"principalId": "[parameters('principalId')]"
},
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]"
]
}
]
}
As propriedades resourceGroup e subscription só são permitidas em implantações aninhadas ou vinculadas. Essas propriedades não são permitidas nos recursos individuais. Use implantações aninhadas ou vinculadas se quiser implantar um recurso de extensão com o escopo definido para um recurso em um grupo de recursos diferente.
Próximas etapas
- Para entender como definir parâmetros em seu modelo, consulte Understand the structure and syntax of ARM templates.
- Para obter dicas sobre como resolver erros comuns de implantação, consulte Solucionar problemas comuns de erros de implantação do Azure com o Azure Resource Manager.
- Para obter informações sobre como implantar um modelo que requer um token SAS, consulte Implantar modelo do ARM privado com token SAS.