PostgreSQL Anonymizer 3.2 corregge problemi di sicurezza e blocca il mascheramento eseguito come superutente. Un aggiornamento deve quindi esaminare i ruoli dei trattamenti esistenti, i loro backup e i loro risultati, invece di neutralizzare la protezione per mantenere gli script precedenti.
Datare correttamente l'annuncio e identificare il componente
Il comunicato di PostgreSQL Anonymizer 3.2 è datato 4 settembre 2026; PostgreSQL.org lo ha ripubblicato il 9 settembre. L'evento è l'annuncio del 4 settembre, senza presumere un orario di disponibilità. PostgreSQL Anonymizer è un'estensione: le sue correzioni e le sue precondizioni non descrivono indistintamente tutto PostgreSQL. [annuncio PostgreSQL.org]
La versione 3.2 annuncia il blocco del mascheramento eseguito da un superutente e la migrazione progressiva da pseudo_* a seeded_*, secondo l'annuncio dell'editore.
Un rapporto indipendente descrive due distinti percorsi di elevazione dei privilegi riprodotti sulla 3.1.3: il primo riguarda il proprietario di una tabella senza un secondo attore privilegiato; il secondo richiede che un operatore privilegiato importi un file di regole il cui contenuto sia stato influenzato da un attaccante. Queste precondizioni non consentono né di affermare uno sfruttamento attivo né di stabilire tutte le versioni interessate. [rapporto 665]
Inventariare trattamenti e ruoli
Un ruolo è un'identità alla quale PostgreSQL associa autorizzazioni; un superutente dispone di privilegi che superano quelli di un comune ruolo applicativo. La pseudonimizzazione sostituisce un valore con un altro per limitarne l'identificazione diretta. Il suo determinismo significa che, con gli stessi parametri, uno stesso input può produrre uno stesso output; una collisione è il caso in cui input distinti producono lo stesso valore. La locale è il parametro di lingua e regione che influenza alcuni formati. Il mascheramento statico modifica i dati, la replica produce una copia e l'esportazione produce un set esterno: queste modalità non si qualificano con gli stessi diritti.
Iniziate documentando la versione dell'estensione, la modalità di mascheramento e l'identità effettiva, senza eseguire trattamenti né modificare un database di produzione. Non disabilitate anon.nosuperuser per aggirare la nuova protezione.
| Ambiente | Versione | Modalità | Ruolo effettivo | Proprietario | Operazione | Autorizzazione da confermare | Prova |
|---|---|---|---|---|---|---|---|
| Da compilare | Da verificare | Statica, replica o esportazione | Da verificare | Da designare | Da descrivere | Da confermare | Da allegare |
Qualificare un ruolo dedicato nei test
I privilegi minimi si deducono dalle funzioni effettivamente utilizzate e dalla documentazione della versione di destinazione; non esiste un comando universale di assegnazione dei diritti (GRANT) adatto a tutti i trattamenti. Un piano proposto, non eseguito, inizia con un ripristino di test autorizzato e dati sintetici. Verifica esecuzione, errori, backup e recupero, poi conserva un rollback fondato su un ripristino convalidato, non sulla disabilitazione di una protezione o su un passaggio improvvisato.
Questo piano include anche relazioni, valori nulli, collisioni e ripetizione: verificare che una relazione resti utilizzabile, che un valore nullo conservi il comportamento previsto, che le collisioni siano misurate e che i risultati ripetuti corrispondano alla proprietà ricercata. Il determinismo non garantisce l'anonimato. [documentazione delle funzioni]
Esempio esclusivamente sintetico: tre persone fittizie P01, P02 e P03 hanno rispettivamente Personne_A, Personne_B e Personne_A in un campo nome; P03 ha un valore facoltativo nullo. Due ordini fittizi C01 e C02 sono collegati a P01 e P02. Per le ripetizioni vengono registrati la locale, gli stessi parametri e lo stesso valore iniziale («seme»). Nessuno di questi record è reale.
| Caso | Atteso | Prova |
|---|---|---|
| Relazioni C01→P01 e C02→P02 | Riferimenti coerenti dopo il trattamento | NON ESEGUITO |
| Valore nullo P03 | Comportamento documentato e mantenuto | NON ESEGUITO |
| Collisione Personne_A / Personne_B | Collisione misurata, non presunta assente | NON ESEGUITO |
| Ripetizione con stessi seme e parametri | Risultato confrontato per il determinismo desiderato | NON ESEGUITO |
| Vecchio e nuovo nome di funzione | Confrontati senza imporre l'uguaglianza dei valori | NON ESEGUITO |
| Vincoli dello schema | Risultato controllato | NON ESEGUITO |
Trattare la correzione come una modifica controllata
La nuova famiglia seeded_* sostituisce progressivamente pseudo_*, che sono conservate per compatibilità nella 3.2 ma deprecate, quindi destinate a essere ritirate in seguito. Non si deve presumere alcuna corrispondenza di valori identici. Verificate locale, funzioni disponibili e risultati attesi nella versione di destinazione. [annuncio 3.2]
Piano proposto e non eseguito: inventario; backup della configurazione, dei ruoli e dei dati sintetici; ripristino isolato; convalida di un ruolo dedicato; test; decisione di arresto o di passaggio; rollback verificato mediante ripristino. Non si tratta di un ritorno cieco a una versione precedente dell'estensione. Per il quadro di continuità e ripristino, consultate il piano di continuità e ripristino.
Il proprietario del trattamento definisce i risultati attesi; l'amministratore convalida diritti e ripristino; il team che usa i dati conferma che relazioni e vincoli restano utilizzabili. Un fallimento del ripristino, un'autorizzazione inspiegata o un'incoerenza dei dati sospendono il passaggio. Questo piccolo set consente di verificare il metodo: non misura il rischio globale di collisione né la resistenza alla reidentificazione su dati reali. Resta necessario consultare la documentazione corrispondente alla versione installata; le pagine latest possono evolvere.