12
Emrah UYSAL www.emrahuysal.com 1 TABLESPACE ENCRYPTION ORACLE 11G Oracle 11G’nin yeni gelen özelliklerinden biride tablespace seviyesinde encryption yapılabilmesidir.Tabiiki yine bunu yapabilmek için wallet’ın aktif ve açık olması gerekmektedir.Wallet’ın nasıl açılacağına kısaca yine bakarsak, Wallet’I şu şekilde aktive edeceğiz.ilk olarak owm dediğimiz,Oracle wallet manager tool’unu açıp gerekli çalışmayı yapacağız.

Emrah!UYSAL! ! 1!UYSAL! ! 1! TABLESPACE ENCRYPTION ORACLE 11G Oracle 11G’nin yeni gelen özelliklerinden biride tablespace seviyesinde encryption yapılabilmesidir.Tabiiki yine bunu

Embed Size (px)

Citation preview

Page 1: Emrah!UYSAL! ! 1!UYSAL! ! 1! TABLESPACE ENCRYPTION ORACLE 11G Oracle 11G’nin yeni gelen özelliklerinden biride tablespace seviyesinde encryption yapılabilmesidir.Tabiiki yine bunu

 

Emrah  UYSAL   www.emrahuysal.com   1  

TABLESPACE ENCRYPTION ORACLE 11G Oracle 11G’nin yeni gelen özelliklerinden biride tablespace seviyesinde encryption yapılabilmesidir.Tabiiki yine bunu yapabilmek için wallet’ın aktif ve açık olması gerekmektedir.Wallet’ın nasıl açılacağına kısaca yine bakarsak, Wallet’I şu şekilde aktive edeceğiz.ilk olarak owm dediğimiz,Oracle wallet manager tool’unu açıp gerekli çalışmayı yapacağız.

Page 2: Emrah!UYSAL! ! 1!UYSAL! ! 1! TABLESPACE ENCRYPTION ORACLE 11G Oracle 11G’nin yeni gelen özelliklerinden biride tablespace seviyesinde encryption yapılabilmesidir.Tabiiki yine bunu

 

Emrah  UYSAL   www.emrahuysal.com   2  

Şifre olarak Oracle321 giriyorum,istenirse farklı bir şifre girilebilir.

Page 3: Emrah!UYSAL! ! 1!UYSAL! ! 1! TABLESPACE ENCRYPTION ORACLE 11G Oracle 11G’nin yeni gelen özelliklerinden biride tablespace seviyesinde encryption yapılabilmesidir.Tabiiki yine bunu

 

Emrah  UYSAL   www.emrahuysal.com   3  

Page 4: Emrah!UYSAL! ! 1!UYSAL! ! 1! TABLESPACE ENCRYPTION ORACLE 11G Oracle 11G’nin yeni gelen özelliklerinden biride tablespace seviyesinde encryption yapılabilmesidir.Tabiiki yine bunu

 

Emrah  UYSAL   www.emrahuysal.com   4  

Page 5: Emrah!UYSAL! ! 1!UYSAL! ! 1! TABLESPACE ENCRYPTION ORACLE 11G Oracle 11G’nin yeni gelen özelliklerinden biride tablespace seviyesinde encryption yapılabilmesidir.Tabiiki yine bunu

 

Emrah  UYSAL   www.emrahuysal.com   5  

Page 6: Emrah!UYSAL! ! 1!UYSAL! ! 1! TABLESPACE ENCRYPTION ORACLE 11G Oracle 11G’nin yeni gelen özelliklerinden biride tablespace seviyesinde encryption yapılabilmesidir.Tabiiki yine bunu

 

Emrah  UYSAL   www.emrahuysal.com   6  

Daha sonra sqlnet.ora dosyamıza aşağıdaki bilgileri giriyoruz, ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=$ORACLE_BASE/admin/WALLET))) ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=$ORACLE_BASE/admin/EDUCATE/WALLET )))

Page 7: Emrah!UYSAL! ! 1!UYSAL! ! 1! TABLESPACE ENCRYPTION ORACLE 11G Oracle 11G’nin yeni gelen özelliklerinden biride tablespace seviyesinde encryption yapılabilmesidir.Tabiiki yine bunu

 

