Övning – Distribuera resurser till en hanteringsgrupp

Slutförd

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

  1. Öppna Visual Studio Code.

  2. Ta bort filen main.bicep och skapa sedan en ny tom fil med samma namn.

  3. Spara den tomma filen.

  4. 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.

  1. Lägg till följande variabeldefinition under raden som du nyss lade till:

    var policyDefinitionName = 'DenyFandGSeriesVMs'
    
  2. Lägg till följande Azure Policy-definition längst ned i filen:

    resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2020-03-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.

  1. policyDefinitionName Lägg till följande variabel under variabeldefinitionen:

    var policyAssignmentName = 'DenyFandGSeriesVMs'
    
  2. Lägg till följande principtilldelning under principdefinitionsresursen längst ned i filen:

    resource policyAssignment 'Microsoft.Authorization/policyAssignments@2020-03-01' = {
      name: policyAssignmentName
      properties: {
        policyDefinitionId: policyDefinition.id
      }
    }
    
  3. 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@2020-03-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@2020-03-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.

  1. Gå till Azure-portalen.

  2. Välj Alla tjänster i den vänstra rutan.

  3. I rutan Sök anger du hanteringsgrupp och väljer sedan Hanteringsgrupper i resultatlistan.

    Screenshot of the Azure portal interface showing the service list with 'Management groups' highlighted.

  4. Välj hanteringsgruppen Hemliga R&D-projekt.

    Screenshot of the Azure portal interface, highlighting 'Secret R&D Projects' in the list of management groups.

  5. I den vänstra rutan i sökrutan anger du Distributioner och väljer sedan Distributioner under Styrning.

    Screenshot of the Azure portal interface, showing the management group details.

  6. Välj distributionen som börjar med mg-scope för att se vilka resurser som har distribuerats.

    Screenshot of the Azure portal Deployments pane, highlighting the 'mg-scope-*' deployment in the list of deployments.

  7. I fönstret Översikt för den valda distributionen väljer du Distributionsinformation för att expandera den. De två Azure Policy-resurserna visas.

    Screenshot of the Azure portal 'Overview' pane for the selected deployment.

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