Deployment e gestione di Oracle Transparent Data Encryption (TDE) su Bare Metal Solution
Questa pagina descrive come eseguire il deployment di Oracle Advanced Security Transparent DataEncryption (TDE) e come gestire Oracle Wallet e le chiavi su Bare Metal Solution.
Panoramica
Oracle Advanced Security TDE cripta in modo trasparente i dati at-rest nei database Oracle e impedisce l'accesso non autorizzato ai file dei database. TDE può criptare interi backup dei database (RMAN) e le esportazioni di Data Pump, così come tabelle e colonne specifiche.
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 utente malintenzionato ottiene dati criptati e chiavi corrispondenti, può decriptare facilmente i dati per visualizzare dati chiari.
TDE ha un'architettura delle chiavi a due livelli, con chiavi di crittografia dei dati sottoposte a wrapping da una singola chiave master del database. La chiave master è separata dai dati criptati, archiviata al di fuori del database che può essere un archivio chiavi software Oracle o un modulo di sicurezza hardware (HSM) ed è gestita direttamente dall'amministratore della sicurezza del database in un archivio chiavi.
Per TDE sono disponibili due opzioni di archivio chiavi per supportare ambienti diversi con clienti. Per impostazione predefinita, TDE archivia la sua chiave master in Oracle Wallet, un file di archiviazione delle chiavi basato su standard PKCS#12. I portafogli offrono 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 di spazio tabella. Puoi anche applicare la TDE ai backup RMAN.
Abilita prerequisito TDE
Devi preparare il database impostando un archivio chiavi (Oracle Wallet
per 11g) e creare una chiave master iniziale.
Configura 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
Connetti 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 Wallet.
$ mkdir -p $ORACLE_BASE/admin/DB11G/wallet
Utilizza Utilità orapki per creare il wallet e abilitare l'accesso automatico in modo da non dover abilitare Wallet al riavvio.
$ 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 parametriENCRYPTION_WALLET_LOCATION
oWALLET_LOCATION
.Per trovare il percorso Wallet:
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 Wallet 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 a Wallet. Per aggiungere un nome utente e una password a un wallet 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 master iniziale.
SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY Oracle2020;
Controlla 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 Wallet:
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "Password"; SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE;
Abilita TDE a livello di Tablespace
Puoi eseguire operazioni di crittografia utilizzando l'istruzione CREATE TABLESPACE SQL
.
Crittografia di nuovi spazi delle tabelle
Quando crei un nuovo spazio tabella, puoi configurare le relative 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 successivo
SQL> SHOW PARAMETER COMPATIBLE NAME TYPE VALUE ---- ---- ------ compatible string 11.2.0.4.0
Assicurati di aver configurato la chiave di crittografia master TDE. Puoi verificarla in Crea una chiave master iniziale nella sezione Prerequisiti.
Esegui la creazione dello spazio tabella criptato
Per verificare il percorso del file di dati, utilizza:
SQL> select * from dba_data_files ;
Eseguire 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);
La crittografia con "AES256" specifica l'algoritmo di crittografia e la lunghezza della chiave per la crittografia. La clausola ENCRYPT cripta lo spazio delle tabelle.
Se la clausola USING viene omessa, per impostazione predefinita l'algoritmo di crittografia sarà "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 dello spazio delle tabelle 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 viste 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 siano scritti nel file di dati.
SQL> ALTER SYSTEM FLUSH BUFFER_CACHE;
Leggere i dati all'interno del file di dati utilizzando il comando stringhe.
export ORACLE_SID=+ASM asmcmd ASMCMD> strings +DATA/db11g/datafile/encrypted_ts01.dbf
I dati vengono visualizzati in formato binario.
Attiva TDE a livello di colonna della tabella
La crittografia delle colonne TDE può essere utilizzata per criptare i dati di una colonna specifica nelle tabelle di database riservate, come numeri di carte di credito, codici fiscali e numeri di conto personale (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. È una stringa casuale aggiunta ai dati prima di essere criptati, il che fa sì che la ripetizione del testo in chiaro abbia un aspetto diverso quando viene criptato.SALT
rimuove un metodo utilizzato dai malintenzionati per rubare i dati, ovvero i pattern corrispondenti 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 nel database:
SQL> ALTER TABLE employee MODIFY (last_name encrypt); Table altered.
Per aggiungere
SALT
a una colonna criptata in una tabella nel database:SQL> ALTER TABLE employee MODIFY (last_name encrypt salt); Table altered.
Per decriptare una colonna esistente in una tabella nel 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 della 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 degli spazi delle tabelle futuri
Puoi configurare il database Oracle per criptare automaticamente i tablespace futuri 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 delle tabelle 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 per quelli in locale. Se fornisci la clausolaENCRYPTION
, tuttavia, l'algoritmo specificato ha la precedenza suAES128
.DDL
cripta lo spazio delle tabelle utilizzando l'impostazione specificata della clausolaENCRYPTION
diCREATE TABLESPACE
, sia per gli ambienti cloud che on-premise.CLOUD_ONLY
(non applicabile nel nostro caso d'uso) si applica solo a un ambiente Oracle Cloud.CLOUD_ONLY
è l'impostazione predefinita.
Crittografia dello spazio delle tabelle TDE o delle colonne TDE?
SELEZIONA LA CRIPZIONE COLONNA TDE SE | SELEZIONA LA CRITTOGRAFIA TDE TABLESPACE SE |
---|---|
La posizione delle informazioni sensibili è nota | La posizione delle informazioni sensibili è sconosciuta |
Meno del 5% di tutte le colonne della richiesta sono candidati per la crittografia | La maggior parte dei dati dell'applicazione è considerata sensibile oppure nel tuo settore si applicano molteplici mandati di sicurezza e privacy a livello nazionale e internazionale |
Il tipo e la lunghezza dei dati sono supportati dalla crittografia delle colonne TDE | Non tutti i tipi di dati che contengono informazioni sensibili sono supportati dalla crittografia delle colonne TDE |
I candidati per la crittografia non sono colonne con chiave esterna | I candidati per la crittografia sono colonne di chiave esterna |
Gli indici rispetto ai candidati di crittografia sono normali indici B-tree | Gli indici di candidati di crittografia sono indici funzionali |
L'applicazione non esegue scansioni di intervalli su 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 di selezione o aggiornamento dei valori criptati, dalle dimensioni dei dati criptati e da altre variabili | Impatto costante sul rendimento inferiore al 10% |
Se vuoi trarre vantaggio dall'accelerazione di crittografia hardware | |
Se vuoi sfruttare contemporaneamente i vantaggi di crittografia e compressione. |
Crittografia di backup RMAN
I set di backup vengono criptati mediante un algoritmo elencato in V$RMAN_ENCRYPTION_ALGORITHMS
. RMAN può criptare in modo trasparente i dati scritti nei set di backup e decriptare questi set di backup quando sono necessari in un'operazione RESTORE
. RMAN offre tre modalità di crittografia:
transparent,
protetta da password
e
doppia.
Per utilizzare la crittografia in modalità trasparente (impostazione predefinita), è necessario usare Oracle Encryption Wallet.
Per utilizzare la modalità password, il DBA deve fornire una password che verrà utilizzata per la crittografia. Puoi impostare la modalità password tramite
SET ENCRYPTION ON IDENTIFIED BY password only
.Utilizzando la crittografia dual mode, puoi utilizzare Oracle Wallet o una password per la decriptazione. Puoi impostare la modalità doppia tramite il giorno
SET ENCRYPTION ON IDENTIFIED BY password
.
Configurazione della crittografia di backup RMAN
Configura Oracle Wallet.
Configura RMAN per utilizzare la crittografia.
Configura la modalità di crittografia RMAN. Questo esempio utilizza la modalità doppia. 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
esegue l'override delle impostazioni di crittografia specificate dal comandoCONFIGURE ENCRYPTION
, che utilizza la crittografia trasparente per impostazione predefinita.Configura l'algoritmo di crittografia del backup predefinito.
Per un elenco di algoritmi di crittografia RMAN, esegui una query sulla vista
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 sono disponibili le chiavi di decriptazione richieste, i backup criptati vengono decriptati automaticamente durante il ripristino e il ripristino. Ogni set di backup riceve una chiave distinta. La chiave è archiviata in formato criptato nello spazio di backup. Il backup viene decriptato con chiavi ottenute da una password fornita dall'utente o dall'archivio chiavi software Oracle.
La crittografia del backup trasparente supporta sia l'archivio chiavi del software di accesso automatico sia l'archivio chiavi del software basato su password. Quando utilizzi l'archivio chiavi del software di accesso automatico, le operazioni di backup criptato possono essere eseguite in qualsiasi momento, poiché l'archivio chiavi di accesso automatico è sempre aperto. Quando utilizzi il keystore del software basato su password, l'archivio chiavi deve essere aperto prima di poter eseguire la crittografia di backup.
Se utilizzi un archivio chiavi ad accesso automatico, non eseguirne il backup insieme ai dati di backup criptati perché gli utenti possono leggere i backup criptati se hanno sia i backup sia l'archivio chiavi di accesso automatico. È sicuro eseguire il backup dell'archivio chiavi Oracle perché questo tipo di archivio chiavi non può essere utilizzato senza la password dell'archivio chiavi.
Se alcune colonne del database sono criptate con la crittografia delle colonne TDE (Transparent DataEncryption) e se il backup di queste colonne viene eseguito utilizzando la crittografia del backup, queste 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 restituite nel formato criptato originale.
Se perdi l'archivio chiavi Oracle, non potrai ripristinare backup criptati in modo trasparente. Inoltre, se dimentichi o perdi la password utilizzata per criptare un backup criptato, non puoi ripristinare il backup.