În acest articol vă voi arăta cum se folosește serverul Oracle Key Vault pentru a stoca un virtual wallet partajat pentru serverul Oracle Database. Oracle Key Vault este un centralizator de chei care oferă gestionarea ciclului de viață al cheilor, alerte (de ex. Expirarea cheii), rapoarte și alte funcții administrative.
Implicit, cheia de criptare utilizată pentru criptarea în TDE este stocată într-un software wallet în sistemul de fișiere al serverului de baze de date. Problemele pe care le aveți cu wallet-ul pe un sistem de fișiere în implementări TDE mari sunt
– erori de utilizator precum parolă uitată,
– skip peste rotirea cheilor,
– ștergerea accidentală a wallet-ului,
– etc
Voi începe să configurez o cheie de criptare utilizând TDE cu un software wallet pe sistemul de fișiere. Nu voi detalia prea mult acest proces deoarece este identic cu articolul anterior de aici. În cele din urmă, voi migra wallet-ul în Oracle Key Vault.
Pentru mai multe informații despre Oracle Key Vault, faceți clic aici.
Environment
Mediul pe care l-am folosit constă în următoarele:
- Oracle Database 12.2.0.1 instalat pe Oracle Linux Server release 7.5
- Oracle Key Vault server is version 12.1.0.8.0
Pentru instalarea Oracle Key Vault am folosit o mașină virtuală cu resursele minime: x86–64 2 cores, 8 GB of RAM, 210 GB disk space, interfața de rețea este din aceeași clasa cu mașina virtuală din care face parte și baza de date, intre ele nu exista nici un firewall.
Kitul de instalare l-am descarcat de pe https://edelivery.oracle.com/ după ce am cautat după Key Vault și am selectat Oracle Key Vault 12.2.0.8.0
Instalare Oracle Key Vault
Mașina virtuală a bootat de pe discul OKV BP8 Disc 1 descărcat mai devreme.
Meniul cu care suntem întâmpinați la prima bootare este cel din imaginea de mai jos:
După câteva minute trebuie sa alegem o parola pe care o vom folosi mai târziu
Dacă parola tastata îndeplinește rigorile de complexitate impuse de Oracle Key Vault atunci vom primi mesajul: passphrase was successfully configured. Press Enter. După care va trebui să selectăm interfața de rețea din următorul meniu:
Selectam interfața afișată și trecem la următorul meniu
Ultimul meniu din timpul instalării este cel în care trebuie sa alegem ip-ul appliance-ului și gateway-ul acestuia:
După reboot suntem întâmpinați de următorul meniu:
Post instalare Oracle Key Vault
După ce s-a finalizat procesul de instalare vor trebui realizați pașii post instalare accesând dintr-un browser pagina https cu ip-ul appliance-ului setat mai devreme.
Primul pas este să re-introducem parola setată mai devreme în timpul instalării
Dacă parola este introdusă corect atunci este afișat meniu de post-instalare
După completarea tuturor câmpurilor ne putem loga cu utilizatorul și parola setată în pașii post-install
Configurare Transparent Data Encryption
Pentru următorul pas ne mutam pe mașina virtuală unde este instalată baza de date. In cazul meu baza este instalată cu toate opțiunile implicite iar pentru a folosi TDE cu software wallet am urmat pașii de mai jos. Pentru documentarea detaliată a ceea ce presupune software wallet urmăriți articolul Transparent Data Encryption în Oracle 11g.
$ cat sqlnet.ora #SQLNET.AUTHENTICATION_SERVICES = (NONE) ENCRYPTION_WALLET_LOCATION= (SOURCE= (METHOD=FILE) (METHOD_DATA= (DIRECTORY=/opt/oracle/product/12.2.0/dbhome_1/network/admin/wallet) ) ) $ sqlplus "/ as sysdba" SQL> startup SQL> select INST_ID,WRL_TYPE,STATUS from gV$encryption_wallet; INST_ID WRL_TYPE STATUS ---------- -------------------- ------------------------------ 1 FILE NOT_AVAILABLE SQL> alter system set encryption key identified by "*****"; System altered. SQL> select INST_ID,WRL_TYPE,STATUS from gV$encryption_wallet; INST_ID WRL_TYPE STATUS ---------- -------------------- ------------------------------ 1 FILE OPEN SQL>
Configurare Endpoints și instalarea clientului Key Vault
Ne logam cu utilizatorul și parola setate la pasul post-install
In tabul Keys & Wallets click pe butonul Create se completeaza numele wallet-ului dupa care click pe Save
Adăugare Endpoint, în tabul Endpoints click pe Add iar în dreptul câmpului Default Wallet se selectează wallet-ul creat la pasul anterior
Când este afisată pagina Endpoint, copiați conținutul câmpului Enrollment Token
Instalare client Key Vault
In pagina de login click pe Endpoint Enrollment and Software Download
După ce se deschide pagina Enroll Endpoint & Download Software se completează câmpul Enrollment Token cu valoarea token-ului copiat mai devreme
După ce ați făcut submit la token click pe Enroll și salvați fișierul okvclient.jar pe mașina virtuala unde este instalata baza de date
$ /opt/oracle/product/12.2.0/dbhome_1/jdk/bin/java -jar okvclient.jar -d /home/oracle/okvutil -v Detected JAVA_HOME: /opt/oracle/product/12.2.0/dbhome_1/jdk/jre Enter new Key Vault endpoint password ( for auto-login): Confirm new Key Vault endpoint password: The endpoint software for Oracle Key Vault installed successfully. $
Se rulează script root.sh cu utilizatorul root pentru a copia librăria liborapkcs.so în directorul /opt/oracle/extapi/64/hsm/oracle/1.0.0/
# /home/oracle/okvutil/bin/root.sh Creating directory: /opt/oracle/extapi/64/hsm/oracle/1.0.0/ Copying PKCS library to /opt/oracle/extapi/64/hsm/oracle/1.0.0/ Setting PKCS library file permissions Installation successful. [root@localhost okvutil]#
Migrarea Wallet-ului
Se închide wallet-ul din baza de date:
SQL> alter system set encryption wallet close identified by "****";
Se încarcă wallet-ul existent in Key Vault:
$/home/oracle/okvutil/bin/okvutil upload -l /opt/oracle/product/12.2.0/dbhome_1/network/admin/wallet -t WALLET -g orcl_wallet
Se modifica tipul wallet-ului în fișierul $ORACLE_HOME/network/admin/sqlnet.ora din FILE în HSM:
$ cat sqlnet.ora #SQLNET.AUTHENTICATION_SERVICES = (NONE) ENCRYPTION_WALLET_LOCATION= (SOURCE= (METHOD=HSM) (METHOD_DATA= (DIRECTORY=/opt/oracle/product/12.2.0/dbhome_1/network/admin/wallet) ) ) $
Se verifica status-ul wallet-ului din view-ul v$encryption_wallet
SQL> select INST_ID,WRL_TYPE,STATUS from gV$encryption_wallet; INST_ID WRL_TYPE STATUS ---------- -------------------- ------------------------------ 1 FILE NOT_AVAILABLE 1 HSM CLOSED SQL>
Migrarea cheilor în HSM:
SQL> alter system set encryption key identified by "****" migrate using "*****";
Se verifica din nou status-ul din view-ul v$encryption_wallet
SQL> select INST_ID,WRL_TYPE,STATUS from gV$encryption_wallet; INST_ID WRL_TYPE STATUS ---------- -------------------- ------------------------------ 1 FILE NOT_AVAILABLE 1 HSM OPEN SQL>
In final se poate observa din Key Vault in dreptul endpoint-ului creat de noi status Enrolled iar daca facem click pe endpoint name regasim Wallet Items