Emrah  UYSAL   www.emrahuysal.com   7  

ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=$ORACLE_BASE/admin))) ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/u01/app11g/oracle/product/11.2.0/db_1/owm/wallets/oracle))) Encryption key’i aktif ediyoruz bunu yapabilmek için şifre olarak Oracle321 girmiştik tekrar o şifreyi deniyoruz. SQL> alter system set encryption key authenticated by "Oracle321"; System altered. Şimdi aşağıdaki komutu kullanarak wallet’ı açmamız gerek ,böylece wallet artık aktif oluyor. [oracle@rac1 ~]$ sqlplus '/as sysdba' SQL> ALTER SYSTEM SET WALLET OPEN IDENTIFIED BY "Oracle321"; System altered. Artık encryption kullanarak tablespace ve tablo yaratabiliriz. SQL> CREATE TABLESPACE encrypted_ts DATAFILE '/u01/app/oracle/oradata/EDUCATE/encrypted_ts01.dbf' SIZE 128K AUTOEXTEND ON NEXT 64K ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT); Tablespace created. SQL> ALTER USER test QUOTA UNLIMITED ON encrypted_ts; User altered. DBA_TABLESPACES kullanılarak hangi tablespace’in encrypted hangisinin değil görebiliriz. SQL> SELECT tablespace_name, encrypted FROM dba_tablespaces; TABLESPACE_NAME ENC ------------------------------ --- SYSTEM NO UNDOTBS1 NO SYSAUX NO TEMP NO USERS NO UNDOTBS2 NO EXAMPLE NO FBDA_TBS NO FBDA_TBS2 NO TBSSGA NO MYTEMP NO TRANSPORT_TEST_TS_1 NO TEST_TS NO TEST_TS2 NO TEST_TS3 NO ENCRYPTED_TS YES

Page 8: Emrah!UYSAL! ! 1!UYSAL! ! 1! TABLESPACE ENCRYPTION ORACLE 11G Oracle 11G’nin yeni gelen özelliklerinden biride tablespace seviyesinde encryption yapılabilmesidir.Tabiiki yine bunu

 

Emrah  UYSAL   www.emrahuysal.com   8  

Encrypted olmayan bir tablespace’i encrypted hale dönüştüremeyiz.Ancak yeni bir tablespace yaratıp verilerini "ALTER TABLE ... MOVE ..." or "CREATE TABLE ... AS SELECT * FROM ...". yöntemiyle taşıyabiliriz. Örnek olarak yukarıda yarattığımız encrypted tablespace’i kullanan bir tablo / index yaratıp güzel bir test yapabiliriz.Ama unutulmamalıdırki wallet open olmalıdır. SQL> CONN test/test SQL> CREATE TABLE ets_test2 ( id NUMBER(10), data VARCHAR2(50) ) TABLESPACE encrypted_ts; SQL> CREATE INDEX ets_test_idx2 ON ets_test2(data) TABLESPACE encrypted_ts; SQL> INSERT INTO ets_test2 (id, data) VALUES (1, 'This is a secret!'); SQL> COMMIT; Cache te duran bilgilerinde flush yapıyoruzki cache tende erişilme olmasın. [oracle@rac1 ~]$ sqlplus '/as sysdba' SQL> ALTER SYSTEM FLUSH BUFFER_CACHE; Şimdi bu kadar güvenliği aldıktan sonra biri datafile’ı yada ilgili tabloyu içeren export’u herhangi bir hex editörünle açsa bile istediği bilgiye ulaşamıyacaktır. İstenirse tablo’nun kolonları bazındada encryption yapabilmek mümkündür. SQL> CREATE TABLE tde_test ( id NUMBER(10), data VARCHAR2(50) ENCRYPT ) TABLESPACE tde_test; Veri girerkende klasik olarak verilerimizi giriyoruz, SQL> INSERT INTO tde_test (id, data) VALUES (1, 'This is a secret!'); SQL> COMMIT; Performans olarak normal kolon kullanan bir tablo ile encrypted kolon kullanan bir tablo arasındaki farkları görebiliriz.2 adet tablo yaratıp insert durumuna bakalım, SQL> CONN test/test SQL> CREATE TABLE tde_test_1 ( id NUMBER(10), data VARCHAR2(50) ); SQL> CREATE TABLE tde_test_2 ( id NUMBER(10), data VARCHAR2(50) ENCRYPT ); SQL> SET SERVEROUTPUT ON SIZE UNLIMITED

Page 9: Emrah!UYSAL! ! 1!UYSAL! ! 1! TABLESPACE ENCRYPTION ORACLE 11G Oracle 11G’nin yeni gelen özelliklerinden biride tablespace seviyesinde encryption yapılabilmesidir.Tabiiki yine bunu

 

Emrah  UYSAL   www.emrahuysal.com   9  

