در اوراکل نسخه 21c و 23ai می توانیم در زمان ایجاد دیتابیس از طریق ابزار dbca، قابلیت TDE را برای همه tablespaceها{اعم از سیستمی و غیرسیستمی} فعال کنیم تا دیتابیس از همان ابتدا به صورت کامل در لایه سیستم عامل Encrypt شود.
برای استفاده از TDE، گزینه های زیر همراه با اجرای DBCA قابل تنظیم هستند:
[-'configureTDE' <true | false> Specify true to configure TDE wallet] [-'encryptPDBTablespaces' <Specify ALL to encrypt all Tablespaces or A comma separated list of name:value pairs with tablespace encryption to true/false. For example SYSTEM:true,SYSAUX:false>] [-'encryptTablespaces' <Specify ALL to encrypt all Tablespaces or A comma separated list of name:value pairs with tablespace encryption to true/false. For example SYSTEM:true,SYSAUX:false>] [-'pdbTDEPassword' <Specify password for PDB TDE wallet>] [-'primaryDBTdeWallet' <Specify the location for TDE wallet of primary database>] [-'sourcePdbTDEPassword' <Specify password for source PDB TDE wallet and it is used only in creation of PDB from existing PDB which has TDE wallet>] [-'sourceTdeWalletPassword' <Specify password for source database TDE wallet>] [-'tdeAlgorithm' <Specify the TDE Algorithm Type.>] [-'tdeWalletLoginType' <Specify the TDE Wallet Login Type, PASSWORD | AUTO_LOGIN | LOCAL_AUTO_LOGIN. Default is PASSWORD for SI and AUTO_LOGIN is default for RAC] [-'tdeWalletModeForPDB' <Type of keystore, either UNITED or ISOLATED. Default is UNITED>] [-'tdeWalletPassword' <Specify password for TDE wallet>] [-'tdeWalletPathInTarFile' <value>] [-'tdeWalletRoot' <Specify the location for TDE wallet root init parameter>]
گزینه configureTDE نقش مهمتری را در این زمینه ایفا می کند و برای استفاده از TDE باید آن را به TRUE تنظیم کنیم پارامترهای مهم دیگری هم در این زمینه قابل تنظیم هستند نظیر:
tdeWalletRoot: مسیر فایل wallet از طریق این پارامتر می شود.
tdeWalletPassword:پسورد wallet از طریق این پارامتر قابل تنظیم است.
encryptPDBTablespaces: اگر قصد داریم tablespaceهای PDBها هم به صورت Encrypt ایجاد شوند، باید این پارامتر را به ALL تنظیم کنیم.
encryptTablespaces: با تنظیم این پارامتر به ALLء، tablespaceهای سیستمی هم encrypt خواهند شد.
قبل از اجرای dbca، باید پوشه ای که قرار است wallet در آن ایجاد شود را بسازیم.
mkdir -p /oracle23ai/TDE/wallet
در ادامه با دستور dbca دیتابیسی را به صورت Encrypt(در لایه OS) ایجاد می کنیم:
[oracle@OEL8 ~]$ dbca -silent -createDatabase -templateName FREE_Database.dbc -gdbName IraniDB -adminManaged -sid FREE -sysPassword SDFSwrtmmm___125 -systemPassword SDFSwrtmmm___125 -createAsContainerDatabase TRUE -useLocalUndoForPDBs TRUE -characterSet AR8MSWIN1256 -emConfiguration NONE -storageType FS -datafileDestination /oracle23ai/oradata -databaseConfigType SINGLE -configureTDE TRUE -tdeWalletRoot /oracle23ai/TDE/wallet -tdeWalletLoginType AUTO_LOGIN -TdeWalletPassword 'Heshmattolah_MohaJerani' -encryptPDBTablespaces ALL -encryptTablespaces ALL -numberOfPDBs 1 -pdbName babol
Prepare for db operation 8% complete Copying database files 9% complete 31% complete Creating and starting Oracle instance 32% complete 33% complete 36% complete 40% complete 43% complete 46% complete Completing Database Creation 51% complete 53% complete 54% complete Creating Pluggable Databases 58% complete 77% complete Executing Post Configuration Actions 100% complete Database creation complete. For details check the logfiles at: /opt/oracle/cfgtoollogs/dbca/IraniDB. Database Information: Global Database Name:IraniDB System Identifier(SID):FREE Look at the log file "/opt/oracle/cfgtoollogs/dbca/IraniDB/IraniDB.log" for further details.
بعد از اجرای dbca خواهیم دید فایل wallet در مسیر مورد نظر ایجاد شده است:
[oracle@OEL8 tde]$ ll -rw------- 1 oracle oinstall 2600 Jul 24 22:21 cwallet_2024072417510890.sso -rw------- 1 oracle oinstall 3864 Jul 24 22:25 cwallet_2024072417551956.sso -rw------- 1 oracle oinstall 5128 Jul 24 22:25 cwallet.sso -rw------- 1 oracle oinstall 2555 Jul 24 22:21 ewallet_2024072417510890.p12 -rw------- 1 oracle oinstall 3819 Jul 24 22:25 ewallet_2024072417551956.p12 -rw------- 1 oracle oinstall 5083 Jul 24 22:25 ewallet.p12
تمام tablespaceها در CDB$ROOT و PDB به صورت Encrypt ایجاد شده اند:
sqlplus "/as sysdba" SQL*Plus: Release 23.0.0.0.0 - Production on Wed Jul 24 22:02:04 2024 Version 23.4.0.24.05 Copyright (c) 1982, 2024, Oracle. All rights reserved. Connected to: Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free Version 23.4.0.24.05
SQL> select TABLESPACE_NAME, ENCRYPTED, con_id from cdb_tablespaces order by con_id, TABLESPACE_NAME; TABLESPACE_NAME ENC CON_ID ------------------------------ --- ---------- SYSAUX YES 1 SYSTEM YES 1 TEMP YES 1 UNDOTBS1 YES 1 USERS YES 1 SYSAUX YES 3 SYSTEM YES 3 TEMP YES 3 UNDOTBS1 YES 3 USERS YES 3 10 rows selected.
الگوریتم پیش فرض AES256 است:
SQL> SELECT TS#,ENCRYPTIONALG,ENCRYPTEDTS FROM V$ENCRYPTED_TABLESPACES; TS# ENCRYPT ENC ---------- ------- --- 0 AES256 YES 1 AES256 YES 4 AES256 YES 2 AES256 YES 0 AES256 YES 1 AES256 YES 2 AES256 YES 6 AES256 YES 3 AES256 YES 3 AES256 YES 10 rows selected.