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
Come vengono gestite le chiavi di crittografia TDE?
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
- Indici non B-tree
- Range scan search tramite indice
- Synchronous change data capture
- Transportable tablespaces
- Colonne create come identity columns
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:
Impostare la posizione dell’ in $ORACLE_HOME/network/admin/sqlnet.ora
Creare il Key Store (wallet)
Aprire il Key Store
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;
ORIGINAL TABLE_NAME – > EMPLOYEE_ENTRY INTERIM TABLE_NAME – > EMPLOYEE_ENTRY_INT USERNAME - > DATATS NEW TABLESPACE – > DATATS_ENC
- Creo il tablespace criptato:
SQL > CREATE tablespace DATATS_ENC datafile ‘ / < path > / datats_enc01.dbf’ size 1 G ENCRYPTION using ‘AES256’ DEFAULT STORAGE (ENCRYPT);
Creo una tabella intermedia come copia della principale sul tablespace cryptato DATATS_ENC;
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.
Si effettua export degli schema coinvolti:
#expdp … schemas = ( 'USER1' ,'USER2' ) … dumpfile = expdp_user_encrypt.dmp
2. Si crea il nuovo tablespace encrypted:
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.