La generalizzazione è il processo di astrazione di un valore distintivo in un valore più generale e meno distintivo. La generalizzazione tenta di preservare l'utilità dei dati riducendone al contempo l'identificabilità.
Possono esserci molti livelli di generalizzazione a seconda del tipo di dati. Il livello di generalizzazione necessario è un valore che puoi misurare in un set di dati o in una popolazione reale utilizzando tecniche come quelle incluse nell'analisi dei rischi di Sensitive Data Protection.
Una tecnica di generalizzazione comune supportata da Sensitive Data Protection è il bucketing. Con il bucketing, raggruppi i record in bucket più piccoli nel tentativo di ridurre al minimo il rischio che un utente malintenzionato associ informazioni sensibili a informazioni identitarie. In questo modo, è possibile mantenere il significato e l'utilità, ma verranno anche oscurati i singoli valori con un numero troppo basso di partecipanti.
Quando utilizzare la generalizzazione e il bucketing
Ecco alcuni casi d'uso comuni:
- Offusca i valori numerici anomali nei set di dati analitici: raggruppa i valori numerici rari (come stipendi estremi, affidabilità creditizia o dimensioni delle transazioni) in intervalli più ampi per impedire la reidentificazione individuale.
- Preservare l'utilità statistica nella ricerca demografica: sostituisci gli identificatori esatti di età, reddito o posizione geografica con intervalli di categorie per supportare una modellazione analitica ampia senza esporre valori individuali distinti.
- Riduci la distinzione dei quasi-identificatori per k-anonymity: generalizza gli attributi quasi-identificativi tra le righe in modo che ogni combinazione distinta sia condivisa da una coorte di individui sufficientemente grande.
- Sanitizza i set di dati dei report esterni: raggruppa le metriche dettagliate dei clienti in livelli di alto livello (come "Basso", "Medio" e "Alto") prima di condividere i report con fornitori di terze parti o segmenti di pubblico pubblici.
Scenario di bucketing 1
Considera questo scenario di bucketing numerico: un database memorizza i punteggi di soddisfazione degli utenti, che vanno da 0 a 100. Il database ha il seguente aspetto:
| user_id | punteggio |
|---|---|
| 1 | 100 |
| 2 | 100 |
| 3 | 92 |
| … | … |
Analizzando i dati, ti rendi conto che alcuni valori vengono utilizzati raramente dagli utenti. In effetti, ci sono alcuni punteggi che corrispondono a un solo utente. Ad esempio, la maggior parte degli utenti sceglie 0, 25, 50, 75 o 100. Tuttavia, cinque utenti hanno scelto 95 e solo un utente ha scelto 92. Anziché conservare i dati non elaborati, puoi generalizzare questi valori in gruppi ed eliminare i gruppi con un numero troppo ridotto di partecipanti. A seconda di come vengono utilizzati i dati, generalizzarli in questo modo potrebbe contribuire a impedire la reidentificazione.
Puoi scegliere di rimuovere queste righe di dati anomali o tentare di preservarne l'utilità utilizzando il bucketing. Per questo esempio, raggruppiamo tutti i valori in base a quanto segue:
- 0-25: "Basso"
- 26-75: "Media"
- 76-100: "Alto"
Il bucketing in Sensitive Data Protection è una delle tante trasformazioni primitive disponibili per l'anonimizzazione. La seguente configurazione JSON illustra come implementare questo scenario di bucketing nell'API DLP. Questo JSON potrebbe essere incluso in una richiesta al metodo content.deidentify:
C#
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, consulta Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Go
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, consulta Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, consulta Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, consulta Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
PHP
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, consulta Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, consulta Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
REST
...
{
"primitiveTransformation":
{
"bucketingConfig":
{
"buckets":
[
{
"min":
{
"integerValue": "0"
},
"max":
{
"integerValue": "25"
},
"replacementValue":
{
"stringValue": "Low"
}
},
{
"min":
{
"integerValue": "26"
},
"max":
{
"integerValue": "75"
},
"replacementValue":
{
"stringValue": "Medium"
}
},
{
"min":
{
"integerValue": "76"
},
"max":
{
"integerValue": "100"
},
"replacementValue":
{
"stringValue": "High"
}
}
]
}
}
}
...
Scenario di bucketing 2
Il bucketing può essere utilizzato anche su stringhe o valori enumerati. Supponiamo che tu voglia condividere i dati sugli stipendi e includere i titoli professionali. Tuttavia, alcune qualifiche, come CEO o Distinguished Engineer, possono essere collegate a una persona o a un piccolo gruppo di persone. Queste qualifiche professionali sono facilmente abbinabili ai dipendenti che le ricoprono.
Anche in questo caso, il bucketing può essere utile. Anziché includere le qualifiche esatte, generalizzale e raggruppale. Ad esempio, "Senior Engineer", "Junior Engineer" e "Distinguished Engineer" vengono generalizzati e raggruppati semplicemente in "Engineer". La tabella seguente illustra il raggruppamento di qualifiche professionali specifiche in famiglie di qualifiche professionali.

Altri scenari
In questi esempi, abbiamo applicato la trasformazione ai dati strutturati. Il bucketing può essere utilizzato anche su esempi non strutturati, purché il valore possa essere classificato con un infoType predefinito o personalizzato. Di seguito sono riportati alcuni scenari di esempio:
- Classificare le date e raggrupparle in intervalli di anni
- Classificare i nomi e raggrupparli in base alla prima lettera (A-M, N-Z)
Risorse
Per scoprire di più sulla generalizzazione e sul bucketing, consulta Anonimizzazione dei dati sensibili nei contenuti di testo.
Per la documentazione dell'API, consulta:
- Metodo
projects.content.deidentify BucketingConfigtrasformazione: raggruppa i valori in base a intervalli personalizzati.- Trasformazione
FixedSizeBucketingConfig: raggruppa i valori in base a intervalli di dimensioni fisse.