Bereik instellen voor extensiebronnen in ARM-sjablonen
Een extensieresource is een resource die een andere resource wijzigt. U kunt bijvoorbeeld een rol toewijzen aan een resource. De roltoewijzing is een resourcetype voor de extensie.
Zie Resourcetypen die mogelijkheden van andere resources uitbreiden voor een volledige lijst met resourcetypen voor extensies.
In dit artikel wordt beschreven hoe u het bereik voor een extensieresourcetype in kunt stellen wanneer deze wordt geïmplementeerd met een Azure Resource Manager sjabloon (ARM-sjabloon). Het beschrijft de bereik-eigenschap die beschikbaar is voor extensieresources bij het toepassen op een resource.
Notitie
De eigenschap scope is alleen beschikbaar voor resourcetypen voor extensies. Als u een ander bereik wilt opgeven voor een resourcetype dat geen extensietype is, gebruikt u een geneste of gekoppelde implementatie. Zie implementaties van resourcegroep, abonnementsimplementaties, implementaties van beheergroepen tenantimplementatiesvoor meer informatie.
Toepassen op implementatiebereik
Als u een resourcetype voor de extensie wilt toepassen op het doelimplementatiebereik, voegt u de resource toe aan uw sjabloon, net als bij elk resourcetype. De beschikbare scopes zijn resourcegroep, abonnement, beheergroepen tenant. Het implementatiebereik moet het resourcetype ondersteunen.
Met de volgende sjabloon wordt een vergrendeling geïmplementeerd.
{
"$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."
}
}
]
}
Wanneer de resourcegroep wordt geïmplementeerd in een resourcegroep, wordt de resourcegroep vergrendeld.
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"
In het volgende voorbeeld wordt een rol toegewezen.
{
"$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",
"defaultValue": "[newGuid()]",
"metadata": {
"description": "A new GUID used to identify the role assignment"
}
}
},
"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": {}
}
Wanneer de rol wordt geïmplementeerd in een abonnement, wordt de rol toegewezen aan het abonnement.
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"
Toepassen op resource
Als u een extensieresource wilt toepassen op een resource, gebruikt u de scope eigenschap . Stel de eigenschap scope in op de naam van de resource waar u de extensie aan toevoegt. De eigenschap scope is een hoofd eigenschap voor het resourcetype van de extensie.
In het volgende voorbeeld wordt een opslagaccount gemaakt en wordt er een rol op toegepast.
{
"$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')]"
}
}
]
}
Volgende stappen
- Zie Inzicht in de structuur en syntaxis van ARM-sjablonen voor meer informatie over het definiëren van parameters in uw sjabloon.
- Zie Veelvoorkomende implementatiefouten in Azure oplossen met behulp van Azure Resource Manager voor tips over het oplossen van veelvoorkomende Azure Resource Manager.
- Zie Persoonlijke ARM-sjabloon implementeren met SAS-token voor meer informatie over het implementeren van een sjabloon die een SAS-token vereist.