Pages

2 Şubat 2011 Çarşamba

Oracle 11g üzerinde tablespace şifreleme metodu

Oracle 10g sürümünde Transparent Data Encryption (TDE) özelliği hayatımıza girdi. Ancak bu güzelliğin eksik yanı şifrelemenin sadece tekil tablo kolon seviyesinde yapılabilmesiydi. Artık Oracle 11g sürümünden itibaren şifrelemeyi tablespace seviyesinde etkinleştirebilmekte ve böylece şifreleme tablespace bünyesindeki her tabloya otomatik olarak miras kalmaktadır.

Şimdi tablespace seviyesinde şifrelemenin adımlarını inceleyelim.

  1. Öncelikle aşağıda görüldüğü üzere sqlnet.ora dosyası içerisinde şifreleme cüzdan(encyrption wallet) lokasyonu belirlemek zorundayız.
ENCRYPTION_WALLET_LOCATION=
(SOURCE=(METHOD=FILE)(METHOD_DATA=
(DIRECTORY=/u01/app/oracle/db_1/admin/leven202/wallet)))

  1. Ardından cüzdan için şifreleme anahtarı sağlayacağız. Bu anahtar cüzdanı açmak için kullanılacak.
SQL> ALTER SYSTEM SET ENCRYPTION KEY AUTHENTICATED BY “pWd2011AnT”;
System altered.

  1. Sqlnet.ora dosyası içinde cüzdan için belirlediğimiz lokasyonda ‘ewallet.p12 adında dosyanın oluştuğunu kontrol ediyoruz. Aşağıdaki komut aynı zamanda cüzdanı açacaktır ve bir daha açmaya çalıştığımızda hata mesajı alacağız.
SQL> !ls /u01/app/oracle/admin/leven202/wallet
ewallet.p12

SQL> ALTER SYSTEM SET WALLET OPEN IDENTIFIED BY “pWd2011AnT”;
ALTER SYSTEM SET WALLET OPEN IDENTIFIED BY “pWd2011AnT”
*
ERROR at line 1:
ORA-28354: wallet already open

  1. Şimdi şifreli tablespace oluşturuyoruz ve şifreleme algoritmasını belirtiyoruz. Örnekte ‘AES256′ kullanacağız. Eğer belirtilmezse varsayılan değer ‘AES128′ kullanılmaktadır. Bununla beraber DEFAULT STORAGE (ENCRYPT) takısıda eklenmelidir. 
SQL> create tablespace encrypt_tbs
          datafile ‘/u02/oradata/leven202/encrypt_tbs01.dbf’ size 250m
          ENCRYPTION USING ‘AES256′
          DEFAULT STORAGE (ENCRYPT);
Tablespace created.

SQL> alter user hr quota unlimited on encrypt_tbs;
User altered.

  1. Ardından HR kullanıcı olarak bağlanıyor ve şifreli tablespace içerisinde bir tablo oluşturuyoruz.
SQL> conn hr/hr
Connected.
SQL> create table TEST_ENCRPTED_TBL
          as select * from employees
          tablespace encrypt_tbs;
Table created.
SQL> insert into TEST_ENCRPTED_TBL
          select * from employees;
107 row created.
SQL> commit;
Commit complete

0 yorum:

Yorum Gönder