Quickstart: Een beleidstoewijzing maken om niet-compatibele resources te identificeren met behulp van Azure PowerShell

De eerste stap in het begrijpen van naleving in Azure is het identificeren van de status van uw resources. In deze quickstart maakt u een beleidstoewijzing om niet-compatibele resources te identificeren met behulp van Azure PowerShell. Het beleid wordt toegewezen aan een resourcegroep en controleert virtuele machines die geen beheerde schijven gebruiken. Nadat u de beleidstoewijzing hebt gemaakt, identificeert u niet-compatibele virtuele machines.

De Azure PowerShell-modules kunnen worden gebruikt voor het beheren van Azure-resources vanaf de opdrachtregel of in scripts. In dit artikel wordt uitgelegd hoe u Azure PowerShell gebruikt om een beleidstoewijzing te maken.

Vereisten

  • Als u geen Azure-account hebt, maak dan een gratis account aan voordat u begint.
  • Azure PowerShell.
  • Visual Studio Code.
  • Microsoft.PolicyInsights moet zijn geregistreerd in uw Azure-abonnement. Als u een resourceprovider wilt registreren, moet u gemachtigd zijn om resourceproviders te registreren. Deze machtiging is opgenomen in de rollen Inzender en Eigenaar.
  • Een resourcegroep met ten minste één virtuele machine die geen beheerde schijven gebruikt.

Verbinding maken met Azure

Maak vanuit een Visual Studio Code-terminalsessie verbinding met Azure. Als u meer dan één abonnement hebt, voert u de opdrachten uit om context in te stellen op uw abonnement. Vervang <subscriptionID> door de id van uw Azure-abonnement.

Connect-AzAccount

# Run these commands if you have multiple subscriptions
Get-AzSubScription
Set-AzContext -Subscription <subscriptionID>

Resourceprovider registreren

Wanneer een resourceprovider is geregistreerd, is deze beschikbaar voor gebruik in uw Azure-abonnement.

Voer uit Get-AzResourceProviderom te controleren of Microsoft.PolicyInsights deze is geregistreerd. De resourceprovider bevat verschillende resourcetypen. Als het resultaat wordt NotRegistered uitgevoerd Register-AzResourceProvider:

 Get-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights' |
   Select-Object -Property ResourceTypes, RegistrationState

Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'

Ga voor meer informatie naar Get-AzResourceProvider en Register-AzResourceProvider.

Een beleidstoewijzing maken

Gebruik de volgende opdrachten om een nieuwe beleidstoewijzing voor uw resourcegroep te maken. In dit voorbeeld wordt een bestaande resourcegroep gebruikt die een virtuele machine zonder beheerde schijven bevat. De resourcegroep is het bereik voor de beleidstoewijzing. In dit voorbeeld wordt gebruikgemaakt van de ingebouwde beleidsdefinitie Vm's controleren die geen beheerde schijven gebruiken.

Voer de volgende opdrachten uit en vervang deze door <resourceGroupName> de naam van de resourcegroep:

$rg = Get-AzResourceGroup -Name '<resourceGroupName>'

$definition = Get-AzPolicyDefinition |
  Where-Object { $_.Properties.DisplayName -eq 'Audit VMs that do not use managed disks' }

De $rg variabele slaat eigenschappen op voor de resourcegroep en de $definition variabele slaat de eigenschappen van de beleidsdefinitie op. De eigenschappen worden gebruikt in volgende opdrachten.

Voer de volgende opdracht uit om de beleidstoewijzing te maken:

$policyparms = @{
Name = 'audit-vm-managed-disks'
DisplayName = 'Audit VM managed disks'
Scope = $rg.ResourceId
PolicyDefinition = $definition
Description = 'Az PowerShell policy assignment to resource group'
}

New-AzPolicyAssignment @policyparms

De $policyparms variabele maakt gebruik van splatting om parameterwaarden te maken en de leesbaarheid te verbeteren. De New-AzPolicyAssignment opdracht gebruikt de parameterwaarden die zijn gedefinieerd in de $policyparms variabele.

  • Name maakt de naam van de beleidstoewijzing die wordt gebruikt in de toewijzing ResourceId.
  • DisplayName is de naam voor de beleidstoewijzing en is zichtbaar in Azure Portal.
  • Scope gebruikt de $rg.ResourceId eigenschap om het beleid toe te wijzen aan de resourcegroep.
  • PolicyDefinition wijst de beleidsdefinitie toe die is opgeslagen in de $definition variabele.
  • Description kan worden gebruikt om context over de beleidstoewijzing toe te voegen.

De resultaten van de beleidstoewijzing lijken op het volgende voorbeeld:

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

Ga naar New-AzPolicyAssignment voor meer informatie.

Als u de beleidstoewijzingsgegevens opnieuw wilt weergeven, voert u de volgende opdracht uit:

Get-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId

Niet-compatibele resources identificeren

Het duurt enkele minuten voordat de nalevingsstatus voor een nieuwe beleidstoewijzing actief wordt en resultaten geeft over de status van het beleid.

Gebruik de volgende opdracht om resources te identificeren die niet compatibel zijn met de beleidstoewijzing die u hebt gemaakt:

$complianceparms = @{
ResourceGroupName = $rg.ResourceGroupName
PolicyAssignmentName = 'audit-vm-managed-disks'
Filter = 'IsCompliant eq false'
}

Get-AzPolicyState @complianceparms

De $complianceparms variabele maakt gebruik van splatting om parameterwaarden te maken die in de Get-AzPolicyState opdracht worden gebruikt.

  • ResourceGroupName haalt de naam van de resourcegroep op uit de $rg.ResourceGroupName eigenschap.
  • PolicyAssignmentName hiermee geeft u de naam op die wordt gebruikt bij het maken van de beleidstoewijzing.
  • Filter gebruikt een expressie om resources te vinden die niet compatibel zijn met de beleidstoewijzing.

Uw resultaten lijken op het volgende voorbeeld en ComplianceState tonen NonCompliant:

Timestamp                : 2/14/2024 18:25:37
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, ]}

Ga naar Get-AzPolicyState voor meer informatie.

Resources opschonen

Voer de volgende opdracht uit om de beleidstoewijzing te verwijderen:

Remove-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId

Afmelden bij uw Azure PowerShell-sessie:

Disconnect-AzAccount

Volgende stappen

In deze Quick Start hebt u een beleidsdefinitie toegewezen om niet-compatibele resources in uw Azure-omgeving te identificeren.

Ga verder met de zelfstudie voor meer informatie over het toewijzen van beleidsregels voor het valideren van resourcenaleving.