Implementazione e gestione di Oracle Transparent Data Encryption (TDE) su Bare Metal Solution
Questa pagina descrive come eseguire il deployment della crittografia dei dati trasparenti (TDE) di Oracle Advanced Security e gestire le chiavi e il portafoglio Oracle nella soluzione Bare Metal.
Panoramica
Oracle Advanced Security TDE cripta in modo trasparente i dati at-rest nei database Oracle e impedisce l'accesso non autorizzato ai file del database. TDE può criptare interi backup del database (RMAN) ed esportazioni di Data Pump, nonché spazi tabella e colonne specifici.
Come funziona la crittografia trasparente dei dati
TDE crea e gestisce più chiavi utilizzate per la crittografia. Queste chiavi devono essere protette perché, se un malintenzionato ottiene i dati criptati e le chiavi corrispondenti, può decriptarli facilmente per visualizzare i dati non criptati.
TDE ha un'architettura a due livelli delle chiavi, con chiavi di crittografia dei dati racchiuse da una singola chiave master del database. La chiave master è separata dai dati criptati, archiviati al di fuori del database, che può essere un portafoglio del keystore software Oracle o un keystore del modulo di sicurezza hardware (HSM), ed è gestita direttamente dall'amministratore della sicurezza del database in un keystore.
Per la crittografia lato client sono disponibili due opzioni di keystore per supportare diversi ambienti dei clienti. Per impostazione predefinita, TDE archivia la chiave master in un portafoglio Oracle, un file di archivio chiavi basato sugli standard PKCS#12. I wallet forniscono una soluzione semplice per un numero ridotto di database criptati.
Attiva TDE per il database Oracle 11g sul server Bare Metal Solution:
Puoi eseguire operazioni di crittografia a livello di colonna e a livello di spazio tabella. Puoi anche applicare la crittografia lato client ai backup RMAN.
Attiva prerequisito TDE
Devi preparare il database impostando un keystore (Oracle Wallet
per 11g) e creare una chiave master iniziale.
Configurare Oracle Wallet nel server Bare Metal Solution
Connettiti a uno dei server Bare Metal Solution da una macchina
jump host
obastion
nel tuo progetto.$ ssh customeradmin@192.168.1.10 $ su - oracle
Imposta la variabile di ambiente.
[oracle@svr002 ~]$ . oraenv ORACLE_SID = [tdedb] ? DB11G The Oracle base has been changed from /u01/app/oracle to /apps/oracle/oracle_base [oracle@svr002 ~]$ export ORACLE_SID=DB11G1
Connettiti come sysdba.
[oracle@svr002 ~]$ sqlplus / as sysdba
Assicurati che tutte le seguenti variabili di ambiente siano impostate correttamente.
$ echo $ORACLE_HOME $ echo $ORACLE_BASE $ echo $DB_UNIQUE_NAME
Crea una nuova directory per i file del portafoglio.
$ mkdir -p $ORACLE_BASE/admin/DB11G/wallet
Utilizza orapki Utility per creare il portafoglio e attivare l'accesso automatico in modo da non dover attivare il portafoglio ai riavvii.
$ orapki wallet create -wallet $ORACLE_BASE/admin/DB11G/wallet -auto_login -pwd Oracle2020
Oracle utilizza i percorsi predefiniti per il portafoglio.
$ ORACLE_BASE/admin/$DB_UNIQUE_NAME/wallet $ ORACLE_HOME/admin/$DB_UNIQUE_NAME/wallet
Se non utilizzi il percorso predefinito, devi impostare il percorso alternativo nel file
sqlnet.ora
. Devi impostare uno di questi parametri:ENCRYPTION_WALLET_LOCATION
oWALLET_LOCATION
.Per trovare il percorso del portafoglio:
SQL> COL wrl_type FORMAT a12 COL wrl_parameter FORMAT a35 COL status FORMAT a15 SQL> select * from v$encryption_wallet; WRL_TYPE WRL_PARAMETER STATUS -------- ------------- ------- file /apps/oracle/oracle_base OPEN_NO_MASTER_KEY /admin/DB11G/wallet
Per impostare il percorso del portafoglio nel file
sqlnet.ora
:$ vi sqlnet.ora ENCRYPTION_WALLET_LOCATION= (SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=/apps/oracle/oracle_base/admin/DB11G/wallet)) Or WALLET_LOCATION = (SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=/apps/oracle/oracle_base/admin/DB11G/wallet))
Aggiungi un nome utente e una password al portafoglio. Per aggiungere un nome utente e una password a un portafoglio esistente, utilizza il comando
mkstore
con l'opzione-createCredential
come segue:mkstore -wrl <wallet_location> -createCredential <TNS_alias> <username> <password> $ mkstore -wrl apps/oracle/oracle_base/admin/DB11G/wallet -createCredential DB11G testuser testtest123
Puoi accedere con
testuser@SID
senza inserire la password.Crea una chiave principale iniziale.
SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY Oracle2020;
Verifica che lo stato del portafoglio sia
OPEN
.SQL> COL wrl_type FORMAT a12 COL wrl_parameter FORMAT a35 COL status FORMAT a15 SQL> select * from v$encryption_wallet; WRL_TYPE WRL_PARAMETER STATUS -------- ------------- ------ file /apps/oracle/oracle_base/ OPEN admin/DB11G/wallet
Per aprire e chiudere il portafoglio:
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "Password"; SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE;
Attivare TDE a livello di spazio tabella
Puoi eseguire operazioni di crittografia utilizzando l'istruzione CREATE TABLESPACE SQL
.
Crittografia di nuovi spazi tabella
Quando crei un nuovo spazio tabella, puoi configurarne le impostazioni di crittografia durante il processo di creazione.
Assicurati che il parametro di inizializzazione COMPATIBILE per la crittografia dello spazio tabella sia 11.2.0.0 o versioni successive
SQL> SHOW PARAMETER COMPATIBLE NAME TYPE VALUE ---- ---- ------ compatible string 11.2.0.4.0
Assicurati di aver configurato la chiave di crittografia principale TDE. Puoi verificarlo nella sezione Crea una chiave principale iniziale del prerequisito.
Crea il tablespace criptato
Per controllare il percorso del file di dati, utilizza:
SQL> select * from dba_data_files ;
Esegui l'istruzione CREATE TABLESPACE utilizzando le relative clausole di crittografia
SQL> create TABLESPACE encrypted_ts DATAFILE '+DATA/db11g/datafile/encrypted_ts01.dbf' SIZE 5 M AUTOEXTEND on NEXT 64K ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT);
ENCRYPTION USING 'AES256' ENCRYPT specifica l'algoritmo di crittografia e la lunghezza della chiave per la crittografia. La clausola ENCRYPT cripta lo spazio tabella.
Se la clausola USING viene omessa, l'algoritmo di crittografia predefinito è "AES128". Inoltre, è necessario specificare la clausola di archiviazione predefinita di ENCRYPT. Inoltre, puoi impostare il parametro dinamico TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM per definire l'algoritmo di crittografia predefinito per le future operazioni di creazione dei tablespace utilizzando l'istruzione ALTER SYSTEM:
sql> ALTER SYSTEM SET TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM = value;
Il valore può essere uno dei seguenti algoritmi di crittografia: AES128, AES192, AES256, 3DES168, ARIA128, ARIA192, ARIA256, SEED128 e GOST256. Il valore predefinito è AES128.
In alternativa, puoi impostare
TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
come parametro di inizializzazione nel fileinit.ora
.Per verificare se la crittografia dello spazio tabella è configurata o meno, puoi controllare la colonna ENCRYPTED delle visualizzazioni DBA_TABLESPACES e USER_TABLESPACES, che indica se lo spazio tabella è criptato o meno.
SQL> SELECT tablespace_name, encrypted FROM dba_tablespaces; TABLESPACE_NAME ENC ----------------------------------- SYSTEM NO SYSAUX NO UNDOTBS1 NO TEMP NO USERS NO UNDOTBS2 NO ENCRYPTED_TS YES
Testa la crittografia
SQL> CREATE TABLE test (id NUMBER(10),data VARCHAR2(50))TABLESPACE encrypted_ts; Table created. SQL> CREATE INDEX test_idx ON test(data) TABLESPACE encrypted_ts; Index created. SQL> INSERT INTO test (id, data) VALUES (1, 'Test Encryptio'); 1 row created. SQL> COMMIT; Commit complete
Svuota la cache del buffer per assicurarti che i dati vengano scritti nel file di dati.
SQL> ALTER SYSTEM FLUSH BUFFER_CACHE;
Leggi i dati all'interno del file di dati utilizzando il comando strings.
export ORACLE_SID=+ASM asmcmd ASMCMD> strings +DATA/db11g/datafile/encrypted_ts01.dbf
I dati vengono visualizzati in formato binario.
Attivare TDE a livello di colonna della tabella
La crittografia delle colonne TDE può essere utilizzata per criptare dati specifici di una colonna nelle tabelle di database riservate, come numeri di carte di credito, numeri di previdenza sociale (SSN) e numeri di conto personali (PAN).
Creare una tabella con una colonna criptata
SQL> CREATE TABLE employee ( first_name VARCHAR2(128), last_name VARCHAR2(128), empID NUMBER ENCRYPT NO SALT, salary NUMBER(6) ENCRYPT USING '3DES168' ); Table created.
SALT
è un modo per rafforzare la sicurezza dei dati criptati. Si tratta di una stringa random aggiunta ai dati prima della crittografia, che causa la ripetizione del testo in chiaro in modo che appaia diverso dopo la crittografia.SALT
rimuove un metodo utilizzato dagli attaccanti per rubare i dati, ovvero la corrispondenza di pattern di testo criptato. Puoi utilizzare il parametroSALT
oNO SALT
specificato con la clausolaENCRYPT
.Puoi utilizzare il comando
ALTER TABLE
per criptare le colonne di una tabella esistente aggiungendo una colonna criptata o criptando una colonna già esistente.Per aggiungere una colonna criptata a una tabella esistente nel database:
SQL> ALTER TABLE employee ADD (credit_card_number VARCHAR2(16) ENCRYPT NO SALT); Table altered.
Per criptare una colonna esistente in una tabella del database:
SQL> ALTER TABLE employee MODIFY (last_name encrypt); Table altered.
Per aggiungere
SALT
a una colonna criptata in una tabella del database:SQL> ALTER TABLE employee MODIFY (last_name encrypt salt); Table altered.
Per decriptare una colonna esistente in una tabella del database:
SQL> ALTER TABLE employee MODIFY (last_name decrypt); Table altered.
Per rimuovere SALT da una colonna criptata in una tabella del database:
SQL> ALTER TABLE employee MODIFY (last_name encrypt no salt); Table altered.
Per modificare la chiave criptata per la tabella contenente una o più colonne criptate:
SQL> ALTER TABLE employee rekey; Table altered.
Per modificare l'algoritmo di crittografia per la tabella contenente una o più colonne criptate
SQL> ALTER TABLE employee rekey USING '3DES168'; Table altered.
Crittografia dei futuri tablespace
Puoi configurare Oracle Database in modo che cripta automaticamente i futuri tablespace che creerai utilizzando il parametro di inizializzazione del database ENCRYPT_NEW_TABLESPACES
.
Utilizza il seguente comando ALTER SYSTEM
:
SQL> ALTER SYSTEM SET ENCRYPT_NEW_TABLESPACES=value;
Il valore può essere:
ALWAYS
cripta automaticamente lo spazio tabella utilizzando l'algoritmoAES128
o l'algoritmo specificato dal parametro dinamicoTABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
se ometti la clausolaENCRYPTION
diCREATE TABLESPACE
sia per gli scenari cloud che on-premise. Tuttavia, se fornisci la clausolaENCRYPTION
, l'algoritmo specificato ha la precedenza suAES128
.DDL
cripta lo spazio tabella utilizzando l'impostazione specificata della clausolaENCRYPTION
diCREATE TABLESPACE
, sia per gli ambienti cloud sia per quelli on-premise.CLOUD_ONLY
(non applicabile nel nostro caso d'uso) si applica solo a un ambiente Oracle Cloud.CLOUD_ONLY
è il valore predefinito.
Crittografia del tablespace TDE o crittografia delle colonne TDE?
SCEGLI CRITTO COLONNA TDE SE | CHOOSE TDE TABLESPACE ENCRYPTION IF |
---|---|
La posizione delle informazioni sensibili è nota | La posizione delle informazioni sensibili è sconosciuta |
Meno del 5% di tutte le colonne dell'applicazione sono candidate alla crittografia | La maggior parte dei dati dell'applicazione è considerata sensibile oppure al tuo settore si applicano più mandati nazionali e internazionali in materia di sicurezza e privacy |
La crittografia delle colonne TDE supporta il tipo e la lunghezza dei dati | Non tutti i tipi di dati che contengono informazioni sensibili sono supportati dalla crittografia delle colonne TDE |
I candidati alla crittografia non sono colonne di chiavi esterne | I candidati alla crittografia sono colonne di chiavi esterne |
Gli indici sui candidati alla crittografia sono normali indici ad albero B | Gli indici dei candidati alla crittografia sono indici funzionali |
L'applicazione non esegue scansioni di intervalli sui dati criptati | L'applicazione cerca intervalli di dati sensibili |
Aumento dello spazio di archiviazione da 1 a 52 byte per valore criptato | Nessun aumento dello spazio di archiviazione accettabile |
L'impatto sulle prestazioni dipende dalla percentuale di colonne criptate, dalla frequenza con cui i valori criptati vengono selezionati o aggiornati, dalle dimensioni dei dati criptati e da altre variabili | Impatto costante sulle prestazioni inferiore al 10% |
Se vuoi usufruire dell'accelerazione hardware della crittografia | |
Se vuoi usufruire contemporaneamente dei vantaggi della crittografia e della compressione. |
Crittografia dei backup RMAN
I set di backup vengono criptati utilizzando un algoritmo elencato in
V$RMAN_ENCRYPTION_ALGORITHMS
. RMAN può criptare in modo trasparente i dati scritti nei set di backup e decriptarli quando sono necessari in un'operazione RESTORE
. RMAN offre tre modalità di crittografia:
trasparente,
protetta da password
e
modalità duale.
Per utilizzare la crittografia in modalità trasparente (predefinita), deve essere utilizzato Oracle Encryption Wallet.
Per utilizzare la modalità password, il DBA deve fornire una password che verrà utilizzata nella crittografia. Puoi impostare la modalità di password tramite
SET ENCRYPTION ON IDENTIFIED BY password only
.Se utilizzi la crittografia dual mode, puoi utilizzare Oracle Wallet o una password per la decrittografia. Puoi impostare la modalità duale tramite
SET ENCRYPTION ON IDENTIFIED BY password
.
Configurazione della crittografia del backup RMAN
Configura Oracle Wallet.
Configura RMAN per utilizzare la crittografia.
Configura la modalità di crittografia RMAN. Questo esempio utilizza la modalità duale. Per farlo, connettiti al database di destinazione RMAN ed esegui il comando
SET ENCRYPTION ON IDENTIFIED BY password
.[oracle@svr002 ~]$ . oraenv ORACLE_SID = [tdedb] ? DB11G The Oracle base has been changed from /u01/app/oracle to /apps/oracle/oracle_base export ORACLE_SID=DB11G1
Connettiti a RMAN.
rman target / RMAN> SET ENCRYPTION ON IDENTIFIED BY <password>; executing command: SET encryption
SET ENCRYPTION
sostituisce le impostazioni di crittografia specificate dal comandoCONFIGURE ENCRYPTION
che utilizza la crittografia trasparente per impostazione predefinita.Configura l'algoritmo di crittografia del backup predefinito.
Per ottenere l'elenco degli algoritmi di crittografia RMAN, esegui una query sulla visualizzazione
v$rman_encryption_algorithms
:SQL> COL algorithm_name FORMAT a15 COL algorithm_description FORMAT a15 COL is_default FORMAT a15 SQL> select algorithm_id, algorithm_name, algorithm_description, is_default from v$rman_encryption_algorithms; ALGORITHM_ID ALGORITHM_NAME ALGORITHM_DESCR IS_DEFAULT ----------- -------------- --------------- ---------- 1 AES128 AES 128-bit key YES 2 AES192 AES 192-bit key NO 3 AES256 AES 256-bit key NO
Per modificare l'algoritmo predefinito:
RMAN> CONFIGURE ENCRYPTION ALGORITHM 'AES256'; using target database control file instead of recovery catalog new RMAN configuration parameters: CONFIGURE ENCRYPTION ALGORITHM 'AES256'; new RMAN configuration parameters are successfully stored
Esegui un backup criptato utilizzando il normale comando di backup RMAN. Ad esempio:
RMAN> backup tablespace users;
Per ripristinare il backup utilizzando la password di crittografia:
RMAN> set decryption identified by <password>; RMAN> restore tablespace users;
Note importanti
Se le chiavi di decrittografia richieste sono disponibili, i backup criptati vengono decriptati automaticamente durante il ripristino e il recupero. A ogni set di backup viene assegnata una chiave distinta. La chiave viene archiviata in forma criptata nello spazio di backup. Il backup viene decriptato con le chiavi ottenute da una password fornita dall'utente o dal keystore software Oracle.
La crittografia del backup trasparente supporta sia il keystore software di accesso automatico sia il keystore software basato su password. Quando utilizzi il keystore del software di accesso automatico, le operazioni di backup criptate possono essere eseguite in qualsiasi momento, perché il keystore di accesso automatico è sempre aperto. Quando utilizzi il keystore software basato su password, il keystore deve essere aperto prima di poter eseguire la crittografia del backup.
Se utilizzi un keystore per l'accesso automatico, non eseguine il backup insieme ai dati di backup criptati, perché gli utenti possono leggere i backup criptati se ottengono sia i backup sia il keystore per l'accesso automatico. È possibile eseguire il backup dell'archivio chiavi Oracle perché questa forma dell'archivio chiavi non può essere utilizzata senza la password dell'archivio chiavi.
Se alcune colonne del database sono criptate con la crittografia delle colonne Transparent Data Encryption (TDE) e se di queste colonne viene eseguito il backup utilizzando la crittografia del backup, le colonne vengono criptate una seconda volta durante il backup. Quando i set di backup vengono decriptati durante un'operazione di ripristino, le colonne criptate vengono riportate alla loro forma criptata originale.
Se perdi il tuo keystore Oracle, non puoi ripristinare i backup con crittografia trasparente. Inoltre, se dimentichi o perdi la password impiegata per criptare un backup con crittografia a password, non potrai ripristinarlo.