Klientdistributioner med ARM-mallar
När din organisation mognar kan du behöva definiera och tilldela principer eller rollbaserad åtkomstkontroll i Azure (Azure RBAC) i din Microsoft Entra-klientorganisation. Med mallar på klientnivå kan du deklarativt tillämpa principer och tilldela roller på global nivå.
Dricks
Vi rekommenderar Bicep eftersom det erbjuder samma funktioner som ARM-mallar och syntaxen är enklare att använda. Mer information finns i klientdistributioner.
Resurser som stöds
Alla resurstyper kan inte distribueras till klientorganisationsnivå. I det här avsnittet visas vilka resurstyper som stöds.
För rollbaserad åtkomstkontroll i Azure (Azure RBAC) använder du:
För kapslade mallar som distribueras till hanteringsgrupper, prenumerationer eller resursgrupper använder du:
Använd för att skapa hanteringsgrupper:
För att skapa prenumerationer använder du:
Använd för att hantera kostnader:
För att konfigurera portalen använder du:
Inbyggda principdefinitioner är resurser på klientnivå, men du kan inte distribuera anpassade principdefinitioner i klientorganisationen. Ett exempel på hur du tilldelar en inbyggd principdefinition till en resurs finns i exemplet tenantResourceId.
Schema
Schemat som du använder för klientdistributioner skiljer sig från schemat för resursgruppsdistributioner.
För mallar använder du:
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
...
}
Schemat för en parameterfil är detsamma för alla distributionsomfång. För parameterfiler använder du:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
...
}
Nödvändig åtkomst
Huvudkontot som distribuerar mallen måste ha behörighet att skapa resurser i klientomfånget. Huvudkontot måste ha behörighet att köra distributionsåtgärderna (Microsoft.Resources/deployments/*
) och att skapa de resurser som definierats i mallen. Om du till exempel vill skapa en hanteringsgrupp måste huvudkontot ha behörigheten Deltagare i klientomfånget. Om du vill skapa rolltilldelningar måste huvudnamnet ha ägarbehörighet.
Den globala administratören för Microsoft Entra-ID:t har inte automatiskt behörighet att tilldela roller. Om du vill aktivera malldistributioner i klientomfånget måste den globala administratören göra följande:
Öka kontoåtkomsten så att den globala administratören kan tilldela roller. Läs mer i Utöka åtkomst för att hantera alla Azure-prenumerationer och hanteringsgrupper.
Tilldela ägare eller deltagare till det huvudnamn som behöver distribuera mallarna.
New-AzRoleAssignment -SignInName "[userId]" -Scope "/" -RoleDefinitionName "Owner"
az role assignment create --assignee "[userId]" --scope "/" --role "Owner"
Huvudkontot har nu de behörigheter som krävs för att distribuera mallen.
Distributionskommandon
Kommandona för klientdistributioner skiljer sig från kommandona för resursgruppsdistributioner.
För Azure CLI använder du 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"
Mer detaljerad information om distributionskommandon och alternativ för distribution av ARM-mallar finns i:
- Distribuera resurser med ARM-mallar och Azure-portalen
- Distribuera resurser med ARM-mallar och Azure CLI
- Distribuera resurser med ARM-mallar och Azure PowerShell
- Distribuera resurser med ARM-mallar och Azure Resource Manager REST API
- Använd en distributionsknapp för att distribuera mallar från GitHub-lagringsplatsen
- Distribuera ARM-mallar från Cloud Shell
Distributionsplats och namn
För distributioner på klientnivå måste du ange en plats för distributionen. Distributionens plats är separat från platsen för de resurser som du distribuerar. Distributionsplatsen anger var distributionsdata ska lagras. Distributioner av prenumerationer och hanteringsgrupper kräver också en plats. För resursgruppsdistributioner används platsen för resursgruppen för att lagra distributionsdata.
Du kan ange ett namn för distributionen eller använda standarddistributionsnamnet. Standardnamnet är namnet på mallfilen. Om du till exempel distribuerar en mall med namnet azuredeploy.json skapas ett standarddistributionsnamn för azuredeploy.
För varje distributionsnamn är platsen oföränderlig. Du kan inte skapa en distribution på en plats när det finns en befintlig distribution med samma namn på en annan plats. Om du till exempel skapar en klientdistribution med namnet deployment1 i centralus kan du inte senare skapa en annan distribution med namnet deployment1 utan en plats i westus. Om du får felkoden InvalidDeploymentLocation
använder du antingen ett annat namn eller samma plats som den tidigare distributionen för det namnet.
Distributionsomfång
När du distribuerar till en klientorganisation kan du distribuera resurser till:
- klientorganisationen
- hanteringsgrupper i klientorganisationen
- prenumerationer
- resursgrupper
De enda förbjudna omfångsövergångarna sker från resursgrupp till hanteringsgrupp eller från prenumeration till hanteringsgrupp.
En tilläggsresurs kan begränsas till ett annat mål än distributionsmålet.
Användaren som distribuerar mallen måste ha åtkomst till det angivna omfånget.
Det här avsnittet visar hur du anger olika omfång. Du kan kombinera dessa olika omfång i en enda mall.
Omfång för klientorganisation
Resurser som definierats i resursavsnittet i mallen tillämpas på klientorganisationen.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
tenant-resources
],
"outputs": {}
}
Omfång för hanteringsgrupp
Om du vill rikta in dig på en hanteringsgrupp i klientorganisationen lägger du till en kapslad distribution och anger egenskapen scope
.
{
"$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": "2022-09-01",
"name": "nestedMG",
"scope": "[variables('mgId')]",
"location": "eastus",
"properties": {
"mode": "Incremental",
"template": {
management-group-resources
}
}
}
],
"outputs": {}
}
Omfång för prenumeration
Du kan också rikta prenumerationer i klientorganisationen. Användaren som distribuerar mallen måste ha åtkomst till det angivna omfånget.
Om du vill rikta in dig på en prenumeration i klientorganisationen använder du en kapslad distribution och egenskapen subscriptionId
.
{
"$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
}
]
}
}
}
]
}
Omfång för resursgrupp
Du kan också rikta in dig på resursgrupper i klientorganisationen. Användaren som distribuerar mallen måste ha åtkomst till det angivna omfånget.
Om du vill rikta in dig på en resursgrupp i klientorganisationen använder du en kapslad distribution. subscriptionId
Ange egenskaperna ochresourceGroup
. Ange ingen plats för den kapslade distributionen eftersom den distribueras på platsen för resursgruppen.
{
"$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
}
]
}
}
}
]
}
Skapa en hanteringsgrupp
Följande mall skapar en hanteringsgrupp.
{
"$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": {
}
}
]
}
Om ditt konto inte har behörighet att distribuera till klientorganisationen kan du fortfarande skapa hanteringsgrupper genom att distribuera till ett annat omfång. Mer information finns i Hanteringsgrupp.
Tilldela rollen
Följande mall tilldelar en roll i klientomfånget.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.5.6.12127",
"templateHash": "17107802581699825924"
}
},
"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"
}
}
},
"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')]"
}
}
]
}
Nästa steg
- Mer information om hur du tilldelar roller finns i Tilldela Azure-roller med hjälp av Azure Resource Manager-mallar.
- Du kan också distribuera mallar på prenumerationsnivå eller hanteringsgruppsnivå.