Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Se il Web Application Firewall (WAF) blocca le richieste che dovrebbero essere consentite, è possibile eseguire alcuni passaggi.
Per iniziare, esaminare la panoramica di WAF e la documentazione relativa alla configurazione di WAF e assicurarsi che il monitoraggio WAF sia abilitato. Questi articoli illustrano il funzionamento di WAF, il funzionamento dei set di regole e come accedere ai log WAF.
I set di regole OWASP sono progettati per essere rigorosi e per essere ottimizzati in base alle esigenze specifiche dell'applicazione o dell'organizzazione che utilizza WAF. È del tutto normale, e previsto in molti casi, creare esclusioni, regole personalizzate e persino disabilitare regole che potrebbero causare problemi o falsi positivi. I criteri per sito e per URI consentono di apportare queste modifiche solo a siti/URI specifici. Pertanto, le modifiche non dovrebbero influire su altri siti che potrebbero non riscontrare gli stessi problemi.
Informazioni sui log WAF
Lo scopo dei log waf è mostrare ogni richiesta che WAF corrisponde o blocca. Si tratta di un libro mastro di tutte le richieste valutate corrispondenti o bloccate. Se si nota che WAF blocca una richiesta che non dovrebbe bloccare (un falso positivo), è possibile eseguire alcune operazioni. Prima di tutto, restringere e trovare la richiesta specifica. Esaminare i log per trovare l'URI, il timestamp o l'ID transazione specifici della richiesta. Quando si trovano le voci di log associate, è possibile iniziare a agire sui falsi positivi.
Si supponga, ad esempio, di avere un traffico legittimo contenente la stringa 1=1
che si vuole passare attraverso il WAF. Se si tenta la richiesta, il WAF blocca il traffico contenente la stringa 1=1
in qualsiasi parametro o campo. Si tratta di una stringa spesso associata a un attacco SQL injection. È possibile esaminare i log e visualizzare il timestamp della richiesta e le regole bloccate/corrispondenti.
Nell'esempio seguente è possibile notare che quattro regole vengono attivate durante la stessa richiesta (usando il campo TransactionId). Il primo indica che corrisponde perché l'utente ha usato un URL numerico/IP per la richiesta, che aumenta il punteggio di anomalia di tre perché è un avviso. La regola successiva corrispondente è 942130, ovvero quella che si sta cercando. È possibile visualizzare nel 1=1
details.data
campo . Questo aumenta ulteriormente il punteggio di anomalia di tre volte, perché è anche un avviso. In genere, ogni regola con l'azione Matched aumenta il punteggio di anomalia e a questo punto il punteggio di anomalia sarà sei. Per altre informazioni, vedere Modalità di assegnazione dei punteggi anomalie.
Le due voci di log finali mostrano che la richiesta è stata bloccata perché il punteggio di anomalia è stato sufficientemente elevato. Queste voci hanno un'azione diversa rispetto alle altre due. Mostrano che hanno effettivamente bloccato la richiesta. Queste regole sono obbligatorie e non possono essere disabilitate. Non dovrebbero essere considerati come regole, ma più come infrastruttura di base degli interni WAF.
{
"resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
"operationName": "ApplicationGatewayFirewall",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "appgw_3",
"clientIp": "203.0.113.139",
"clientPort": "",
"requestUri": "\/",
"ruleSetType": "OWASP_CRS",
"ruleSetVersion": "3.0.0",
"ruleId": "920350",
"message": "Host header is a numeric IP address",
"action": "Matched",
"site": "Global",
"details": {
"message": "Warning. Pattern match \\\"^[\\\\\\\\d.:]+$\\\" at REQUEST_HEADERS:Host. ",
"data": "40.90.218.160",
"file": "rules\/REQUEST-920-PROTOCOL-ENFORCEMENT.conf\\\"",
"line": "791"
},
"hostname": "vm000003",
"transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
}
}
{
"resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
"operationName": "ApplicationGatewayFirewall",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "appgw_3",
"clientIp": "203.0.113.139",
"clientPort": "",
"requestUri": "\/",
"ruleSetType": "OWASP_CRS",
"ruleSetVersion": "3.0.0",
"ruleId": "942130",
"message": "SQL Injection Attack: SQL Tautology Detected.",
"action": "Matched",
"site": "Global",
"details": {
"message": "Warning. Pattern match \\\"(?i:([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)([\\\\\\\\d\\\\\\\\w]++)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?:(?:=|\\u003c=\\u003e|r?like|sounds\\\\\\\\s+like|regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)\\\\\\\\2|(?:!=|\\u003c=|\\u003e=|\\u003c\\u003e|\\u003c|\\u003e|\\\\\\\\^|is\\\\\\\\s+not|not\\\\\\\\s+like|not\\\\\\\\s+regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?!\\\\\\\\2)([\\\\\\\\d\\\\\\\\w]+)))\\\" at ARGS:text1. ",
"data": "Matched Data: 1=1 found within ARGS:text1: 1=1",
"file": "rules\/REQUEST-942-APPLICATION-ATTACK-SQLI.conf\\\"",
"line": "554"
},
"hostname": "vm000003",
"transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
}
}
{
"resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
"operationName": "ApplicationGatewayFirewall",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "appgw_3",
"clientIp": "203.0.113.139",
"clientPort": "",
"requestUri": "\/",
"ruleSetType": "",
"ruleSetVersion": "",
"ruleId": "0",
"message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Score: 8)",
"action": "Blocked",
"site": "Global",
"details": {
"message": "Access denied with code 403 (phase 2). Operator GE matched 5 at TX:anomaly_score. ",
"data": "",
"file": "rules\/REQUEST-949-BLOCKING-EVALUATION.conf\\\"",
"line": "57"
},
"hostname": "vm000003",
"transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
}
}
{
"resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
"operationName": "ApplicationGatewayFirewall",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "appgw_3",
"clientIp": "203.0.113.139",
"clientPort": "",
"requestUri": "\/",
"ruleSetType": "",
"ruleSetVersion": "",
"ruleId": "0",
"message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Inbound Score: 8 - SQLI=5,XSS=0,RFI=0,LFI=0,RCE=0,PHPI=0,HTTP=0,SESS=0): SQL Injection Attack: SQL Tautology Detected.",
"action": "Blocked",
"site": "Global",
"details": {
"message": "Warning. Operator GE matched 5 at TX:inbound_anomaly_score. ",
"data": "",
"file": "rules\/RESPONSE-980-CORRELATION.conf\\\"",
"line": "73"
},
"hostname": "vm000003",
"transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
}
}
Correggere i falsi positivi
Con queste informazioni e la conoscenza che la regola 942130 è quella corrispondente alla 1=1
stringa, è possibile eseguire alcune operazioni per impedire il blocco del traffico:
Utilizzare un elenco di esclusione. Per altre informazioni sugli elenchi di esclusione, vedere Elenchi di esclusione WAF.
Disabilitare la regola.
Usare un elenco di esclusione
Per prendere una decisione informata sulla gestione di un falso positivo, è importante acquisire familiarità con le tecnologie usate dall'applicazione. Si supponga, ad esempio, che non sia presente un server SQL nello stack di tecnologie e che si ottengano falsi positivi correlati a tali regole. La disabilitazione di queste regole non necessariamente indebolisce la sicurezza.
Un vantaggio dell'uso di un elenco di esclusione è che solo una parte specifica di una richiesta è disabilitata. Ciò significa tuttavia che un'esclusione specifica è applicabile a tutto il traffico che passa attraverso il WAF perché si tratta di un'impostazione globale. Ad esempio, questo potrebbe causare un problema se 1=1 è una richiesta valida nel corpo di una determinata app, ma non per altri. Un altro vantaggio è che è possibile scegliere tra corpo, intestazioni e cookie da escludere se viene soddisfatta una determinata condizione, anziché escludere l'intera richiesta.
In alcuni casi, in alcuni casi, i parametri specifici vengono passati nel WAF in modo che non siano intuitivi. Ad esempio, è presente un token che viene passato durante l'autenticazione usando l'ID Microsoft Entra.
__RequestVerificationToken viene solitamente passato come cookie di richiesta. Tuttavia, in alcuni casi in cui i cookie sono disabilitati, questo token viene passato anche come attributo di richiesta o arg
. In questo caso, è necessario assicurarsi che __RequestVerificationToken venga aggiunto anche all'elenco di esclusione come nome dell'attributo Request.
In questo esempio si vuole escludere il nome dell'attributo Request uguale a text1. Questo è evidente perché è possibile visualizzare il nome dell'attributo nei log del firewall: dati: dati corrispondenti: 1=1 trovati in ARGS:text1: 1=1. L'attributo è text1. È anche possibile trovare il nome di questo attributo in altri modi, vedere Ricerca dei nomi degli attributi della richiesta.
È possibile creare esclusioni per WAF in gateway applicazione a livelli di ambito diversi. Per altre informazioni, vedere Elenchi di esclusione di Web Application Firewall.
Disabilitare le regole
Un altro modo per aggirare un falso positivo consiste nel disabilitare la regola corrispondente all'input che il WAF pensava fosse dannoso. Poiché sono stati analizzati i log waf e la regola è stata ridotta a 942130, è possibile disabilitarla nel portale di Azure. Vedere Personalizzare le regole web application firewall tramite il portale di Azure.
Un vantaggio della disabilitazione di una regola è che se si conosce tutto il traffico che contiene una determinata condizione che normalmente è bloccata è traffico valido, è possibile disabilitare tale regola per l'intero WAF. Tuttavia, se si tratta solo di traffico valido in un caso d'uso specifico, si apre una vulnerabilità disabilitando tale regola per l'intero WAF perché si tratta di un'impostazione globale.
Per usare Azure PowerShell, vedere Personalizzare le regole del web application firewall tramite PowerShell. Per usare l'interfaccia della riga di comando di Azure, vedere Personalizzare le regole web application firewall tramite l'interfaccia della riga di comando di Azure.
Registrare i file HAR
È possibile usare il browser o uno strumento esterno come Fiddler per registrare file di archivio HTTP (HAR). I file HAR contengono informazioni sulle richieste e le risposte eseguite dal browser durante il caricamento di una pagina Web. Queste informazioni possono essere utili per la risoluzione dei problemi di WAF.
Suggerimento
È consigliabile preparare il file HAR quando si contatta il supporto tecnico. Il team di supporto può usare il file HAR per diagnosticare il problema.
Per registrare e salvare un file HAR in Microsoft Edge, seguire questa procedura
Premere F12 o CTRL+MAIUSC+I per avviare gli strumenti di sviluppo Edge. È anche possibile avviare gli strumenti dal menu della barra degli strumenti in Altri strumenti > Strumenti di sviluppo.
Nella scheda Console selezionare Cancella console o premere CTRL+L.
Selezionare la scheda Rete.
Selezionare Cancella log di rete o premere Ctrl+L, e quindi selezionare Registra log di rete se non viene registrato.
Caricare la pagina Web protetta dal WAF per cui si vuole risolvere i problemi.
Arrestare la registrazione selezionando il Arresta la registrazione del log di rete.
Selezionare Esporta HAR (sanificata) e salvare il file HAR.
Trovare i nomi degli attributi della richiesta
È possibile usare Fiddler per esaminare le singole richieste e determinare quali campi specifici di una pagina Web vengono chiamati. L'uso di queste informazioni consente di escludere determinati campi dall'ispezione usando elenchi di esclusione.
In questo esempio è possibile notare che il campo in cui è stata immessa la stringa 1=1 è denominato text1.
Si tratta di un campo che è possibile escludere. Per altre informazioni sugli elenchi di esclusione, vedere Elenchi di esclusione del web application firewall. È possibile escludere la valutazione in questo caso configurando l'esclusione seguente:
È anche possibile esaminare i log del firewall per ottenere le informazioni necessarie per visualizzare gli elementi da aggiungere all'elenco di esclusione. Per abilitare la registrazione, vedere Integrità back-end, log delle risorse e metriche per gateway applicazione.
Esaminare il log del firewall e visualizzare il file PT1H.json per l'ora in cui si desidera controllare la richiesta.
In questo esempio è possibile osservare che sono presenti quattro regole con lo stesso TransactionID e che si sono verificate tutte nello stesso momento:
{
"resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
"operationName": "ApplicationGatewayFirewall",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "appgw_3",
"clientIp": "203.0.113.139",
"clientPort": "",
"requestUri": "\/",
"ruleSetType": "OWASP_CRS",
"ruleSetVersion": "3.0.0",
"ruleId": "920350",
"message": "Host header is a numeric IP address",
"action": "Matched",
"site": "Global",
"details": {
"message": "Warning. Pattern match \\\"^[\\\\\\\\d.:]+$\\\" at REQUEST_HEADERS:Host. ",
"data": "40.90.218.160",
"file": "rules\/REQUEST-920-PROTOCOL-ENFORCEMENT.conf\\\"",
"line": "791"
},
"hostname": "vm000003",
"transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
}
}
{
"resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
"operationName": "ApplicationGatewayFirewall",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "appgw_3",
"clientIp": "203.0.113.139",
"clientPort": "",
"requestUri": "\/",
"ruleSetType": "OWASP_CRS",
"ruleSetVersion": "3.0.0",
"ruleId": "942130",
"message": "SQL Injection Attack: SQL Tautology Detected.",
"action": "Matched",
"site": "Global",
"details": {
"message": "Warning. Pattern match \\\"(?i:([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)([\\\\\\\\d\\\\\\\\w]++)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?:(?:=|\\u003c=\\u003e|r?like|sounds\\\\\\\\s+like|regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)\\\\\\\\2|(?:!=|\\u003c=|\\u003e=|\\u003c\\u003e|\\u003c|\\u003e|\\\\\\\\^|is\\\\\\\\s+not|not\\\\\\\\s+like|not\\\\\\\\s+regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?!\\\\\\\\2)([\\\\\\\\d\\\\\\\\w]+)))\\\" at ARGS:text1. ",
"data": "Matched Data: 1=1 found within ARGS:text1: 1=1",
"file": "rules\/REQUEST-942-APPLICATION-ATTACK-SQLI.conf\\\"",
"line": "554"
},
"hostname": "vm000003",
"transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
}
}
{
"resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
"operationName": "ApplicationGatewayFirewall",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "appgw_3",
"clientIp": "203.0.113.139",
"clientPort": "",
"requestUri": "\/",
"ruleSetType": "",
"ruleSetVersion": "",
"ruleId": "0",
"message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Score: 8)",
"action": "Blocked",
"site": "Global",
"details": {
"message": "Access denied with code 403 (phase 2). Operator GE matched 5 at TX:anomaly_score. ",
"data": "",
"file": "rules\/REQUEST-949-BLOCKING-EVALUATION.conf\\\"",
"line": "57"
},
"hostname": "vm000003",
"transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
}
}
{
"resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
"operationName": "ApplicationGatewayFirewall",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "appgw_3",
"clientIp": "203.0.113.139",
"clientPort": "",
"requestUri": "\/",
"ruleSetType": "",
"ruleSetVersion": "",
"ruleId": "0",
"message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Inbound Score: 8 - SQLI=5,XSS=0,RFI=0,LFI=0,RCE=0,PHPI=0,HTTP=0,SESS=0): SQL Injection Attack: SQL Tautology Detected.",
"action": "Blocked",
"site": "Global",
"details": {
"message": "Warning. Operator GE matched 5 at TX:inbound_anomaly_score. ",
"data": "",
"file": "rules\/RESPONSE-980-CORRELATION.conf\\\"",
"line": "73"
},
"hostname": "vm000003",
"transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
}
}
Con la conoscenza del funzionamento dei set di regole CRS e del funzionamento del set di regole CRS 3.0 con un sistema di assegnazione dei punteggi anomalie (vedere Web Application Firewall per app Azure lication Gateway) si sa che le due regole inferiori con l'azione: La proprietà bloccata si blocca in base al punteggio totale delle anomalie. Le regole su cui concentrarsi sono le prime due.
La prima voce viene registrata perché l'utente ha usato un indirizzo IP numerico per passare al gateway applicazione, che in questo caso può essere ignorato.
Il secondo (regola 942130) è quello interessante. È possibile visualizzare nei dettagli che corrisponde a un criterio (1=1)
e il campo è denominato text1. Seguire gli stessi passaggi precedenti per escludere il nome dell'attributo della richiesta uguale 1=1
a .
Trovare i nomi delle intestazioni della richiesta
È possibile utilizzare Fiddler per trovare i nomi delle intestazioni delle richieste. Nello screenshot seguente è possibile visualizzare le intestazioni per questa richiesta GET, che includono Content-Type, User-Agent e così via.
Un altro modo per visualizzare le intestazioni di richiesta e risposta consiste nell'usare gli strumenti di sviluppo di Microsoft Edge o Google Chrome. Per altre informazioni, vedere Registrare i file HAR.
Trovare i nomi dei cookie di richiesta
Se la richiesta contiene cookie, è possibile selezionare la scheda Cookie per visualizzarle in Fiddler.
Limitare i parametri globali per eliminare i falsi positivi
Disabilitare l'ispezione del corpo della richiesta
Impostando Inspect request body su off, i corpi delle richieste del traffico non vengono valutati dal WAF. Questo può essere utile se si sa che i corpi della richiesta non sono dannosi per l'applicazione.
Quando si disabilita questa opzione, solo il corpo della richiesta ignora l'ispezione. Le intestazioni e i cookie vengono ancora controllati, a meno che i singoli utenti non vengano esclusi usando la funzionalità dell'elenco di esclusione.
Disabilitare il limite massimo del corpo della richiesta
Disabilitando il limite massimo del corpo della richiesta, WAF può elaborare corpi di richiesta di grandi dimensioni senza rifiutarli per il superamento del limite di dimensioni. Questa impostazione è utile se si ricevono regolarmente richieste di grandi dimensioni.
Quando si disabilita questa opzione, il corpo della richiesta verrà controllato solo fino al limite massimo di ispezione del corpo della richiesta. Se nella richiesta sono presenti contenuti dannosi oltre il limite massimo di ispezione del corpo della richiesta, il WAF non lo rileverà.
Disabilitare i limiti massimi per le dimensioni dei file
Disabilitando i limiti delle dimensioni dei file per WAF, è possibile caricare file di grandi dimensioni senza che il WAF rifiuti questi caricamenti di file. Consentendo il caricamento di file di grandi dimensioni, aumenta il rischio che il back-end venga sovraccaricato. Se si conosce la dimensione massima che un caricamento di file può essere, è possibile impostare un limite di dimensioni per i caricamenti di file leggermente superiore alle dimensioni massime previste. Limitare le dimensioni del file a un caso d'uso normale per l'applicazione è un altro modo per evitare attacchi. Tuttavia, se i caricamenti dei file superano regolarmente il limite massimo di dimensioni di caricamento dei file applicabili, potrebbe essere necessario disabilitare completamente i limiti delle dimensioni di caricamento dei file per evitare falsi positivi.
Nota
Se sai che l'app non richiederà mai alcun caricamento di file superiore a una determinata dimensione, puoi limitarlo impostando un limite.
Avviso
Quando si assegna un nuovo set di regole gestito a un criterio WAF, tutte le personalizzazioni precedenti dei set di regole gestiti esistenti, ad esempio lo stato delle regole, le azioni delle regole e le esclusioni a livello di regola, verranno reimpostate sui valori predefiniti del nuovo set di regole gestito. Tuttavia, tutte le regole personalizzate, le impostazioni dei criteri e le esclusioni globali rimarranno invariate durante la nuova assegnazione del set di regole.
Metriche del firewall (solo WAF v1)
Per i web application firewall v1, nel portale sono ora disponibili le metriche seguenti:
- Conteggio richieste bloccate di Web Application Firewall Numero di richieste bloccate
- Web Application Firewall Blocked Rule Count All rules that were matched and the request was blocked rule count All rules that were matched and the request was blocked rule count All rules that were matched and the request was blocked blocked rule count All rules that were matched and the
- Distribuzione totale regole di Web Application Firewall Tutte le regole corrispondenti durante la valutazione
Per abilitare le metriche, selezionare la scheda Metriche nel portale e selezionare una delle tre metriche.