Oracle Transparent Data Encryption (TDE) 

Datamaze
29.05.24 11:26 AM Comment(s)

TDE esegue la crittografia in modo trasparente dei dati ‘at rest’ nei database Oracle. Blocca i tentativi non autorizzati da parte del sistema operativo di accedere ai dati del database archiviati nei file, senza influire sul modo in cui le applicazioni accedono ai dati utilizzando SQL. TDE può crittografare interi tablespace dell'applicazione o colonne di tabelle ed è completamente integrato con il database Oracle. I dati crittografati rimangono crittografati nel database, sia che si tratti di file di tablespace dati, temporary tablespace, undo tablespace o altri file su cui Oracle Database fa affidamento, come i redologs. Inoltre, TDE può crittografare i backup di interi database (RMAN) e le esportazioni di Data Pump. 


Introduzione a TDE

TDE non richiede modifiche alle applicazioni, per tale ragione è definito Transparent. La crittografia e la decrittografia vengono eseguite a livello storage senza alcun impatto sull'interfaccia SQL utilizzata dalle applicazioni (né istruzioni SQL in entrata, né risultati di query SQL in uscita). È inoltre certificato per l'uso delle più comuni applicazioni. 

Oracle fornisce un package nativo per la crittografia che è il DBMS_CRYPTO; questo può essere utilizzato per crittografare manualmente i dati all'interno del database. Tuttavia, l'applicazione deve gestire le chiavi di crittografia ed eseguire le operazioni di crittografia e decrittografia richieste chiamando l'API. Questo approccio richiede uno sforzo significativo per la gestione e comporta un sovraccarico delle prestazioni. La crittografia delle tablespace TDE non richiede modifiche all'applicazione, è trasparente per gli utenti finali e fornisce una gestione delle chiavi integrata e automatizzata. 

Come vengono gestite le chiavi di crittografia TDE?

La crittografia TDE utilizza un'architettura basata su chiave a due livelli. Gli utenti non autorizzati, così come gli intrusi che tentano attacchi alla sicurezza, non possono leggere i dati dai supporti di archiviazione e di backup a meno che non dispongano della master key per decrittografarli.

La master key di crittografia è archiviata in un modulo di sicurezza esterno (archivio chiavi software o hardware). Per default, TDE salva la propria master key in un Oracle Wallet, un file di archiviazione delle chiavi basato sugli standard PKCS#12. I wallet forniscono una soluzione semplice per un numero limitato di database crittografati. I clienti con molti database Oracle e altri server Oracle crittografati possono concedere in licenza e utilizzare Oracle Key Vault, un'appliance software con maggiore sicurezza che fornisce gestione centralizzata di chiavi e portafogli per l'azienda. 

Come posso sapere quali dati criptare? 

È necessario conoscere quali sono i dati sensibili salvati nei nostri database. Oracle fornisce una serie di strumenti che ci aiutano in questo: Oracle Database Security Assessment Tool, l’Enterprise Manager Application Data Modelling oppure, se il database è nel cloud – Data Safe. In ogni caso è opportuno sapere che una conoscenza puntuale non è indispensabile per attivare il processo di encryption anche perché le recenti ottimizzazioni sui chip per accelerare le operazioni di encryption portano spesso i clienti a proteggere l’intera base dati. 


Tipi di dati supportati dalla TDE

Non ci sono limitazioni al tipo di dati quando la criptazione avviene a livello di tablespace. 

Ce ne sono invece quando avviene a livello di colonne di tabella e nello specifico non è possibile criptare colonne con le seguenti caratteristiche: 
  • Indici non B-tree 
  • Range scan search tramite indice 
  • Synchronous change data capture 
  • Transportable tablespaces 
  • Colonne create come identity columns 

Inoltre, non è possibile usare la TDE column encryption per criptare colonne usate nei foreign key constraints. 

Come Abilitare la Transparent Data Encryption

Per attivare la TDE, partendo da una istanza nella quale nessun database è già criptato, occorre eseguire le seguenti operazioni: 

  1.  Impostare la posizione dell’  in $ORACLE_HOME/network/admin/sqlnet.ora 

 

  1. Creare il Key Store (wallet) 

Key Store 

  1. Aprire il Key Store 

Aprire il Key Store 

  1. Creare la master key 

Creare la master key


Come effettuare l’encryption dei dati in chiaro

TDE fornisce più tecniche per migrare i dati in chiaro in tablespace o colonne crittografate. È possibile effettuare l’encryption sia online che offline. I tablespace esistenti possono essere crittografati online senza tempi di inattività sui sistemi di produzione o crittografati offline senza sovraccarico di archiviazione durante un periodo di manutenzione.  

  • Conversione Online 

L’encryption del tablespace online è disponibile a partire da Oracle Database 12.2.0.1 mentre la conversione del tablespace offline è stata sottoposta a backport su Oracle Database 11.2.0.4 e 12.1.0.2.  

SQL >

ALTER TABLESPACE TBS1 ENCRYPTION ONLINE ENCRYPT;
Conversione con package DBMS_REDEFINITION.

È possibile copiare i dati esistenti in chiaro in un nuovo tablespace crittografato con Oracle Online Table Redefinition (DBMS_REDEFINITION) che copia in background senza tempi di inattività. Questo approccio funziona sia per i database 11g che per 12c. 

