Übung: Bereitstellen von Ressourcen in einer Verwaltungsgruppe
Project Teddybear war ein Erfolg, und nun ist die geheime R&D-Entwicklung in Ihrem Spielzeugunternehmen bereit, noch mehr neue Spielzeuge zu recherchieren. Das Team hat damit begonnen, Sie nahezu täglich nach neuen Abonnements zu fragen, und es muss seine Richtlinien auf sie alle anwenden.
Anstatt die Richtliniendefinitionen und -zuweisungen in jedem Abonnement zu duplizieren, haben Sie sich entschieden, alle Abonnements des Teams in einer Verwaltungsgruppe zu platzieren. Sie können die Richtlinie dann auf die gesamte Verwaltungsgruppe anwenden und müssen nicht jedes Abonnement einzeln berücksichtigen.
In dieser Übung erstellen Sie eine neue Bicep-Vorlage, um Richtliniendefinitionen und -zuweisungen auf eine Verwaltungsgruppe anzuwenden.
In dem Prozess gehen Sie wie folgt vor:
- Erstellen Sie eine neue Verwaltungsgruppe.
- Erstellen Sie eine neue Bicep-Datei im Verwaltungsgruppenbereich.
- Fügen Sie der Datei Azure Policy-Ressourcen hinzu.
- Verknüpfen Sie die Richtlinienzuweisung mit der Richtliniendefinition, indem Sie die Ressourcen-ID manuell erstellen.
- Stellen Sie die Vorlage bereit, und überprüfen Sie das Ergebnis.
Für diese Übung gelten folgende Voraussetzungen:
- Verwaltungsgruppen müssen in Ihrem Azure-Mandanten aktiviert sein.
- Sie benötigen Berechtigungen zum Erstellen einer neuen Verwaltungsgruppe innerhalb Ihrer Hierarchie.
- Sie benötigen Berechtigungen zum Bereitstellen von Azure Policy-Ressourcen in der Verwaltungsgruppe.
Wenn Sie diese Anforderungen mit Ihrem aktuellen Azure-Konto nicht erfüllen können, können Sie eine kostenlose Testversion erhalten und ein neues Azure-Abonnement und einen neuen Mandanten erstellen. Alternativ können Sie die Bereitstellungsschritte in dieser Übung überspringen.
Erstellen einer Verwaltungsgruppe
In dieser Übung erstellen Sie eine neue Verwaltungsgruppe, damit Sie nicht versehentlich Ressourcen in einem anderen Teil Ihrer Azure-Umgebung beeinträchtigen.
Führen Sie im Visual Studio Code-Terminal die folgenden Azure CLI-Befehle aus:
az account management-group create \
--name SecretRND \
--display-name "Secret R&D Projects"
Standardmäßig wird die neue Verwaltungsgruppe als direktes untergeordnetes Element der Stammverwaltungsgruppe des Mandanten erstellt. Wenn Sie die Verwaltungsgruppe an einer bestimmten Stelle in Ihrer vorhandenen Verwaltungsgruppenhierarchie platzieren müssen, verwenden Sie den --parent-id
-Parameter, und geben Sie den Namen der Verwaltungsgruppe an, die als übergeordnetes Element verwendet werden soll.
Führen Sie im Visual Studio Code-Terminal die folgenden Azure PowerShell-Befehle aus:
New-AzManagementGroup `
-GroupId 'SecretRND' `
-DisplayName 'Secret R&D Projects'
Standardmäßig wird die neue Verwaltungsgruppe als untergeordnetes Element der Stammverwaltungsgruppe des Mandanten erstellt. Wenn Sie die Verwaltungsgruppe an einer bestimmten Stelle in Ihrer vorhandenen Verwaltungsgruppenhierarchie platzieren müssen, verwenden Sie den -ParentId
-Parameter, und geben Sie den Namen der Verwaltungsgruppe an, die als übergeordnetes Element verwendet werden soll.
In einer echten Bereitstellung würden Sie die Abonnements des F&E-Teams in die Verwaltungsgruppe verschieben. In dieser Übung stellen Sie die Richtlinien bereit, obwohl die Verwaltungsgruppe keine Abonnements enthält. Der gleiche Bereitstellungsprozess gilt unabhängig davon, ob die Verwaltungsgruppe leer ist oder Abonnements enthält.
Erstellen einer Bicep-Datei für die Bereitstellung in einer Verwaltungsgruppe
Öffnen Sie Visual Studio Code.
Löschen Sie die Datei main.bicep, und erstellen Sie dann eine neue leere Datei mit dem gleichen Namen.
Speichern Sie die leere Datei.
Fügen Sie der Datei folgenden Inhalt hinzu.
targetScope = 'managementGroup'
Beachten Sie, dass diese Codezeile Bicep darüber informiert, dass Ihre Vorlage im Verwaltungsgruppenbereich bereitgestellt wird.
Hinzufügen einer Richtliniendefinition
Erstellen Sie wie zuvor eine Richtliniendefinition in der Bicep-Datei.
Fügen Sie unter der soeben hinzugefügten Zeile die folgende Variablendefinition hinzu:
var policyDefinitionName = 'DenyFandGSeriesVMs'
Fügen Sie am Ende der Datei die folgende Azure Policy-Definition hinzu:
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' } } } }
Die Richtliniendefinition ist identisch mit der Definition, die Sie zuvor auf Ihr Abonnement angewendet haben. Dieses Mal stellen Sie sie jedoch in einer Verwaltungsgruppe bereit.
Hinzufügen einer Richtlinienzuweisung
Sie wenden die Richtlinie jetzt auf die Verwaltungsgruppe an. Dies bedeutet, dass die Richtlinie für alle Abonnements gilt, die untergeordnete Elemente dieser Verwaltungsgruppe sind.
Fügen Sie unter der
policyDefinitionName
-Variablendefinitionen die folgende Variable hinzu:var policyAssignmentName = 'DenyFandGSeriesVMs'
Fügen Sie am Ende der Datei unter der Richtliniendefinitionsressource die folgende Richtlinienzuweisung hinzu:
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2024-05-01' = { name: policyAssignmentName properties: { policyDefinitionId: policyDefinition.id } }
Speichern Sie die Änderungen in der Datei.
Überprüfen der Vorlage
Die Vorlage sollte folgendermaßen aussehen:
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
}
}
Andernfalls kopieren Sie entweder das Beispiel, oder passen Sie Ihre Vorlage an das Beispiel an.
Bereitstellen der Vorlage in Azure
Stellen Sie die Vorlage im Visual Studio Code-Terminal mithilfe der folgenden Azure CLI-Befehle bereit:
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
Stellen Sie die Vorlage mithilfe von Azure PowerShell-Befehle im Terminal bereit.
$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
Beachten Sie, dass Sie wie bei Abonnementbereitstellungen explizit einen Namen und Standort für die Bereitstellungsmetadaten angeben. Und Sie verwenden das heutige Datum, um die Wahrscheinlichkeit zu verringern, dass der Name einer vorhandenen Bereitstellung verwendet wird.
Das Fertigstellen der Bereitstellung kann einige Minuten dauern. Anschließend wird eine erfolgreiche Bereitstellung angezeigt.
Überprüfen der Bereitstellung
Wie bei Bereitstellungen im Abonnementbereich können Sie Bereitstellungen im Bereich der Verwaltungsgruppe im Azure-Portal anzeigen.
Öffnen Sie das Azure-Portal.
Wählen Sie im linken Bereich Alle Dienste aus.
Geben Sie im Suchfeld Verwaltungsgruppe ein, und wählen Sie dann in der Ergebnisliste Verwaltungsgruppen aus.
Wählen Sie die Verwaltungsgruppe Geheime F&E-Projekte aus.
Geben Sie im linken Bereich im Suchfeld Bereitstellungen ein, und wählen Sie dann die Option Bereitstellungen unter Governance aus.
Wählen Sie die Bereitstellung aus, die mit mg-scope beginnt, um zu sehen, welche Ressourcen bereitgestellt wurden.
Wählen Sie im Bereich Übersicht für die ausgewählte Bereitstellung Bereitstellungsdetails aus, um diese zu erweitern. Die beiden Azure Policy-Ressourcen werden aufgeführt.
Bereinigen der Ressourcen
Sie haben Ihre Ressourcen im Bereich der Verwaltungsgruppe erfolgreich bereitgestellt. Sie können die Richtlinienressourcen und die Verwaltungsgruppe entfernen, die Sie erstellt haben.
az account management-group delete --name SecretRND
Remove-AzManagementGroup -GroupId SecretRND