Tenantimplementaties met ARM-sjablonen
Naarmate uw organisatie zich verder ontwikkelen, moet u mogelijk beleidsregels of op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) definiëren en toewijzen in uw Azure AD-tenant. Met sjablonen op tenantniveau kunt u beleidsregels declaratief toepassen en rollen toewijzen op globaal niveau.
Ondersteunde resources
Niet alle resourcetypen kunnen worden geïmplementeerd op tenantniveau. In deze sectie wordt vermeld welke resourcetypen worden ondersteund.
Gebruik voor op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) het volgende:
Voor geneste sjablonen die worden geïmplementeerd in beheergroepen, abonnementen of resourcegroepen, gebruikt u:
Voor het maken van beheergroepen gebruikt u:
Voor het maken van abonnementen gebruikt u:
Voor het beheren van kosten gebruikt u:
Voor het configureren van de portal gebruikt u:
Ingebouwde beleidsdefinities zijn resources op tenantniveau, maar u kunt geen aangepaste beleidsdefinities implementeren in de tenant. Zie tenantResourceId-voorbeeldvoor een voorbeeld van het toewijzen van een ingebouwde beleidsdefinitie aan een resource.
Schema
Het schema dat u gebruikt voor tenantimplementaties is anders dan het schema voor resourcegroepimplementaties.
Gebruik voor sjablonen:
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
...
}
Het schema voor een parameterbestand is hetzelfde voor alle implementatiebereiken. Gebruik voor parameterbestanden:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
...
}
Vereiste toegang
De principal die de sjabloon implementeert, moet machtigingen hebben om resources te maken in het tenantbereik. De principal moet machtigingen hebben om de implementatieacties ( ) uit te voeren en om de Microsoft.Resources/deployments/* resources te maken die in de sjabloon zijn gedefinieerd. Als u bijvoorbeeld een beheergroep wilt maken, moet de principal de machtiging Inzender hebben voor het tenantbereik. Als u roltoewijzingen wilt maken, moet de principal de machtiging Eigenaar hebben.
De globale beheerder voor de Azure Active Directory is niet automatisch machtigingen om rollen toe te wijzen. Als u sjabloonimplementaties in het tenantbereik wilt inschakelen, moet de globale beheerder de volgende stappen uitvoeren:
Verhoog accounttoegang zodat de globale beheerder rollen kan toewijzen. Zie voor meer informatie Toegang verhogen om alle Azure-abonnementen en beheergroepen te beheren.
Wijs Eigenaar of Inzender toe aan de principal die de sjablonen moet implementeren.
New-AzRoleAssignment -SignInName "[userId]" -Scope "/" -RoleDefinitionName "Owner"az role assignment create --assignee "[userId]" --scope "/" --role "Owner"
De principal beschikt nu over de vereiste machtigingen om de sjabloon te implementeren.
Implementatieopdrachten
De opdrachten voor tenantimplementaties zijn anders dan de opdrachten voor resourcegroepimplementaties.
Gebruik voor Azure CLI az deployment tenant create:
az deployment tenant create \
--name demoTenantDeployment \
--location WestUS \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/tenant-deployments/new-mg/azuredeploy.json"
Zie voor meer informatie over implementatieopdrachten en -opties voor het implementeren van ARM-sjablonen:
- Resources implementeren met ARM-sjablonen en Azure Portal
- Resources implementeren met ARM-sjablonen en Azure CLI
- Resources implementeren met ARM-sjablonen en Azure PowerShell
- Resources implementeren met ARM-sjablonen en Azure Resource Manager REST API
- Een implementatieknop gebruiken om sjablonen te implementeren vanuit GitHub opslagplaats
- ARM-sjablonen implementeren vanuit Cloud Shell
Implementatielocatie en -naam
Voor implementaties op tenantniveau moet u een locatie voor de implementatie verstrekken. De locatie van de implementatie is gescheiden van de locatie van de resources die u implementeert. De implementatielocatie geeft aan waar implementatiegegevens moeten worden opgeslagen. Voor implementaties van abonnementen en beheergroepen is ook een locatie vereist. Voor resourcegroepimplementaties wordt de locatie van de resourcegroep gebruikt om de implementatiegegevens op te slaan.
U kunt een naam voor de implementatie of de standaard implementatienaam gebruiken. De standaardnaam is de naam van het sjabloonbestand. Als u bijvoorbeeld een sjabloon met de naam azuredeploy.json implementeert, wordt de standaard implementatienaam azuredeploy gemaakt.
Voor elke implementatienaam is de locatie onveranderbaar. U kunt geen implementatie op één locatie maken wanneer er een bestaande implementatie met dezelfde naam op een andere locatie is. Als u bijvoorbeeld een tenantimplementatie met de naam deployment1 in centralus maakt, kunt u later geen andere implementatie maken met de naam deployment1, maar met de locatie westus. Als u de foutcode krijgt, gebruikt u een andere naam of dezelfde locatie InvalidDeploymentLocation als de vorige implementatie voor die naam.
Implementatiebereiken
Wanneer u implementeert in een tenant, kunt u resources implementeren voor:
- de tenant
- beheergroepen binnen de tenant
- Abonnementen
- Resourcegroepen
Een extensieresource kan worden gericht op een doel dat verschilt van het implementatiedoel.
De gebruiker die de sjabloon implementeert, moet toegang hebben tot het opgegeven bereik.
In deze sectie ziet u hoe u verschillende scopes opgeeft. U kunt deze verschillende scopes combineren in één sjabloon.
Bereik naar tenant
Resources die zijn gedefinieerd in de sectie resources van de sjabloon worden toegepast op de tenant.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
tenant-resources
],
"outputs": {}
}
Bereik tot beheergroep
Als u zich wilt richten op een beheergroep binnen de tenant, voegt u een geneste implementatie toe en geeft u de eigenschap scope op.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"mgName": {
"type": "string"
}
},
"variables": {
"mgId": "[concat('Microsoft.Management/managementGroups/', parameters('mgName'))]"
},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedMG",
"scope": "[variables('mgId')]",
"location": "eastus",
"properties": {
"mode": "Incremental",
"template": {
management-group-resources
}
}
}
],
"outputs": {}
}
Bereik tot abonnement
U kunt zich ook richten op abonnementen binnen de tenant. De gebruiker die de sjabloon implementeert, moet toegang hebben tot het opgegeven bereik.
Als u zich wilt richten op een abonnement binnen de tenant, gebruikt u een geneste implementatie en de subscriptionId eigenschap .
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedSub",
"location": "westus2",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
subscription-resources
}
]
}
}
}
]
}
Bereik naar resourcegroep
U kunt zich ook richten op resourcegroepen binnen de tenant. De gebruiker die de sjabloon implementeert, moet toegang hebben tot het opgegeven bereik.
Als u zich wilt richten op een resourcegroep binnen de tenant, gebruikt u een geneste implementatie. Stel de eigenschappen subscriptionId en resourceGroup in. Stel geen locatie in voor de geneste implementatie omdat deze is geïmplementeerd op de locatie van de resourcegroep.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedRGDeploy",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"resourceGroup": "demoResourceGroup",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
resource-group-resources
}
]
}
}
}
]
}
Beheergroep maken
Met de volgende sjabloon maakt u een beheergroep.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"mgName": {
"type": "string",
"defaultValue": "[concat('mg-', uniqueString(newGuid()))]"
}
},
"resources": [
{
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2020-02-01",
"name": "[parameters('mgName')]",
"properties": {
}
}
]
}
Als uw account geen machtiging heeft om te implementeren in de tenant, kunt u nog steeds beheergroepen maken door te implementeren in een ander bereik. Zie Beheergroep voor meer informatie.
Rol toewijzen
Met de volgende sjabloon wordt een rol toegewezen in het tenantbereik.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.4.1008.15138",
"templateHash": "11836852523469035276"
}
},
"parameters": {
"principalId": {
"type": "string",
"metadata": {
"description": "principalId if the user that will be given contributor access to the tenant"
}
},
"roleDefinitionId": {
"type": "string",
"defaultValue": "8e3af657-a8ff-443c-a75c-2fe8c4bcb635",
"metadata": {
"description": "roleDefinition for the assignment - default is owner"
}
}
},
"functions": [],
"variables": {
"roleAssignmentName": "[guid('/', parameters('principalId'), parameters('roleDefinitionId'))]"
},
"resources": [
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2020-03-01-preview",
"name": "[variables('roleAssignmentName')]",
"properties": {
"roleDefinitionId": "[tenantResourceId('Microsoft.Authorization/roleDefinitions', parameters('roleDefinitionId'))]",
"principalId": "[parameters('principalId')]"
}
}
]
}
Volgende stappen
- Zie Azure-rollen toewijzen met behulp van Azure Resource Manager sjablonen voor meer informatie over het toewijzen van rollen.
- U kunt ook sjablonen implementeren op abonnementsniveau of beheergroepsniveau.