Oracle 12.2 ile Online tablespace şifreleme TDE (Transparent Data Encryption)

Oracle 12c release 2 versiyonuyla gelen özellik sayesinde artık tablespaceleri canlı olarak şifreleyebiliyoruz(ENCRYPT).

Öncelikle bir tablespace’i encpt etmediğimiz durumlarda karşılaşabileceğimiz durumları inceleyelim.

12.2 veritabanımıza bağlanarak users tablespace üzerinde bir tablo oluşturup, bu tabloya bir kayıt ekleyeceğiz. Sonrasında da sadece işletim sisteminde read yetkisi olan birinin, tabloya yazdığımız bu datayı görüp göremediğini kontrol edeceğiz.

[oracle@exadata_node1 ~]#sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Tue Apr 11 15:59:28 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> create table tahsinc.very_important_data
( name varchar2(50),
 kimlik varchar2(20)
)
tablespace users; 2 3 4 5
Table created.
SQL> insert into tahsinc.very_important_data values ('Tahsin','12345678901234567890');
1 row created.
SQL> commit;
Commit complete.
SQL> alter system checkpoint;
System altered.

Checkpoint komutu çalıştırarak yaptığımız insert işleminin datafile a yazıldığına emin oluyoruz. Sonrasında ilgili datafile’ı asmden normal bir dizine kopyalarak strings komutu ile içeriğine bakıyoruz.

Ekran görüntüsünde de gördüğümüz üzere Tabloya insert olarak attığımız değerleri açık olarak görebiliyoruz. Bu durumda datafilelarımızı bir şekilde kötü ellere düşerse veritabanı kurmadan bile verilerimize erişme şansı oluyor.

Bunun önüne geçmek için Oracle ın sağladığı TDE özelliği ile artık online olarak da tablespacelerimizi encrypt edebiliyoruz.

Tabloyu encrypt etmek için öncelikle bir ketstore oluşturmamız gerekiyor.  v$encryption_wallet  tablosundan veritabanının mevcutta gördüğü wallet lokasyonunu kontrol ediyoruz. Bizim veritabanımızda bu alan default olarak  /u01/app/oracle/admin/TESTDB/wallet olduğundan aşağıdaki işlemleri bu dizine göre yapacağız. Sırasyıla aşağıdaki komutları çalıştırıyoruz.

ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/u01/app/oracle/admin/TESTDB/wallet' identified by Deneme123;
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY Deneme123;
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY Deneme123 with backup;

Keystore’u tanımladıktan sonra aşağıdaki şekilde talbespace imizi online olarak encrypt edebiliyoruz. Bizde datafile asm üzerinde tutulduğundan db file name management auto olduğundan yeni tablespace ismi vermiyoruz. Ama datafile’ınız asm üzerinde değilse komut sonuna FILE_NAME_CONVERT=(‘users’,’users_enc_ts’)  komutunu ekleyerek tablespace’in adını da değiştirebilirsiniz.

alter tablespace users ENCRYPTION ONLINE USING 'AES192' ENCRYPT;

Bu işlem sonrasında tekrar işletim sistemi üzerinden  strings komutu ile datafile’ın içeriğine bakıyoruz. eklediğimiz kayıtları datafile içerisinde grepliyoruz ancak bir sonuç alamıyoruz. Bu da datafile’ımızın başarılı bir şekilde encrypt edildiğini gösteriyor.

 

Leave a Reply

Your email address will not be published. Required fields are marked *