建立一個加密表空間並對錶內資料進行加密的示例

gholay發表於2014-01-05

基於表空間的加密概念
對整個表空間進行加密,表空間中的所有物件都是加密的,例如 在加密表空間上建立一個表,表的所有欄位都是加密狀態,適用Oracle11gR2以上版本。
表空間加密資料的優點:不會再收到欄位加密的限制,例如 欄位型別,索引型別,需要設定no salt才可見索引等。
表空間加密資料的缺點:外部大物件不支援,exp/imp邏輯匯出匯入不支援但可以用expdp/impdp資料泵。
加密表空間與wallet的關係
1.Oracle 表空間的加密與解密完全是基於wallet錢包中的金鑰進行的。
2.如果wallet是open狀態,那麼我們可以使用其中的金鑰,進行加密與解密處理。
3.如果wallet是close狀態,那麼我們就拿不到金鑰,此時加密表空間是不可用的,例如 查詢 修改 建立 都不允許。
TDE的使用場合
1.保護敏感資料,禁止未授權的訪問,只有開啟錢包才能檢視資料。
2.防止資料丟失,當加密表空間的資料檔案被拷貝走了,如果你沒有金鑰是無法還原資料的。
3.防止資料被截獲,當在網路傳輸時加密後的資訊更安全,即使截獲了也無法得知內容。
建立一個加密表空間及資料表示例
1.wallet未開啟時無法建立加密表空間。
BYS@ bys001>create tablespace encry_test datafile '/u01/app/oracle/oradata/bys001/encry_test.dbf' size 10m encryption using 'aes128' default storage(encrypt);
create tablespace encry_test datafile ' /u01/app/oracle/oradata/bys001/encry_test.dbf' size 10m encryption using 'aes128' default storage(encrypt)
*
ERROR at line 1:
ORA-28365: wallet is not open
開啟 wallet
BYS@ bys001>alter system set wallet open identified by "testtest";
System altered.
2.建立並驗證表空間是否使用加密
BYS@ bys001>create tablespace encry_test datafile '/u01/app/oracle/oradata/bys001/encry_test.dbf' size 10mencryption using 'aes128' default storage(encrypt);
Tablespace created.
BYS@ bys001>select tablespace_name,encrypted from dba_tablespaces;
TABLESPACE_NAME                ENC
------------------------------ ---
SYSTEM                         NO
SYSAUX                         NO
UNDOTBS1                       NO
TEMP                           NO
USERS                          NO
EXAMPLE                        NO
CATALOG1                       NO
BYS_FLASHBACK                  NO
TEST1                          NO
ENCRY_TEST                     YES

3.在加密表空間上建立表,表預設繼承了表空間的加密屬性
BYS@ bys001>create table encry_test2 tablespace encry_test as select * from tab;
Table created.
BYS@ bys001>select * from encry_test2;
TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
ENCRY_TEST                     TABLE
ENCRY_TEST2                    TABLE
FRUIT_LIST                     TABLE
FRUIT_LIST_AUDIT               TABLE
TEST                           TABLE
TEST3                          TABLE
TEST4                          TABLE
TEST5                          TABLE
TEST6                          TABLE
TEST_AUDIT                     TABLE

4.關閉wallet,新建立的表將不能查詢。
BYS@ bys001>alter system set wallet close identified by "testtest";
System altered.
BYS@ bys001>select * from encry_test2;
select * from encry_test2
              *
ERROR at line 1:
ORA-28365: wallet is not open

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29196873/viewspace-1067293/,如需轉載,請註明出處,否則將追究法律責任。

相關文章