Oefening: resources implementeren in een beheergroep

Voltooid

Project Teddybear was een succes en nu is de geheimzinnige R&D-ontwikkeling bij uw speelgoedbedrijf klaar om nog meer nieuw speelgoed te onderzoeken. Het team heeft u bijna dagelijks om nieuwe abonnementen gevraagd en moet het beleid toepassen op al deze abonnementen.

In plaats van de beleidsdefinities en toewijzingen in elk abonnement te dupliceren, hebt u besloten alle abonnementen van het team in een beheergroep te plaatsen. Vervolgens kunt u het beleid toepassen op de hele beheergroep in plaats van op elk abonnement afzonderlijk.

In deze oefening maakt u een nieuwe Bicep-sjabloon om beleidsdefinities en -toewijzingen toe te passen op een beheergroep.

Tijdens het proces gaat u het volgende doen:

  • Maak een nieuwe beheergroep.
  • Maak een nieuw Bicep-bestand binnen het bereik van een beheergroep.
  • Voeg de Azure Policy-resources toe aan het bestand.
  • Koppel de beleidstoewijzing aan de beleidsdefinitie door de resource-id handmatig samen te stellen.
  • Implementeer de sjabloon en controleer het resultaat.

Voor deze oefening zijn de volgende vereisten vereist:

  • Beheergroepen moeten zijn ingeschakeld in uw Azure-tenant.
  • U hebt machtigingen nodig voor het maken van een nieuwe beheergroep in uw hiërarchie.
  • U hebt machtigingen nodig voor het implementeren van Azure Policy-resources in de beheergroep.

Als u niet aan deze vereisten kunt voldoen met uw huidige Azure-account, kunt u een gratis proefversie krijgen en een nieuw Azure-abonnement en een nieuwe Azure-tenant maken. U kunt ook de implementatiestappen in deze oefening overslaan.

Een beheergroep maken

In deze oefening maakt u een nieuwe beheergroep, zodat u niet per ongeluk invloed hebt op resources in een ander deel van uw Azure-omgeving.

Voer in de Visual Studio Code-terminal de volgende Azure CLI-opdrachten uit:

az account management-group create \
  --name SecretRND \
  --display-name "Secret R&D Projects"

Standaard wordt de nieuwe beheergroep gemaakt als een direct onderliggend element van de hoofdbeheergroep van de tenant. Als u de beheergroep op een specifieke plaats in de bestaande hiërarchie van de beheergroep wilt plaatsen, gebruikt u de --parent-id parameter en geeft u de naam op van de beheergroep die u als bovenliggend item wilt gebruiken.

Voer in de Visual Studio Code-terminal de volgende Azure PowerShell-opdrachten uit:

New-AzManagementGroup `
  -GroupId 'SecretRND' `
  -DisplayName 'Secret R&D Projects'

De nieuwe beheergroep wordt standaard gemaakt als een onderliggend element van de hoofdbeheergroep van de tenant. Als u de beheergroep op een specifieke plaats in de bestaande hiërarchie van de beheergroep wilt plaatsen, gebruikt u de -ParentId parameter en geeft u de naam op van de beheergroep die u als bovenliggend item wilt gebruiken.

In een echte implementatie verplaatst u de abonnementen van het R&D-team naar de beheergroep. Voor deze oefening implementeert u het beleid, ook al bevat de beheergroep geen abonnementen. Hetzelfde implementatieproces is van toepassing of de beheergroep leeg is of abonnementen bevat.

Een Bicep-bestand maken om te implementeren in een beheergroep

  1. Open Visual Studio Code.

  2. Verwijder het bestand main.bicep en maak vervolgens een nieuw leeg bestand met dezelfde naam.

  3. Sla het lege bestand op.

  4. Voeg de volgende inhoud toe aan het bestand.

    targetScope = 'managementGroup'
    

    Houd er rekening mee dat deze regel code Bicep vertelt dat uw sjabloon wordt geïmplementeerd op het bereik van de beheergroep.

Een beleidsdefinitie toevoegen

Zoals u eerder hebt gedaan, maakt u een beleidsdefinitie in het Bicep-bestand.

  1. Voeg onder de regel die u zojuist hebt toegevoegd de volgende variabeledefinitie toe:

    var policyDefinitionName = 'DenyFandGSeriesVMs'
    
  2. Voeg onderaan het bestand de volgende Azure Policy-definitie toe:

    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'
          }
        }
      }
    }
    

    De beleidsdefinitie is hetzelfde als de definitie die u eerder hebt toegepast op uw abonnement. Deze keer implementeert u deze echter in een beheergroep.

Een beleidstoewijzing toevoegen

U past het beleid nu toe op de beheergroep. Dit betekent dat het beleid van toepassing is op alle abonnementen die onderliggende elementen van deze beheergroep zijn.

  1. Voeg onder de policyDefinitionName variabeledefinitie de volgende variabele toe:

    var policyAssignmentName = 'DenyFandGSeriesVMs'
    
  2. Voeg onder aan het bestand, onder de resource van de beleidsdefinitie, de volgende beleidstoewijzing toe:

    resource policyAssignment 'Microsoft.Authorization/policyAssignments@2020-03-01' = {
      name: policyAssignmentName
      properties: {
        policyDefinitionId: policyDefinition.id
      }
    }
    
  3. Sla de wijzigingen in het bestand op.

Uw sjabloon controleren

Uw sjabloon moet er als volgt uitzien:

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
  }
}

Als dit niet het geval is, kopieert u het voorbeeld of past u de sjabloon aan zodat deze overeenkomt met het voorbeeld.

De sjabloon implementeren in Azure

Implementeer de sjabloon in de Visual Studio Code-terminal met behulp van de volgende Azure CLI-opdrachten:

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

Implementeer de sjabloon met behulp van Azure PowerShell-opdrachten in de terminal.

$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

Zoals bij abonnementsimplementaties geeft u expliciet een naam en locatie op voor de metagegevens van de implementatie. En u gebruikt de datum van vandaag om de kans op het gebruik van de naam van een bestaande implementatie te verminderen.

Het kan een paar minuten duren voordat de implementatie is voltooid. Vervolgens ziet u een geslaagde implementatie.

De implementatie controleren

Net als bij implementaties met abonnementsbereik kunt u implementaties met beheergroepen bekijken in Azure Portal.

  1. Ga naar de Azure-portal.

  2. Selecteer Alle services in het linkerdeelvenster.

  3. Voer in het zoekvak beheergroep in en selecteer vervolgens Beheergroepen in de lijst met resultaten.

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

  4. Selecteer de beheergroep R&D-projecten voor geheim.

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

  5. Voer in het linkerdeelvenster in hetzoekvak Implementaties in en selecteer vervolgens Implementaties onder Governance.

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

  6. Selecteer de implementatie die begint met mg-scope om te zien welke resources zijn geïmplementeerd.

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

  7. Selecteer in het deelvenster Overzicht voor de geselecteerde implementatie de implementatiedetails om deze uit te vouwen. De twee Azure Policy-resources worden vermeld.

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

De resources opschonen

U hebt de resources binnen het beheergroepbereik geïmplementeerd. U kunt de beleidsbronnen en beheergroep verwijderen die u hebt gemaakt.

az account management-group delete --name SecretRND
Remove-AzManagementGroup -GroupId SecretRND