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. Al termine della creazione dell'assegnazione dei criteri, si identificano le macchine virtuali non conformi.
È possibile usare i moduli di Azure PowerShell 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.
Quando si assegna un criterio predefinito o una definizione di iniziativa, è facoltativo fare riferimento a una versione. Per impostazione predefinita, le assegnazioni di criteri delle definizioni si basano sulla versione più recente ed ereditano automaticamente le modifiche della versione secondaria, se non diversamente specificato.
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 è NotRegistered
eseguire 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 di 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 { $_.DisplayName -eq 'Audit VMs that do not use managed disks' }
La variabile $rg
archivia le proprietà per il gruppo di risorse e la variabile $definition
archivia le proprietà della definizione dei criteri. Le proprietà vengono usate nei comandi successivi.
Eseguire questo comando per creare l'assegnazione di 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 variabile $policyparms
usa lo splatting per creare i valori dei parametri e migliorare la leggibilità. Il comando New-AzPolicyAssignment
usa i valori dei parametri definiti nella variabile $policyparms
.
Name
crea il nome dell'assegnazione dei criteri usato nell'oggettoResourceId
dell'assegnazione.DisplayName
è il nome per l'assegnazione dei criteri ed è visibile nel portale di Azure.Scope
usa la proprietà$rg.ResourceId
per assegnare i criteri al gruppo di risorse.PolicyDefinition
assegna la definizione dei criteri archiviata nella variabile$definition
.Description
consente di 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 di criteri creata:
$complianceparms = @{
ResourceGroupName = $rg.ResourceGroupName
PolicyAssignmentName = 'audit-vm-managed-disks'
Filter = 'IsCompliant eq false'
}
Get-AzPolicyState @complianceparms
La variabile $complianceparms
usa lo splatting per creare i valori dei parametri usati nel comando Get-AzPolicyState
.
ResourceGroupName
ottiene il nome del gruppo di risorse dalla proprietà$rg.ResourceGroupName
.PolicyAssignmentName
specifica il nome usato quando è stata creata l'assegnazione dei criteri.Filter
usa un'espressione per trovare risorse non conformi all'assegnazione dei criteri.
I risultati saranno simili all'esempio seguente e ComplianceState
mostra 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.