Ćwiczenie — wdrażanie zasobów w grupie zarządzania

Ukończone

Projekt Teddybear był sukcesem, a teraz skryty rozwój badań i rozwoju w twojej firmie zabawki jest gotowy do badań jeszcze bardziej nowych zabawek. Zespół zaczął prosić o nowe subskrypcje niemal codziennie i musi zastosować swoje zasady we wszystkich z nich.

Zamiast duplikować definicje zasad i przypisania w każdej subskrypcji, zdecydowano się umieścić wszystkie subskrypcje zespołu w grupie zarządzania. Następnie można zastosować zasady do całej grupy zarządzania zamiast do każdej subskrypcji osobno.

W tym ćwiczeniu utworzysz nowy szablon Bicep, aby zastosować definicje zasad i przypisania do grupy zarządzania.

Podczas tego procesu wykonasz następujące czynności:

  • Utwórz nową grupę zarządzania.
  • Utwórz nowy plik Bicep o zakresie grupy zarządzania.
  • Dodaj zasoby usługi Azure Policy do pliku.
  • Połącz przypisanie zasad z definicją zasad, ręcznie tworząc identyfikator zasobu.
  • Wdróż szablon i sprawdź wynik.

To ćwiczenie wymaga następujących wymagań wstępnych:

  • Grupy zarządzania muszą być włączone w dzierżawie platformy Azure.
  • Potrzebujesz uprawnień do tworzenia nowej grupy zarządzania w hierarchii.
  • Potrzebujesz uprawnień do wdrażania zasobów usługi Azure Policy w grupie zarządzania.

Jeśli nie możesz spełnić tych wymagań przy użyciu bieżącego konta platformy Azure, możesz uzyskać bezpłatną wersję próbną i utworzyć nową subskrypcję i dzierżawę platformy Azure. Możesz też pominąć kroki wdrażania w tym ćwiczeniu.

Tworzenie grupy zarządzania

W tym ćwiczeniu utworzysz nową grupę zarządzania, aby nie mieć przypadkowego wpływu na jakiekolwiek zasoby w innej części środowiska platformy Azure.

W terminalu programu Visual Studio Code uruchom następujące polecenia interfejsu wiersza polecenia platformy Azure:

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

Domyślnie nowa grupa zarządzania jest tworzona jako bezpośredni element podrzędny głównej grupy zarządzania dzierżawy. Jeśli musisz umieścić grupę zarządzania w określonym miejscu w istniejącej hierarchii grup zarządzania, użyj parametru --parent-id i określ nazwę grupy zarządzania, która ma być używana jako element nadrzędny.

W terminalu programu Visual Studio Code uruchom następujące polecenia programu Azure PowerShell:

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

Domyślnie nowa grupa zarządzania jest tworzona jako element podrzędny głównej grupy zarządzania dzierżawy. Jeśli musisz umieścić grupę zarządzania w określonym miejscu w istniejącej hierarchii grup zarządzania, użyj parametru -ParentId i określ nazwę grupy zarządzania, która ma być używana jako element nadrzędny.

W rzeczywistym wdrożeniu należy przenieść subskrypcje zespołu ds. analizy i odzyskiwania do grupy zarządzania. W tym ćwiczeniu wdrożysz zasady, mimo że grupa zarządzania nie zawiera żadnych subskrypcji. Ten sam proces wdrażania ma zastosowanie, czy grupa zarządzania jest pusta, czy zawiera subskrypcje.

Tworzenie pliku Bicep w celu wdrożenia w grupie zarządzania

  1. Otwórz Visual Studio Code.

  2. Usuń plik main.bicep, a następnie utwórz nowy pusty plik o tej samej nazwie.

  3. Zapisz pusty plik.

  4. Dodaj następującą zawartość do pliku.

    targetScope = 'managementGroup'
    

    Należy pamiętać, że ten wiersz kodu informuje Bicep, że szablon zostanie wdrożony w zakresie grupy zarządzania.

Dodawanie definicji zasad

Tak jak wcześniej, utwórz definicję zasad w pliku Bicep.

  1. Poniżej dodanego wiersza dodaj następującą definicję zmiennej:

    var policyDefinitionName = 'DenyFandGSeriesVMs'
    
  2. W dolnej części pliku dodaj następującą definicję usługi Azure Policy:

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

    Definicja zasad jest taka sama jak wcześniej zastosowana do subskrypcji. Tym razem jednak wdrażasz go w grupie zarządzania.

Dodawanie przypisania zasad

Teraz zastosujesz zasady do grupy zarządzania. Oznacza to, że zasady będą stosowane do wszystkich subskrypcji będących elementami podrzędnymi tej grupy zarządzania.

  1. Poniżej definicji zmiennej policyDefinitionName dodaj następującą zmienną:

    var policyAssignmentName = 'DenyFandGSeriesVMs'
    
  2. W dolnej części pliku w obszarze zasobu definicji zasad dodaj następujące przypisanie zasad:

    resource policyAssignment 'Microsoft.Authorization/policyAssignments@2020-03-01' = {
      name: policyAssignmentName
      properties: {
        policyDefinitionId: policyDefinition.id
      }
    }
    
  3. Zapisz zmiany w pliku.

Weryfikowanie szablonu

Szablon powinien wyglądać następująco:

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

Jeśli tak nie jest, skopiuj przykład lub dostosuj szablon tak, aby był zgodny z przykładem.

Wdrażanie szablonu na platformie Azure

W terminalu programu Visual Studio Code wdróż szablon przy użyciu następujących poleceń interfejsu wiersza polecenia platformy Azure:

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

Wdróż szablon za pomocą poleceń programu Azure PowerShell w terminalu.

$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

Zwróć uwagę, że podobnie jak w przypadku wdrożeń subskrypcji jawnie określasz nazwę i lokalizację metadanych wdrożenia. Używasz dzisiejszej daty, aby zmniejszyć prawdopodobieństwo użycia nazwy istniejącego wdrożenia.

Wdrożenie może potrwać minutę lub dwie, a następnie zobaczysz pomyślne wdrożenie.

Weryfikowanie wdrożenia

Podobnie jak w przypadku wdrożeń w zakresie subskrypcji, można wyświetlić wdrożenia w zakresie grupy zarządzania w witrynie Azure Portal.

  1. Przejdź do portalu Azure Portal.

  2. W okienku po lewej stronie wybierz pozycję Wszystkie usługi.

  3. W polu Wyszukaj wprowadź grupę zarządzania, a następnie wybierz pozycję Grupy zarządzania na liście wyników.

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

  4. Wybierz grupę zarządzania Wpisów tajnych projektów R&D.

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

  5. W okienku po lewej stronie w polu Wyszukaj wprowadź ciąg Wdrożenia, a następnie wybierz pozycję Wdrożenia w obszarze Ład.

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

  6. Wybierz wdrożenie rozpoczynające się od zakresu mg, aby zobaczyć, jakie zasoby zostały wdrożone.

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

  7. W okienku Przegląd wybranego wdrożenia wybierz pozycję Szczegóły wdrożenia, aby je rozwinąć. Zostaną wyświetlone dwa zasoby usługi Azure Policy.

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

Oczyszczanie zasobów

Pomyślnie wdrożono zasoby o zakresie grupy zarządzania. Możesz usunąć utworzone zasoby zasad i grupę zarządzania.

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