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'
Per altre informazioni, vedere Get-AzResourceProvider e Register-AzResourceProvider.
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. In questo esempio viene usata la definizione dei criteri predefinita Controlla macchine virtuali che non usano dischi gestiti.
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 VM managed disks'
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'assegnazioneResourceId
.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.
Se si desidera riprodurre nuovamente le informazioni sull'assegnazione dei criteri, eseguire il comando seguente:
Get-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
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.
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, ]}
Per altre informazioni, vedere Get-AzPolicyState.
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 la conformità delle risorse, continuare con l'esercitazione.