DECLARE l_loops NUMBER := 1000; l_data VARCHAR2(50); l_start NUMBER; BEGIN EXECUTE IMMEDIATE 'TRUNCATE TABLE tde_test_1'; EXECUTE IMMEDIATE 'TRUNCATE TABLE tde_test_2'; l_start := DBMS_UTILITY.get_time; FOR i IN 1 .. l_loops LOOP INSERT INTO tde_test_1 (id, data) VALUES (i, 'Data for ' || i); END LOOP; DBMS_OUTPUT.put_line('Normal Insert : ' || (DBMS_UTILITY.get_time - l_start)); l_start := DBMS_UTILITY.get_time; FOR i IN 1 .. l_loops LOOP INSERT INTO tde_test_2 (id, data) VALUES (i, 'Data for ' || i); END LOOP; DBMS_OUTPUT.put_line('Encrypted Insert: ' || (DBMS_UTILITY.get_time - l_start)); l_start := DBMS_UTILITY.get_time; FOR i IN 1 .. l_loops LOOP SELECT data INTO l_data FROM tde_test_1 WHERE id = i; END LOOP; DBMS_OUTPUT.put_line('Normal Query : ' || (DBMS_UTILITY.get_time - l_start)); l_start := DBMS_UTILITY.get_time; FOR i IN 1 .. l_loops LOOP SELECT data INTO l_data FROM tde_test_2 WHERE id = i; END LOOP; DBMS_OUTPUT.put_line('Decrypted Query : ' || (DBMS_UTILITY.get_time - l_start)); END; / Encrypted Insert: 32 Normal Query : 5 Decrypted Query : 9 PL/SQL procedure successfully completed. Kolon bazında encryption işlemi external tablolarda da kullanılabilir.Bir örnek olarak deneme yapalım. [oracle@rac1 ~]$ sqlplus '/as sysdba' SQL> create or replace directory ext_dir as '/u01/app11g'; SQL> GRANT READ, WRITE ON DIRECTORY ext_dir TO test; SQL> CONN test/test

Page 10: Emrah!UYSAL! ! 1!UYSAL! ! 1! TABLESPACE ENCRYPTION ORACLE 11G Oracle 11G’nin yeni gelen özelliklerinden biride tablespace seviyesinde encryption yapılabilmesidir.Tabiiki yine bunu

 

Emrah  UYSAL   www.emrahuysal.com   10  

SQL> CREATE TABLE tde_test_1_ext ( id, data ENCRYPT IDENTIFIED BY "myPassword" ) ORGANIZATION EXTERNAL ( TYPE ORACLE_DATAPUMP DEFAULT DIRECTORY ext_dir location ('tde_test_1_ext.txt') ) AS SELECT id, data FROM tde_test_1; Tablo oluştumu diye bakacak olursak, [root@rac1 ~]# cd /u01/app11g/ [root@rac1 app11g]# ls -la total 116 drwxr-xr-x 6 oracle oinstall 4096 Oct 7 15:50 . drwxrwxrwx 6 oracle oinstall 4096 Aug 10 15:38 .. drwxr-xr-x 2 oracle oinstall 4096 Sep 9 18:18 backup drwxr-xr-x 8 oracle oinstall 4096 Aug 18 2009 database drwx------ 2 oracle oinstall 16384 Aug 10 15:12 lost+found drwxr-xr-x 9 oracle oinstall 4096 Aug 14 12:02 oracle -rw-r--r-- 1 oracle oinstall 41 Oct 7 15:50 TDE_TEST_1_EXT_5685.log -rw-r----- 1 oracle oinstall 73728 Oct 7 15:50 tde_test_1_ext.txt [root@rac1 app11g]# vi tde_test_1_ext.txt Tabloyu vi editörünle açsak bile herhangi birşey göremiyeceğiz. Encrypted kolonlar ile ilgili bilgileri dba_encrypted_columns view’ından görebiliriz. SQL> SET LINESIZE 100 SQL> COLUMN owner FORMAT A15 SQL> COLUMN tble_name FORMAT A15 SQL> COLUMN column_name FORMAT A15 SQL> SELECT * FROM dba_encrypted_columns; OWNER TABLE_NAME COLUMN_NAME ENCRYPTION_ALG SAL --------------- ------------------------------ ---------------------------- TEST SECUREFILE_TAB CLOB_DATA AES 192 bits key YES TEST ENCRYPT_TAB CLOB_DATA AES 192 bits key YES TEST TDE_TEST_1 DATA AES 192 bits key YES TEST TDE_TEST_2 DATA AES 192 bits key YES TEST TDE_TEST_1_EXT DATA AES 192 bits key YES Herhangi bir kolonu encrypted etmek içinde aşağıdaki komutu kullanabiliriz. SQL> ALTER TABLE employees MODIFY (emp_ssn VARCHAR2(9) ENCRYPT); Verilerin export metoduyla aktarımı sırasında hatalar alınabilir.Örneğin Exp tool’u kullanarak bir tablomuzu export etmek istedim, [oracle@rac1 ~]$ exp test/test file=/u01/app11g/en.dmp tables=TDE_TEST Export: Release 11.2.0.1.0 - Production on Thu Oct 7 17:07:52 2010

