نحوه پیکربندی TDE در اوراکل نسخه 11g و 12c را قبلا مورد بررسی قرار دادیم و در این متن قصد داریم به پیکربندی TDE در اوراکل 18c و 19c بپردازیم.
کانفیگ TDE در اوراکل نسخه 19c، تفاوت زیادی با نسخه 12c ندارد و مشابه نسخه های قبلی، مسیر فایل (wallet(keystore را می توان با کمک پارامترENCRYPTION_WALLET_LOCATION در فایل sqlnet.ora تنظیم کرد.
البته در کنار این پارامتر، اوراکل از نسخه 18c، دو پارامتر با نامهای tde_configuration و wallet_root را هم اضافه کرده و توصیه می کند که به جای استفاده از پارامتر SQLNET.ENCRYPTION_WALLET_LOCATION، از این دو پارامتر استفاده شود و اصطلاحا SQLNET.ENCRYPTION_WALLET_LOCATION را deprecate کرده است.
پارامتر wallet_root، مسیری که قرار است keystore در آن ایجاد شود را مشخص می کند.
SQL> alter system set wallet_root=’/19c/home/wallet’ scope=spfile;
System altered.
و بعد از تنظیم این پارامتر باید دیتابیس را restart کرد:
SQL> startup force;
پارامتر tde_configuration هم نوع keystore را مشخص خواهد کرد.
SQL> alter system set tde_configuration=”KEYSTORE_CONFIGURATION=FILE” SCOPE=BOTH;
System altered.
SQL> startup force;
توجه: keystore می تواند از نوع file و یا HSM باشد.
ایجاد keystore و تنظیم master key
1.برای ایجاد فایل keystore در مسیر تنظیم شده، می توان دستور زیر را اجرا کرد:
SQL> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE IDENTIFIED BY p;
keystore altered.
با اجرای این دستور، دایرکتوری tde در مسیر wallet_root ایجاد خواهد شد و در زیر این دایرکتوری tde، فایل keystore ایجاد می شود:
[oracle@oLinux7 ~]$ cd /19c/home/wallet/
[oracle@oLinux7 wallet]$ ls -l
drwxr-x— 2 oracle oinstall 25 Jan 11 03:16 tde
[oracle@oLinux7 wallet]$ cd tde
[oracle@oLinux7 tde]$ ls -l
-rw——- 1 oracle oinstall 2555 Jan 11 03:16 ewallet.p12
2.دستور زیر keystore را در وضعیت open قرار خواهد داد:
SQL> select WRL_PARAMETER,status from v$encryption_wallet;
WRL_PARAMETER STATUS
———————— ———-
/19c/home/wallet/tde/ CLOSED
SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY p;
keystore altered.
SQL> select WRL_PARAMETER,status from v$encryption_wallet;
WRL_PARAMETER STATUS
———————— ——————–
/19c/home/wallet/tde/ OPEN_NO_MASTER_KEY
3.تنظیم master key با اجرای دستور زیر قابل انجام خواهد بود:
SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY p WITH BACKUP;
keystore altered.
SQL> select WRL_PARAMETER,status,WALLET_TYPE from v$encryption_wallet;
WRL_PARAMETER STATUS WALLET_TYPE
—————————————- —— ——————–
/19c/home/wallet/tde/ OPEN PASSWORD
توجه: اگر سابقه از دست دادن keystore را در این دیتابیس داریم، ممکن است با خطای زیر مواجه شویم:
SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY p WITH BACKUP;
ORA-28374: typed master key not found in wallet
در این صورت می توانیم با کمک hidden parameter زیر، از keystore و master key قبلی صرف نظر کنیم:
SQL> ALTER SYSTEM SET “_db_discard_lost_masterkey”=TRUE SCOPE=MEMORY;
System altered.
4.برای آنکه keystore بعد از هر بار استارت شدن دیتابیس، به صورت خودکار در وضعیت open قرار بگیرد، می توانیم دستور زیر را اجرا کنیم:
SQL> ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE IDENTIFIED BY p;
keystore altered.
با اجرای این دستور، همراه با اولین restart دیتابیس، WALLET_TYPE از حالت PASSWORD به AUTOLOGIN تغییر خواهد کرد:
SQL> select WRL_PARAMETER,status,WALLET_TYPE from v$encryption_wallet;
WRL_PARAMETER STATUS WALLET_TYPE
——————— —— ——————–
/19c/home/wallet/tde/ OPEN AUTOLOGIN
پشتیبان گیری از فایل keystore
با کمک دستور زیر می توان از فایل keystore بکاپ گرفت:
SQL> ADMINISTER KEY MANAGEMENT BACKUP KEYSTORE USING ‘bkp’ FORCE KEYSTORE IDENTIFIED BY p;
keystore altered.
[oracle@oLinux7 tde]$ ls -l *bkp*
-rw——- 1 oracle oinstall 5259 Jan 11 07:07 ewallet_2021011112074757_bkp.p12
همچنین با اجرای دستور زیر می توان مسیر فایل بکاپ را از مسیر پیش فرض خارج کرد:
SQL> ADMINISTER KEY MANAGEMENT BACKUP KEYSTORE USING ‘bkp’ FORCE KEYSTORE IDENTIFIED BY p TO ‘/19c/base’;
keystore altered.