Övning – Distribuera resurser till en hanteringsgrupp
Projektet Teddybear var en framgång, och nu är den hemlighetsfulla R&D-utvecklingen på ditt leksaksföretag redo att undersöka ännu fler nya leksaker. Teamet har börjat be dig om nya prenumerationer nästan dagligen, och de måste tillämpa sina principer på alla.
I stället för att duplicera principdefinitioner och tilldelningar i varje prenumeration har du valt att placera alla teamets prenumerationer i en hanteringsgrupp. Du kan sedan tillämpa principen på hela hanteringsgruppen i stället för på varje prenumeration individuellt.
I den här övningen skapar du en ny Bicep-mall för att tillämpa principdefinitioner och tilldelningar på en hanteringsgrupp.
Under processen gör du följande:
- Skapa en ny hanteringsgrupp.
- Skapa en ny Bicep-fil med gruppomfattning för hantering.
- Lägg till Azure Policy-resurserna i filen.
- Länka principtilldelningen till principdefinitionen genom att manuellt konstruera resurs-ID:t.
- Distribuera mallen och verifiera resultatet.
Den här övningen kräver följande krav:
- Hanteringsgrupper måste vara aktiverade i din Azure-klientorganisation.
- Du behöver behörighet för att skapa en ny hanteringsgrupp i hierarkin.
- Du behöver behörigheter för att distribuera Azure Policy-resurser till hanteringsgruppen.
Om du inte kan uppfylla dessa krav med ditt aktuella Azure-konto kan du få en kostnadsfri utvärderingsversion och skapa en ny Azure-prenumeration och klientorganisation. Du kan också hoppa över distributionsstegen i den här övningen.
Skapa en hanteringsgrupp
I den här övningen skapar du en ny hanteringsgrupp så att du inte oavsiktligt påverkar några resurser i en annan del av Din Azure-miljö.
Kör följande Azure CLI-kommandon i Visual Studio Code-terminalen:
az account management-group create \
--name SecretRND \
--display-name "Secret R&D Projects"
Som standard skapas den nya hanteringsgruppen som en direkt underordnad till klientorganisationens rothanteringsgrupp. Om du behöver placera hanteringsgruppen på en specifik plats i din befintliga hanteringsgruppshierarki använder du parametern --parent-id
och anger namnet på hanteringsgruppen som ska användas som överordnad.
Kör följande Azure PowerShell-kommandon i Visual Studio Code-terminalen:
New-AzManagementGroup `
-GroupId 'SecretRND' `
-DisplayName 'Secret R&D Projects'
Som standard skapas den nya hanteringsgruppen som underordnad klientorganisationens rothanteringsgrupp. Om du behöver placera hanteringsgruppen på en specifik plats i din befintliga hanteringsgruppshierarki använder du parametern -ParentId
och anger namnet på hanteringsgruppen som ska användas som överordnad.
I en verklig distribution flyttar du R&D-teamets prenumerationer till hanteringsgruppen. I den här övningen distribuerar du principerna även om hanteringsgruppen inte innehåller några prenumerationer. Samma distributionsprocess gäller om hanteringsgruppen är tom eller innehåller prenumerationer.
Skapa en Bicep-fil för distribution till en hanteringsgrupp
Öppna Visual Studio Code.
Ta bort filen main.bicep och skapa sedan en ny tom fil med samma namn.
Spara den tomma filen.
Lägg till följande innehåll i filen.
targetScope = 'managementGroup'
Observera att den här kodraden meddelar Bicep att mallen kommer att distribueras i hanteringsgruppens omfång.
Lägga till en principdefinition
Precis som tidigare skapar du en principdefinition i Bicep-filen.
Lägg till följande variabeldefinition under raden som du nyss lade till:
var policyDefinitionName = 'DenyFandGSeriesVMs'
Lägg till följande Azure Policy-definition längst ned i filen:
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2024-05-01' = { name: policyDefinitionName properties: { policyType: 'Custom' mode: 'All' parameters: {} policyRule: { if: { allOf: [ { field: 'type' equals: 'Microsoft.Compute/virtualMachines' } { anyOf: [ { field: 'Microsoft.Compute/virtualMachines/sku.name' like: 'Standard_F*' } { field: 'Microsoft.Compute/virtualMachines/sku.name' like: 'Standard_G*' } ] } ] } then: { effect: 'deny' } } } }
Principdefinitionen är densamma som den som du använde tidigare för din prenumeration. Men den här gången distribuerar du den till en hanteringsgrupp.
Lägga till en principtilldelning
Nu ska du tillämpa principen på hanteringsgruppen. Det innebär att principen gäller för alla prenumerationer som är underordnade till den här hanteringsgruppen.
policyDefinitionName
Lägg till följande variabel under variabeldefinitionen:var policyAssignmentName = 'DenyFandGSeriesVMs'
Lägg till följande principtilldelning under principdefinitionsresursen längst ned i filen:
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2024-05-01' = { name: policyAssignmentName properties: { policyDefinitionId: policyDefinition.id } }
Spara ändringarna i filen.
Verifiera mallen
Mallen bör se ut så här:
targetScope = 'managementGroup'
var policyDefinitionName = 'DenyFandGSeriesVMs'
var policyAssignmentName = 'DenyFandGSeriesVMs'
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2024-05-01' = {
name: policyDefinitionName
properties: {
policyType: 'Custom'
mode: 'All'
parameters: {}
policyRule: {
if: {
allOf: [
{
field: 'type'
equals: 'Microsoft.Compute/virtualMachines'
}
{
anyOf: [
{
field: 'Microsoft.Compute/virtualMachines/sku.name'
like: 'Standard_F*'
}
{
field: 'Microsoft.Compute/virtualMachines/sku.name'
like: 'Standard_G*'
}
]
}
]
}
then: {
effect: 'deny'
}
}
}
}
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2024-05-01' = {
name: policyAssignmentName
properties: {
policyDefinitionId: policyDefinition.id
}
}
Om den inte gör det kopierar du antingen exemplet eller justerar mallen så att den matchar exemplet.
Distribuera mallen till Azure
Distribuera mallen i Visual Studio Code-terminalen med hjälp av följande Azure CLI-kommandon:
managementGroupId="SecretRND"
templateFile="main.bicep"
today=$(date +"%d-%b-%Y")
deploymentName="mg-scope-"$today
az deployment mg create \
--management-group-id $managementGroupId \
--name $deploymentName \
--location westus \
--template-file $templateFile
Distribuera mallen med Azure PowerShell-kommandon i terminalen.
$managementGroupId = 'SecretRND'
$templateFile = 'main.bicep'
$today = Get-Date -Format 'MM-dd-yyyy'
$deploymentName = "mg-scope-$today"
New-AzManagementGroupDeployment `
-ManagementGroupId $managementGroupId `
-Name $deploymentName `
-Location westus `
-TemplateFile $templateFile
Observera att precis som med prenumerationsdistributioner anger du uttryckligen ett namn och en plats för distributionsmetadata. Och du använder dagens datum för att minska risken för att använda ett befintligt distributionsnamn.
Distributionen kan ta en minut eller två att slutföra och sedan visas en lyckad distribution.
Verifiera distributionen
Precis som med distributioner med prenumerationsomfång kan du visa distributioner med gruppomfattning för hantering i Azure-portalen.
Gå till Azure-portalen.
Välj Alla tjänster i den vänstra rutan.
I rutan Sök anger du hanteringsgrupp och väljer sedan Hanteringsgrupper i resultatlistan.
Välj hanteringsgruppen Hemliga R&D-projekt.
I den vänstra rutan i sökrutan anger du Distributioner och väljer sedan Distributioner under Styrning.
Välj distributionen som börjar med mg-scope för att se vilka resurser som har distribuerats.
I fönstret Översikt för den valda distributionen väljer du Distributionsinformation för att expandera den. De två Azure Policy-resurserna visas.
Rensa resurserna
Du har distribuerat dina resurser med gruppomfattning för hantering. Du kan ta bort de principresurser och hanteringsgrupp som du har skapat.
az account management-group delete --name SecretRND
Remove-AzManagementGroup -GroupId SecretRND