Schnellstart: Erstellen einer Richtlinienzuweisung zum Identifizieren von nicht konformen Ressourcen mit einer Bicep-Datei
In diesem Schnellstart verwenden Sie eine Bicep-Datei, um eine Richtlinienzuweisung zu erstellen, mit der Sie die Konformität einer Ressource mit einer Azure-Richtlinie überprüfen. Die Richtlinie wird einer Ressourcengruppe zugewiesen und überwacht VMs, die keine verwalteten Datenträger verwenden. Nachdem Sie die Richtlinienzuweisung erstellt haben, identifizieren Sie VMs, die nicht konform sind.
Bicep ist eine domänenspezifische Sprache (Domain-Specific Language, DSL), die eine deklarative Syntax zur Bereitstellung von Azure-Ressourcen verwendet. Sie bietet eine präzise Syntax, zuverlässige Typsicherheit und Unterstützung für die Wiederverwendung von Code. Bicep bietet die beste Form der Erstellung für Ihre Infrastructure-as-Code-Lösungen in Azure.
Beim Zuweisen einer integrierten Richtlinien- oder Initiativendefinition ist der Verweis auf eine Version optional. Richtlinienzuweisungen von integrierten Definitionen sind standardmäßig auf die neueste Version festgelegt und erben automatisch Nebenversionsänderungen, sofern nicht anders angegeben.
Voraussetzungen
- Sollten Sie kein Azure-Konto haben, erstellen Sie zunächst ein kostenloses Konto.
- Bicep.
- Azure PowerShell oder Azure CLI.
- Visual Studio Code und die Bicep-Erweiterung für Visual Studio Code
Microsoft.PolicyInsights
muss in Ihrem Azure-Abonnement registriert sein. Um einen Ressourcenanbieter zu registrieren, benötigen Sie die Berechtigung zum Registrieren von Ressourcenanbietern. Diese Berechtigung ist in den Rollen „Mitwirkender“ und „Besitzer“ enthalten.- Eine Ressourcengruppe mit mindestens einer VM, die keine verwalteten Datenträger verwendet.
Überprüfen der Bicep-Datei
Die Bicep-Datei erstellt eine Richtlinienzuweisung für einen Ressourcengruppenbereich und weist die integrierte Richtliniendefinition Virtuelle Computer überwachen, die keine verwalteten Datenträger verwenden zu.
Erstellen Sie die folgende Bicep-Datei als policy-assignment.bicep.
- Öffnen Sie Visual Studio Code und wählen Sie Datei>Neue Textdatei.
- Kopieren Sie die Bicep-Datei, und fügen Sie sie in Visual Studio Code ein.
- Wählen Sie Datei>Speichern aus, und verwenden Sie den Dateinamen policy-assignment.bicep.
param policyAssignmentName string = 'audit-vm-managed-disks'
param policyDefinitionID string = '/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d'
param policyDisplayName string = 'Audit VM managed disks'
resource assignment 'Microsoft.Authorization/policyAssignments@2023-04-01' = {
name: policyAssignmentName
scope: resourceGroup()
properties: {
policyDefinitionId: policyDefinitionID
description: 'Policy assignment to resource group scope created with Bicep file'
displayName: policyDisplayName
nonComplianceMessages: [
{
message: 'Virtual machines should use managed disks'
}
]
}
}
output assignmentId string = assignment.id
Der in der Bicep-Datei definierte Ressourcentyp ist Microsoft.Authorization/policyAssignments.
Die Bicep-Datei verwendet drei Parameter, um die Richtlinienzuweisung bereitzustellen:
policyAssignmentName
erstellt eine Richtlinienzuweisung namens audit-vm-managed-disks.policyDefinitionID
verwendet die ID der integrierten Richtliniendefinition. Die Befehle zum Abrufen der ID finden Sie im Abschnitt zum Bereitstellen der Vorlage.policyDisplayName
erstellt einen Anzeigenamen, der im Azure-Portal sichtbar ist.
Weitere Informationen zu Bicep-Dateien:
- Weitere Bicep-Beispiele finden Sie unter Codebeispiele durchsuchen.
- Weitere Informationen zu Vorlagenreferenzen für Bereitstellungen finden Sie in der Azure-Vorlagenreferenz.
- Informationen zum Entwickeln von Bicep-Dateien finden Sie in der Bicep-Dokumentation.
- Informationen zu Bereitstellungen auf Abonnementebene finden Sie unter Abonnementbereitstellungen mit Bicep-Dateien.
Bereitstellen der Bicep-Datei
Sie können die Bicep-Datei mit Azure PowerShell oder der Azure CLI bereitstellen.
Stellen Sie in einer Visual Studio Code-Terminalsitzung eine Verbindung mit Azure her. Wenn Sie über mehrere Abonnements verfügen, führen Sie die Befehle aus, um den Kontext für Ihr Abonnement festzulegen. Ersetzen Sie <subscriptionID>
durch Ihre Azure-Abonnement-ID.
Connect-AzAccount
# Run these commands if you have multiple subscriptions
Get-AzSubScription
Set-AzContext -Subscription <subscriptionID>
Sie können überprüfen, ob Microsoft.PolicyInsights
registriert ist. Wenn dies nicht der Fall ist, können Sie einen Befehl ausführen, um den Ressourcenanbieter zu registrieren.
Get-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights' |
Select-Object -Property ResourceTypes, RegistrationState
Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
Weitere Informationen finden Sie unter Get-AzResourceProvider und Register-AzResourceProvider.
Die folgenden Befehle zeigen den Wert des policyDefinitionID
-Parameters an:
(Get-AzPolicyDefinition |
Where-Object { $_.Properties.DisplayName -eq 'Audit VMs that do not use managed disks' }).ResourceId
Die folgenden Befehle stellen die Richtliniendefinition in Ihrer Ressourcengruppe bereit. Ersetzen Sie <resourceGroupName>
durch den Namen Ihrer Ressourcengruppe:
$rg = Get-AzResourceGroup -Name '<resourceGroupName>'
$deployparms = @{
Name = 'PolicyDeployment'
ResourceGroupName = $rg.ResourceGroupName
TemplateFile = 'policy-assignment.bicep'
}
New-AzResourceGroupDeployment @deployparms
Die $rg
-Variable speichert Eigenschaften für die Ressourcengruppe. Die $deployparms
-Variable verwendet Splatting, um Parameterwerte zu erstellen und die Lesbarkeit zu verbessern. Der Befehl New-AzResourceGroupDeployment
verwendet die Parameterwerte, die in der $deployparms
-Variablen definiert sind.
Name
ist der Bereitstellungsname, der in der Ausgabe und in Azure für die Bereitstellungen der Ressourcengruppe angezeigt wird.ResourceGroupName
verwendet die$rg.ResourceGroupName
-Eigenschaft, um den Namen Ihrer Ressourcengruppe abzurufen, der die Richtlinie zugewiesen ist.TemplateFile
gibt den Namen und Speicherort der Bicep-Datei auf Ihrem lokalen Computer an.
Sie können die Bereitstellung der Richtlinienzuweisung mit dem folgenden Befehl überprüfen:
Der Befehl verwendet die $rg.ResourceId
-Eigenschaft, um die ID der Ressourcengruppe abzurufen.
Get-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
Name : audit-vm-managed-disks
ResourceId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks
ResourceName : audit-vm-managed-disks
ResourceGroupName : {resourceGroupName}
ResourceType : Microsoft.Authorization/policyAssignments
SubscriptionId : {subscriptionId}
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks
Properties : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.Policy.PsPolicyAssignmentProperties
Weitere Informationen finden Sie unter Get-AzPolicyAssignment.
Identifizieren nicht konformer Ressourcen
Nachdem die Richtlinienzuweisung bereitgestellt wurde, werden VMs, die in der Ressourcengruppe bereitgestellt werden, auf die Einhaltung der Richtlinie für verwaltete Datenträger überwacht.
Es dauert einige Minuten, bis der Konformitätszustand für eine neue Richtlinienzuweisung aktiv wird und Ergebnisse zum Status der Richtlinie bereitstellt.
$complianceparms = @{
ResourceGroupName = $rg.ResourceGroupName
PolicyAssignmentName = 'audit-vm-managed-disks'
Filter = 'IsCompliant eq false'
}
Get-AzPolicyState @complianceparms
Die $complianceparms
-Variable erstellt Parameterwerte, die im Befehl Get-AzPolicyState
verwendet werden.
ResourceGroupName
ruft den Ressourcengruppennamen aus der$rg.ResourceGroupName
-Eigenschaft ab.PolicyAssignmentName
gibt den Namen an, der beim Erstellen der Richtlinienzuweisung verwendet wird.Filter
verwendet einen Ausdruck, um Ressourcen zu finden, die nicht mit der Richtlinienzuweisung kompatibel sind.
Ihre Ergebnisse ähneln dem folgenden Beispiel, und ComplianceState
zeigt NonCompliant
:
Timestamp : 2/20/2024 18:55:45
ResourceId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.compute/virtualmachines/{vmId}
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.authorization/policyassignments/audit-vm-managed-disks
PolicyDefinitionId : /providers/microsoft.authorization/policydefinitions/06a78e20-9358-41c9-923c-fb736d382a4d
IsCompliant : False
SubscriptionId : {subscriptionId}
ResourceType : Microsoft.Compute/virtualMachines
ResourceLocation : {location}
ResourceGroup : {resourceGroupName}
ResourceTags : tbd
PolicyAssignmentName : audit-vm-managed-disks
PolicyAssignmentOwner : tbd
PolicyAssignmentScope : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}
PolicyDefinitionName : 06a78e20-9358-41c9-923c-fb736d382a4d
PolicyDefinitionAction : audit
PolicyDefinitionCategory : tbd
ManagementGroupIds : {managementGroupId}
ComplianceState : NonCompliant
AdditionalProperties : {[complianceReasonCode, ]}
Weitere Informationen finden Sie unter Get-AzPolicyState.
Bereinigen von Ressourcen
Remove-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
Abmeldung von Ihrer Azure PowerShell-Sitzung:
Disconnect-AzAccount
Nächste Schritte
In diesem Schnellstart haben Sie eine Richtliniendefinition zum Identifizieren nicht kompatibler Ressourcen in Ihrer Azure-Umgebung zugewiesen.
Fahren Sie mit dem Tutorial fort, um mehr über das Zuweisen von Richtlinien zu lernen, die überprüfen, ob Ressourcen konform sind.