Guida introduttiva: Creare un'assegnazione di criteri per identificare le risorse non conformi con Azure PowerShell

Il primo passaggio per comprendere la conformità in Azure consiste nell'identificare lo stato delle risorse. In questa guida introduttiva si crea un'assegnazione di criteri per identificare le risorse non conformi usando Azure PowerShell. I criteri vengono assegnati a un gruppo di risorse e controllano le macchine virtuali che non usano dischi gestiti. Dopo aver creato l'assegnazione dei criteri, si identificano le macchine virtuali non conformi.

I moduli di Azure PowerShell possono essere usati per gestire le risorse di Azure dalla riga di comando o negli script. Questo articolo illustra come usare Azure PowerShell per creare un'assegnazione di criteri.

Prerequisiti

  • Se non si ha un account Azure, creare un account gratuito prima di iniziare.
  • Azure PowerShell.
  • Visual Studio Code.
  • Microsoft.PolicyInsights deve essere registrato nella sottoscrizione di Azure. Per registrare un provider di risorse, è necessario disporre dell'autorizzazione per registrare i provider di risorse. Tale autorizzazione è inclusa nei ruoli Collaboratore e Proprietario.
  • Gruppo di risorse con almeno una macchina virtuale che non usa dischi gestiti.

Connect to Azure

Da una sessione del terminale di Visual Studio Code connettersi ad Azure. Se si dispone di più sottoscrizioni, eseguire i comandi per impostare il contesto sulla sottoscrizione. Sostituire <subscriptionID> con l'ID della sottoscrizione di Azure.

Connect-AzAccount

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

Registrare il provider di risorse

Quando un provider di risorse è registrato, è disponibile per l'uso nella sottoscrizione di Azure.

Per verificare se Microsoft.PolicyInsights è registrato, eseguire Get-AzResourceProvider. Il provider di risorse contiene diversi tipi di risorse. Se il risultato viene NotRegistered eseguito Register-AzResourceProvider:

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

Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'

Crea assegnazione criteri

Usare i comandi seguenti per creare una nuova assegnazione di criteri per il gruppo di risorse. Questo esempio usa un gruppo di risorse esistente che contiene una macchina virtuale senza dischi gestiti. Il gruppo di risorse è l'ambito per l'assegnazione dei criteri.

Eseguire i comandi seguenti e sostituire <resourceGroupName> con il nome del gruppo di risorse:

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

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

La $rg variabile archivia le proprietà per il gruppo di risorse e la $definition variabile archivia le proprietà della definizione dei criteri. Le proprietà vengono usate nei comandi successivi.

Eseguire il comando seguente per creare l'assegnazione dei criteri:

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

New-AzPolicyAssignment @policyparms

La $policyparms variabile usa splattingper creare valori di parametro e migliorare la leggibilità. Il New-AzPolicyAssignment comando usa i valori dei parametri definiti nella $policyparms variabile .

  • Name crea il nome dell'assegnazione dei criteri usato nell'oggetto dell'assegnazione ResourceId.
  • DisplayNameè il nome dell'assegnazione dei criteri ed è visibile in portale di Azure.
  • Scope usa la $rg.ResourceId proprietà per assegnare i criteri al gruppo di risorse.
  • PolicyDefinition assegna la definizione di criteri archiviata nella $definition variabile .
  • Description può essere usato per aggiungere contesto sull'assegnazione dei criteri.

I risultati dell'assegnazione dei criteri sono simili all'esempio seguente:

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

Per altre informazioni, vedere New-AzPolicyAssignment.

Identificare risorse non conformi

Lo stato di conformità per una nuova assegnazione di criteri richiede alcuni minuti per diventare attivo e fornire risultati sullo stato del criterio.

Usare il comando seguente per identificare le risorse non conformi all'assegnazione dei criteri creata:

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

Get-AzPolicyState @complianceparms

La $complianceparms variabile usa splatting per creare i valori dei parametri usati nel Get-AzPolicyState comando .

  • ResourceGroupName ottiene il nome del gruppo di risorse dalla $rg.ResourceGroupName proprietà .
  • PolicyAssignmentName specifica il nome utilizzato quando è stata creata l'assegnazione dei criteri.
  • Filter usa un'espressione per trovare risorse non conformi all'assegnazione dei criteri.

Per altre informazioni, vedere Get-AzPolicyState.

I risultati sono simili all'esempio seguente e ComplianceState mostrano 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, ]}

Pulire le risorse

Per rimuovere l'assegnazione dei criteri, eseguire il comando seguente:

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

Per disconnettersi dalla sessione di Azure PowerShell:

Disconnect-AzAccount

Passaggi successivi

In questa Guida introduttiva è stata assegnata una definizione dei criteri per identificare le risorse non conformi nell'ambiente Azure.

Per altre informazioni su come assegnare criteri che convalidano se le nuove risorse sono conformi, continuare con l'esercitazione.