Ćwiczenie — rozmieszczenie zasobów w grupie zarządczej
Projekt Teddybear był sukcesem, a teraz skryty rozwój R&D w twojej firmie produkującej zabawki jest gotowy do badań jeszcze nowszych zabawek. Zespół zaczął cię prosić o nowe subskrypcje niemal każdego dnia i musi zastosować swoje zasady we wszystkich z nich.
Zamiast duplikować definicje zasad i przypisania w każdej subskrypcji, zdecydowałeś 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ę. 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 Azure CLI:
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 głównego dzierżawcy. 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 do użycia 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 do użycia jako element nadrzędny.
W rzeczywistym wdrożeniu przenieść subskrypcje zespołu języka R&D 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.
Utwórz plik Bicep w celu wdrożenia do grupy zarządzania
Otwórz program Visual Studio Code.
Usuń plik main.bicep, a następnie utwórz nowy pusty plik o tej samej nazwie.
Zapisz pusty plik.
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.
Poniżej dodanego wiersza dodaj następującą definicję zmiennej:
var policyDefinitionName = 'DenyFandGSeriesVMs'
W dolnej części pliku dodaj następującą definicję usługi Azure Policy:
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' } } } }
Definicja polityki jest taka sama jak ta, którą wcześniej zastosowałeś do swojej subskrypcji. Tym razem jednak wdrażasz go w grupie zarządzania.
Dodawanie przypisania zasad
Teraz zastosujesz zasady do grupy zarządzania. Oznacza to, że polityka będzie stosowana do wszystkich subskrypcji będących elementami podrzędnymi tej grupy zarządzania.
Poniżej definicji zmiennej
policyDefinitionName
dodaj następującą zmienną:var policyAssignmentName = 'DenyFandGSeriesVMs'
W dolnej części pliku w obszarze zasobu definicji zasad dodaj następujące przypisanie zasad:
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2024-05-01' = { name: policyAssignmentName properties: { policyDefinitionId: policyDefinition.id } }
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@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
}
}
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 przy użyciu 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.
Przejdź do portalu Azure.
W okienku po lewej stronie wybierz pozycję Wszystkie usługi.
W polu wyszukiwania wprowadź grupa zarządzania, a następnie wybierz grupy zarządzania na liście wyników.
Wybierz grupę zarządzania Secret R&D Projects.
W lewym okienku, w polu wyszukiwania , wprowadź Wdrożenia, a następnie wybierz pozycję Wdrożenia w sekcji Governance.
Wybierz wdrożenie rozpoczynające się od mg-scope, aby zobaczyć, jakie zasoby zostały wdrożone.
W oknie Przegląd dla wybranego wdrożenia wybierz szczegóły wdrożenia, aby je rozwinąć. Zostaną wyświetlone dwa zasoby usługi Azure Policy.
Czyszczenie zasobów
Pomyślnie wdrożono zasoby z przypisanym zakresem grupy zarządzania. Możesz usunąć zasoby zasad i grupę zarządzania, które utworzyłeś/utworzyłaś.
az account management-group delete --name SecretRND
Remove-AzManagementGroup -GroupId SecretRND