Esempio:
ORIGINAL TABLE_NAME – >  EMPLOYEE_ENTRY INTERIM TABLE_NAME – >  EMPLOYEE_ENTRY_INT USERNAME  - >  DATATS NEW TABLESPACE – >  DATATS_ENC
  1. Creo il tablespace criptato: 
SQL >

CREATE tablespace DATATS_ENC datafile ‘ / < path > / datats_enc01.dbf’ size 1 G ENCRYPTION using ‘AES256’ DEFAULT STORAGE (ENCRYPT);
  1. Creo una tabella intermedia come copia della principale sul tablespace cryptato DATATS_ENC; 


  2. Lancio il processo di redefinition: 

SQL >

BEGIN
	DBMS_REDEFINITION.START_REDEF_TABLE(uname = > 'DATATS', orig_table = > 'EMPLOYEE_ENTRY', int_table = > 'EMPLOYEE_ENTRY_INT', options_flag = > DBMS_REDEFINITION.CONS_USE_ROWID);
END;/

4. Copio le eventuali dipendenze: 

SQL >

DECLARE error_count pls_integer = 0;

BEGIN
	DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS('DATATS', 'EMPLOYEE_ENTRY', 'EMPLOYEE_ENTRY_INT', dbms_redefinition.cons_orig_params, TRUE, TRUE, TRUE, FALSE, error_count);

	DBMS_OUTPUT.PUT_LINE('errors := ' || TO_CHAR(error_count));
END;/

5. Eseguo la sincronizzazione: 

SQL >

BEGIN
	DBMS_REDEFINITION.SYNC_INTERIM_TABLE('DATATS', 'EMPLOYEE_ENTRY', 'EMPLOYEE_ENTRY_INT');
END;/

6. Chiudo il processo di redefinition: 

SQL >

EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE('DATATS', 'EMPLOYEE_ENTRY', 'EMPLOYEE_ENTRY_INT');
  • Migrazione tramite EXPDP 


Se prevedi di eseguire la migrazione su tablespace crittografati offline durante un periodo di manutenzione pianificata, puoi utilizzare Data Pump per eseguire la migrazione in blocco.  


Esempio

ORIGINAL TABLASPACE – >  DATATS NEW ENCRYPTED TABLESPACE – >  DATATS_ENC USERNAME    - >  USER1
	,USER2

In questo caso si lavora con gli schema ai quali afferiscono quei tablespace.  

  1. Si effettua export degli schema coinvolti: 

    #expdp … schemas = (
    		'USER1'
    		,'USER2'
    		) … dumpfile = expdp_user_encrypt.dmp
    

    2. Si crea il nuovo tablespace encrypted: 

    SQL> create tablespace DATATS_ENC datafile ‘//datats_enc.dbf’ size … ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT);

    3. Si effettua il drop degli schema interessati e quindi si effettua import con clausola di REMAP_TABLESPACE travasando i dati dal tablespace in chiaro sul tablespace encrypted: 

    # impdp … schemas = (
    		'USER1'
    		,'USER2'
    		) …remap_tablespace = (DATATS: DATATS_ENC)
    

    Database Backups

    Come RMAN gestisce i dati criptati. 

     


    La compressione funziona con TDE?

    I clienti che utilizzano la crittografia dei tablespace TDE ottengono tutti i vantaggi della compressione (compressione standard e avanzata, nonché compressione colonnare ibrida Exadata (EHCC)) perché la compressione viene applicata prima che i blocchi di dati vengano crittografati. I clienti che utilizzano la crittografia delle colonne TDE otterranno tutti i vantaggi della compressione solo sulle colonne della tabella non crittografate. Le singole colonne della tabella crittografate utilizzando la crittografia delle colonne TDE avranno un livello di compressione molto inferiore poiché la crittografia avviene nel livello SQL prima del processo di compressione avanzato. 


    Impatto sulle Performance

    A partire da Oracle Database 11g Release 2 Patchset 1 (11.2.0.2), l'accelerazione crittografica hardware basata su AES-NI disponibile nei recenti processori Intel viene sfruttata dalla crittografia delle tablespace rendendo la TDE una soluzione di crittografia a "impatto near zero".


    I dati rimangono crittografati sulla rete? 

    I dati crittografati con TDE vengono decrittografati quando vengono letti dai file di database. Quando i dati viaggiano sulla rete sono in chiaro. Tuttavia, i dati in transito possono essere crittografati utilizzando Native Network Encryption o TLS di Oracle. In questo modo saranno crittografati tutti i dati che viaggiano da e verso un database Oracle su SQL*Net. 


    Standard e conformità

    TDE supporta AES256, AES192 (default per la column encryption), AES128 (default per la tablespace encryption), ARIA128, ARIA192, ARIA256, GOST256, SEED128 e 3DES168. 

    La gestione della master key TDE usa standard come PKCS#12 e PKCS#5 per l’Oracle Wallet keystore. 

    La libreria di crittografia che TDE usa in Oracle Database 19c è validata per U.S. FIPS 140-2. 

    TDE Licensing

    TDE è un componente dell’Oracle Advanced Security, che include anche il tool Data Redaction. È un pacchetto addizionale per l’Oracle Database Enterprise Edition. 

    di Anna Bruno, pubblicato il 29 maggio 2024