Creare criteri a livello di programmazione
Questo articolo illustra la creazione a livello di codice e la gestione dei criteri. Le definizioni di Criteri di Azure applicano regole ed effetti diversi in relazione alle risorse. L'applicazione garantisce che le risorse rimangano conformi agli standard aziendali e ai contratti di servizio.
Per informazioni sulla conformità, vedere Ottenere dati sulla conformità.
Prerequisiti
Prima di iniziare, verificare che i prerequisiti seguenti siano soddisfatti:
Se non è già stato fatto, installare ARMClient. È uno strumento che invia richieste HTTP alle API basate su Azure Resource Manager.
Aggiornare il modulo Azure di PowerShell all'ultima versione. Per informazioni dettagliate, vedere Installare il modulo di Azure PowerShell. Per altre informazioni sulla versione più recente, vedere Azure PowerShell.
Per garantire che la sottoscrizione funzioni con il provider di risorse, registrare il provider di risorse Insights di Criteri di Azure usando Azure PowerShell. Per registrare un provider di risorse, è necessaria l'autorizzazione per eseguire l'operazione /register/action per il provider di risorse. Questa operazione è inclusa nei ruoli Collaboratore e Proprietario. Eseguire il comando seguente per registrare il provider di risorse:
Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
Per altre informazioni sulla registrazione e la visualizzazione di provider di risorse, vedere Provider e tipi di risorse.
Se non è già stato fatto, installare l'interfaccia della riga di comando di Azure. È possibile ottenere la versione più recente in Installare l'interfaccia della riga di comando di Azure in Windows.
Creare e assegnare una definizione di criteri
Il primo passo per una migliore visibilità delle risorse consiste nel creare e assegnare i criteri oltre le risorse. Il passaggio successivo illustra come creare e assegnare un criterio a livello di codice. Il criterio di esempio controlla gli account di archiviazione aperti a tutte le reti pubbliche usando PowerShell, l'interfaccia della riga di comando di Azure e le richieste HTTP.
Creare e assegnare una definizione di criteri con PowerShell
Usare il frammento JSON seguente per creare un file JSON con il nome AuditStorageAccounts.json.
{ "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Storage/storageAccounts" }, { "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction", "equals": "Allow" } ] }, "then": { "effect": "audit" } }
Per altre informazioni sulla creazione di una definizione dei criteri, vedere Struttura delle definizioni di Criteri di Azure.
Eseguire il comando seguente per creare una definizione di criteri usando il file AuditStorageAccounts.json .
New-AzPolicyDefinition -Name 'AuditStorageAccounts' -DisplayName 'Audit Storage Accounts Open to Public Networks' -Policy 'AuditStorageAccounts.json'
Il comando crea una definizione di criteri denominata Audit Storage Accounts Open to Public Networks. Per altre informazioni sui parametri aggiuntivi che è possibile usare, vedere New-AzPolicyDefinition.
Se chiamato senza parametri per la posizione,
New-AzPolicyDefinition
salva per impostazione predefinita la definizione dei criteri nella sottoscrizione selezionata del contesto di sessioni. Per salvare la definizione in una posizione diversa, usare i parametri seguenti:- SubscriptionId - Salva in una sottoscrizione diversa. Richiede un valore GUID.
- ManagementGroupName - Salva in un gruppo di gestione. Richiede un valore stringa.
Dopo aver creato la definizione dei criteri, è possibile creare un'assegnazione di criteri eseguendo i comandi seguenti:
$rg = Get-AzResourceGroup -Name 'ContosoRG' $Policy = Get-AzPolicyDefinition -Name 'AuditStorageAccounts' New-AzPolicyAssignment -Name 'AuditStorageAccounts' -PolicyDefinition $Policy -Scope $rg.ResourceId
Sostituire ContosoRG con il nome del gruppo di risorse previsto.
Il
Scope
parametro suNew-AzPolicyAssignment
funziona con gruppo di gestione, sottoscrizione, gruppo di risorse o una singola risorsa. Il parametro usa un percorso di risorsa completo, su cui viene restituita laResourceId
proprietàGet-AzResourceGroup
. Il modello perScope
ogni contenitore è il seguente. Sostituire{rName}
,{rgName}
,{subId}
e{mgName}
rispettivamente con il nome della risorsa, il nome del gruppo di risorse, l'ID della sottoscrizione e il nome del gruppo di gestione.{rType}
verrà sostituito con il tipo di risorsa della risorsa, ad esempioMicrosoft.Compute/virtualMachines
per una macchina virtuale.- Risorsa -
/subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
- Gruppo di risorse -
/subscriptions/{subId}/resourceGroups/{rgName}
- Sottoscrizione -
/subscriptions/{subId}
- Gruppo di gestione -
/providers/Microsoft.Management/managementGroups/{mgName}
- Risorsa -
Per altre informazioni sulla gestione dei criteri delle risorse tramite il modulo PowerShell di Resource Manager, vedere Az.Resources.
Creare e assegnare una definizione dei criteri usando ARMClient
Usare la procedura seguente per creare una definizione dei criteri.
Copiare il frammento di codice JSON seguente per creare un file JSON. Il file verrà chiamato nel passaggio successivo.
"properties": { "displayName": "Audit Storage Accounts Open to Public Networks", "policyType": "Custom", "mode": "Indexed", "description": "This policy ensures that storage accounts with exposure to Public Networks are audited.", "parameters": {}, "policyRule": { "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Storage/storageAccounts" }, { "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction", "equals": "Allow" } ] }, "then": { "effect": "audit" } } }
Creare la definizione dei criteri usando una delle chiamate seguenti:
# For defining a policy in a subscription armclient PUT "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyDefinitions/AuditStorageAccounts?api-version=2021-09-01" @<path to policy definition JSON file> # For defining a policy in a management group armclient PUT "/providers/Microsoft.Management/managementgroups/{managementGroupId}/providers/Microsoft.Authorization/policyDefinitions/AuditStorageAccounts?api-version=2021-09-01" @<path to policy definition JSON file>
Sostituire l'oggetto precedente
{subscriptionId}
con l'ID della sottoscrizione o{managementGroupId}
con l'ID del gruppo di gestione.Per altre informazioni sulla struttura della query, vedere Criteri di Azure Definizioni - Creare o aggiornare o aggiornare definizioni di criteri - Creare o aggiornare il gruppo di gestione.
Usare la procedura seguente per creare un'assegnazione dei criteri e assegnare la definizione dei criteri a livello di gruppo di risorse.
Copiare il frammento di codice JSON seguente per creare un file di assegnazione dei criteri JSON. Sostituire le informazioni di esempio incluse nei simboli <> con i valori desiderati.
{ "properties": { "description": "This policy assignment makes sure that storage accounts with exposure to Public Networks are audited.", "displayName": "Audit Storage Accounts Open to Public Networks Assignment", "parameters": {}, "policyDefinitionId": "/subscriptions/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Storage Accounts Open to Public Networks", "scope": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>" } }
Creare l'assegnazione dei criteri usando la chiamata seguente:
armclient PUT "/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Authorization/policyAssignments/Audit Storage Accounts Open to Public Networks?api-version=2021-09-01" @<path to Assignment JSON file>
Sostituire le informazioni di esempio incluse nei simboli <> con i valori desiderati.
Per altre informazioni su come eseguire le chiamate HTTP all'API REST, vedere Risorse di API REST di Azure.
Creare e assegnare una definizione dei criteri con l'interfaccia della riga di comando di Azure
Per creare una definizione dei criteri, usare la procedura seguente:
Copiare il frammento di codice JSON seguente per creare un file di assegnazione dei criteri JSON.
{ "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Storage/storageAccounts" }, { "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction", "equals": "Allow" } ] }, "then": { "effect": "audit" } }
Per altre informazioni sulla creazione di una definizione dei criteri, vedere Struttura delle definizioni di Criteri di Azure.
Per creare una definizione dei criteri, eseguire il comando seguente:
az policy definition create --name 'audit-storage-accounts-open-to-public-networks' --display-name 'Audit Storage Accounts Open to Public Networks' --description 'This policy ensures that storage accounts with exposures to public networks are audited.' --rules '<path to json file>' --mode All
Il comando crea una definizione di criteri denominata Audit Storage Accounts Open to Public Networks. Per altre informazioni sui parametri aggiuntivi che è possibile usare, vedere az policy definition create.
Se chiamato senza parametri per la posizione,
az policy definition creation
salva per impostazione predefinita la definizione dei criteri nella sottoscrizione selezionata del contesto di sessioni. Per salvare la definizione in una posizione diversa, usare i parametri seguenti:- subscription - Salva in una sottoscrizione diversa. Richiede un valore GUID per l'ID sottoscrizione o un valore string per il nome della sottoscrizione.
- management-group - Salva in un gruppo di gestione. Richiede un valore stringa.
Usare questo comando per creare un'assegnazione di criteri. Sostituire le informazioni di esempio tra parentesi angolari
< >
con i propri valori.az policy assignment create --name '<name>' --scope '<scope>' --policy '<policy definition ID>'
Il
scope
parametro suaz policy assignment create
funziona con gruppo di gestione, sottoscrizione, gruppo di risorse o una singola risorsa. Il parametro usa un percorso di risorsa completo. Il modello perscope
ogni contenitore è il seguente. Sostituire{rName}
,{rgName}
,{subId}
e{mgName}
rispettivamente con il nome della risorsa, il nome del gruppo di risorse, l'ID della sottoscrizione e il nome del gruppo di gestione.{rType}
verrà sostituito con il tipo di risorsa della risorsa, ad esempioMicrosoft.Compute/virtualMachines
per una macchina virtuale.- Risorsa -
/subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
- Gruppo di risorse -
/subscriptions/{subID}/resourceGroups/{rgName}
- Sottoscrizione -
/subscriptions/{subID}
- Gruppo di gestione -
/providers/Microsoft.Management/managementGroups/{mgName}
- Risorsa -
È possibile ottenere l'ID definizione di Criteri di Azure usando PowerShell con il comando seguente:
az policy definition show --name 'Audit Storage Accounts with Open Public Networks'
L'ID definizione dei criteri per la definizione dei criteri creata dovrebbe essere simile al seguente:
"/subscription/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Storage Accounts Open to Public Networks"
Per altre informazioni su come gestire i criteri di risorse con l'interfaccia della riga di comando di Azure, vedere Criteri di risorse dell'interfaccia della riga di comando di Azure.
Passaggi successivi
Esaminare gli articoli seguenti per altre informazioni sui comandi e sulle query di questo articolo.
- Risorse dell'API REST di Azure.
- Moduli di Azure PowerShell.
- Comandi dei criteri dell'interfaccia della riga di comando di Azure.
- Criteri di Azure informazioni di riferimento sulle API REST del provider di risorse.
- Organizzare le risorse con i gruppi di gestione di Azure.