Page 11: Emrah!UYSAL! ! 1!UYSAL! ! 1! TABLESPACE ENCRYPTION ORACLE 11G Oracle 11G’nin yeni gelen özelliklerinden biride tablespace seviyesinde encryption yapılabilmesidir.Tabiiki yine bunu

 

Emrah  UYSAL   www.emrahuysal.com   11  

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options Export done in US7ASCII character set and AL16UTF16 NCHAR character set server uses WE8ISO8859P9 character set (possible charset conversion) About to export specified tables via Conventional Path ... EXP-00107: Feature (COLUMN ENCRYPTION) of column DATA in table TEST.TDE_TEST is not supported. The table will not be exported. Export terminated successfully with warnings. Görüldüğü gibi verimizi export edemedik,peki bir datapump’I deneyelim. [oracle@rac1 ~]$ expdp test/test dumpfile=dump.dump directory=ext_dir tables=TDE_TEST Export: Release 11.2.0.1.0 - Production on Fri Oct 8 13:49:15 2010 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options Starting "TEST"."SYS_EXPORT_TABLE_01": test/******** dumpfile=dump.dump directory=ext_dir tables=TDE_TEST Estimate in progress using BLOCKS method... Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 64 KB Processing object type TABLE_EXPORT/TABLE/TABLE . . exported "TEST"."TDE_TEST" 5.476 KB 1 rows ORA-39173: Encrypted data has been stored unencrypted in dump file set. Master table "TEST"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded ****************************************************************************** Dump file set for TEST.SYS_EXPORT_TABLE_01 is: /u01/app11g/dump.dump Job "TEST"."SYS_EXPORT_TABLE_01" completed with 1 error(s) at 13:49:21 Data pump ile tablomuzun exportunu alabildik.Şimdi bu alınan export başka bir şemaya atalım.Ama öncelikle bir kullanıcı yaratalım. SQL> create user test2 identified by test2; User created. SQL> grant connect,resource,create table,unlimited tablespace to test2; Grant succeeded. SQL> grant read,write on directory ext_dir to test2; Grant succeeded.

Page 12: Emrah!UYSAL! ! 1!UYSAL! ! 1! TABLESPACE ENCRYPTION ORACLE 11G Oracle 11G’nin yeni gelen özelliklerinden biride tablespace seviyesinde encryption yapılabilmesidir.Tabiiki yine bunu

 

Emrah  UYSAL   www.emrahuysal.com   12  

SQL> exit [oracle@rac1 app11g]$ impdp test2/test2 directory=ext_dir dumpfile=dumpen.dump REMAP_SCHEMA=test:test2 Import: Release 11.2.0.1.0 - Production on Fri Oct 8 14:24:31 2010 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options Master table "TEST2"."SYS_IMPORT_FULL_01" successfully loaded/unloaded Starting "TEST2"."SYS_IMPORT_FULL_01": test2/******** directory=ext_dir dumpfile=dumpen.dump REMAP_SCHEMA=test:test2 Processing object type TABLE_EXPORT/TABLE/TABLE Processing object type TABLE_EXPORT/TABLE/TABLE_DATA . . imported "TEST2"."TDE_TEST" 5.484 KB 1 rows Job "TEST2"."SYS_IMPORT_FULL_01" successfully completed at 14:24:36 [oracle@rac1 ~]$ sqlplus '/as sysdba' SQL*Plus: Release 11.2.0.1.0 Production on Fri Oct 8 13:55:19 2010 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> conn test2/test2 Connected. SQL> select * from TDE_TEST; ID DATA ---------- -------------------------------------------------- 1 This is a secret! Görüldüğü gibi datamızı başarılı olarak import edebildik.Eğer bu dosyayı farklı bir veritabanına atmak isteseydik atamıycak ve hata alacaktık wallet nedeniyle.Ama export alırken datanın encrypted olarak kesin olarak alınmasını istiyorsak hem export hemde import syntax’ına ENCRYPTION_PASSWORD parametresini koymalıyız.Örneğin [oracle@rac1 app11g]$ expdp test/test dumpfile=dumpen2.dump directory=ext_dir tables=TDE_TEST ENCRYPTION_PASSWORD=Oracle321