Klientdistributioner med Bicep-fil
När din organisation mognar kan du behöva definiera och tilldela principer eller rollbaserad åtkomstkontroll i Azure (Azure RBAC) i azure AD-klientorganisationen. Med mallar på klientorganisationsnivå kan du deklarativt tillämpa principer och tilldela roller på global nivå.
Microsoft Learn
Mer information om distributionsomfång och praktisk vägledning finns i Distribuera resurser till prenumerationer, hanteringsgrupper och klienter med hjälp av Bicep på Microsoft Learn.
Resurser som stöds
Alla resurstyper kan inte distribueras till klientorganisationsnivån. 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:
Om du vill skapa hanteringsgrupper använder du:
För att skapa prenumerationer använder du:
Använd följande för att hantera kostnader:
Om du vill konfigurera portalen använder du:
Inbyggda principdefinitioner är resurser på klientorganisationsnivå, men du kan inte distribuera anpassade principdefinitioner i klientorganisationen. Ett exempel på hur du tilldelar en inbyggd principdefinition till en resurs finns i tenantResourceId exempel.
Ange omfång
Om du vill ange omfånget till klient använder du:
targetScope = 'tenant'
Nödvändig åtkomst
Det huvudnamn som distribuerar mallen måste ha behörighet att skapa resurser i klientorganisationsomfånget. Huvudnamn måste ha behörighet att köra distributionsåtgärderna ( Microsoft.Resources/deployments/* ) och för att skapa de resurser som definierats i mallen. Om du till exempel vill skapa en hanteringsgrupp måste huvudnamn ha deltagarbehörighet för klientorganisationsomfånget. Om du vill skapa rolltilldelningar måste huvudägaren ha behörigheten Ägare.
Den globala administratören för Azure Active Directory har inte automatiskt behörighet att tilldela roller. Om du vill aktivera malldistributioner i klientorganisationsomfånget måste den globala administratören göra följande:
Utö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"
Huvudnamn 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-file main.bicep
Mer detaljerad information om distributionskommandon och alternativ för att distribuera ARM-mallar finns i:
- Distribuera resurser med ARM-mallar och Azure CLI
- Distribuera resurser med ARM-mallar och Azure PowerShell
- Distribuera ARM-mallar från Cloud Shell
Distributionsplats och namn
För distributioner på klientorganisationsnivå måste du ange en plats för distributionen. Platsen för distributionen är separat från platsen för de resurser som du distribuerar. Distributionsplatsen anger var distributionsdata ska lagras. Distributioner av prenumerationer och hanteringsgrupp kräver också en plats. För distributioner av resursgrupper används platsen för resursgruppen för att lagra distributionsdata.
Du kan ange ett namn för distributionen eller använda standardnamnet för distributionen. Standardnamnet är namnet på mallfilen. Om du till exempel distribuerar en fil med namnet main.bicep skapas standarddistributionsnamnet main.
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 för 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:
- klienten
- hanteringsgrupper i klientorganisationen
- Prenumerationer
- resursgrupper
En tilläggsresurs kan vara begränsad till ett mål som skiljer sig från distributionsmålet.
Den användare 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 till klientorganisation
Resurser som definierats i Bicep-filen tillämpas på klientorganisationen.
targetScope = 'tenant'
// create resource at tenant
resource mgName_resource 'Microsoft.Management/managementGroups@2020-02-01' = {
...
}
Omfång till hanteringsgrupp
Om du vill rikta in dig på en hanteringsgrupp i klientorganisationen lägger du till en modul. Använd funktionen managementGroup för att ange dess scope egenskap. Ange hanteringsgruppens namn.
targetScope = 'tenant'
param managementGroupName string
// create resources at management group level
module 'module.bicep' = {
name: 'deployToMG'
scope: managementGroup(managementGroupName)
}
Omfång till prenumeration
Om du vill rikta in dig på en prenumeration i klientorganisationen lägger du till en modul. Använd prenumerationsfunktionen för att ange dess scope egenskap. Ange prenumerations-ID:t.
targetScope = 'tenant'
param subscriptionID string
// create resources at subscription level
module 'module.bicep' = {
name: 'deployToSub'
scope: subscription(subscriptionID)
}
Omfång till resursgrupp
Om du vill rikta in dig på en resursgrupp i klientorganisationen lägger du till en modul. Använd funktionen resourceGroup för att ange dess scope egenskap. Ange prenumerations-ID och resursgruppsnamn.
targetScope = 'tenant'
param resourceGroupName string
param subscriptionID string
// create resources at resource group level
module 'module.bicep' = {
name: 'deployToRG'
scope: resourceGroup(subscriptionID, resourceGroupName)
}
Skapa en hanteringsgrupp
Följande mall skapar en hanteringsgrupp.
targetScope = 'tenant'
param mgName string = 'mg-${uniqueString(newGuid())}'
resource mgName_resource 'Microsoft.Management/managementGroups@2020-02-01' = {
name: 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 klientorganisationsomfånget.
targetScope = 'tenant'
@description('principalId if the user that will be given contributor access to the resourceGroup')
param principalId string
@description('roleDefinition for the assignment - default is owner')
param roleDefinitionId string = '8e3af657-a8ff-443c-a75c-2fe8c4bcb635'
var roleAssignmentName = guid(principalId, roleDefinitionId)
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2020-03-01-preview' = {
name: roleAssignmentName
properties: {
roleDefinitionId: tenantResourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId)
principalId: principalId
}
}
Nästa steg
Mer information om andra omfång finns i: