【11g新特性】Oracle 加密表空間-可下載

dbqs8710發表於2015-01-16
【11g新特性】Oracle加密表空間
新年新群招募: 中國Oracle精英聯盟 170513055
群介紹:本群是大家的一個技術分享社群,在這裡可以領略大師級的技術講座,還有機會參加Oracle舉辦的技術沙龍,與興趣相投的小夥伴一起笑談風雲起,感悟職場情!

前言:資料治理領域裡面經常會遇到敏感資料,例如我們徵信中心的徵信資料就是涉密資料,並不是所有的人都可以看到,就算有授權也只能看到指定物件的資料,那麼想一想假設這些資料被流失出來會是一個怎樣的場景,就像皇帝新裝這個故事一個,全部搬上銀幕被展現出來,還記得前幾天12306網站資訊被洩露了嗎!下面來介紹一個Oracle 11g新特性給大家,此特性可以完全避免上述事件的發生,這就是Oracle11g加密表空間特性。


理論

建立一個加密表空間,作用是隻要放在加密表空間中的表,沒有wallet錢包中的金鑰使用者是打不開的,這就可以形成一個保護罩,就算你有許可權查詢資料也不能看到明文,這就起到了風險保障的作用,只有知道祕鑰的管理員才能檢視,下面我們來詳細講解。


加密表空間與wallet的關係

1.Oracle 表空間的加密與解密完全是基於wallet錢包中的金鑰進行的。

2.如果walletopen狀態,那麼我們可以使用其中的金鑰,進行加密與解密處理。

3.如果walletclose狀態,那麼我們就拿不到金鑰,此時加密表空間是不可用的,例如 查詢 修改 建立 都不允許

4.唯一刪除表是不需要金鑰的,walletopen or close狀態都無所謂,直接刪除即可


TDE(Transparent Data Encryption透明資料加密)使用場景

1.保護敏感資料,禁止未授權的訪問,只有開啟錢包才能檢視資料。

2.防止資料丟失,當加密表空間的資料檔案被惡意拷貝走後,如果你沒有金鑰是無法還原資料的。

3.防止資料被截獲,當在網路傳輸時加密後的資訊更安全,即使截獲了也無法得知其中內容。

TDE可支援的加密演算法種類 AES(Advanced Encryption Standard高階加密標準) DES的升級版

①  AES192              192位金鑰加密

②  AES128(default)  128位金鑰加密

③  AES256            256位金鑰加密

④  3DES168          168位金鑰加密 DES(Data Encryption Standard資料加密標準)

AES標準是美國聯邦政府採用的一套加密標準,用來替代原先的DES標準。AES屬於對稱性加密演算法(加密與解密使用同一金鑰進行),反之非對稱性加密演算法(加密與解密使用不同金鑰進行)例如 RSA標準有公鑰與私鑰。


TDE(Transparent Data Encryption透明資料加密)加密原理

①  先要建立一個“wallet錢包”,這個錢包裡面儲存著金鑰,Oracle就是通過這個金鑰對列進行加密和解密的。

②  生成wallet錢包之前先要設定wallet錢包的儲存位置

設定wallet錢包位置的檔案$ORACLE_HOME/network/admin/sqlnet.ora

[oracle@cafe admin]$ vim sqlnet.ora           在這個檔案中新增如下指令碼

encryption_wallet_location=(source=

                                  (method=file)

                                  (method_data=

                                  (directory=/u01/app/oracle/product/11.1.0/db_1/network/admin)))

③  在wallet裡面建立金鑰key,建立後自動開啟wallet,密碼"oracle"不加引號時,後面使用時也不需要加引號

SYS@COFFEE>alter system set encryption key authenticated by "oracle";

或【alter system set encryption key identified by oracle;

System altered.

說明:authenticated by "oracle" :開啟/關閉wallet的認證密碼是oracle

如果報錯

SYS@COFFEE> alter system set encryption key authenticated by "oracle";

alter system set encryption key authenticated by "oracle"

*

ERROR at line 1:

ORA-28368: cannot auto-create wallet 不能自動建立錢包

/u01/app/oracle/product/11.1.0/db_1目錄下執行sqlplus 登入資料庫就可以成功執行

④  檢視一下wallet錢包是否在$ORACLE_HOME/network/admin/目錄下生成

[oracle@cafe admin]$ ll

-rw-r--r-- 1 oracle dba  1573 Nov  7 03:21 ewallet.p12     這個就是我們剛才生成的wallet錢包,裡面有我們建立的金鑰(密文形式),開啟wallet錢包的認證密碼是“oracle”,建立wallet錢包之後金鑰就自動在裡面了。

⑤ 建立一個加密表空間

SYS@COFFEE> create tablespace encrypted_tbs datafile '/u01/app/oracle/oradata/COFFEE/datafile/test_encrypted01.dbf' size 10m encryption default storage(encrypt);

CREATE TABLESPACE stablespace DATAFILE '/u01/app/oracle/oradata/COFFEE/datafile/stablespace.dbf' SIZE 10M ENCRYPTION DEFAULT STORAGE(ENCRYPT);

Tablespace created.

建立加密表空間encrypted_tbs,大小10MB,如果不指定加密演算法預設使用AES128加密演算法金鑰長度128位,需open wallet

如果報錯

ERROR at line 1:

ORA-28365: wallet is not open   此時報錯是沒有開啟錢包,因為表空間的加密是使用錢包中的金鑰進行加密的,如果錢包沒開啟便無法使用金鑰,當然也就建立不了加密表空間。

Open&Close the Oracle Wallet mothed

alter system set wallet open identified by "oracle";                開啟錢包

alter system set wallet close identified by "oracle";            關閉錢包11gR2 

alter system set wallet close;                              關閉錢包11gR1

檢視錶空間屬性

SYS@COFFEE> select tablespace_name,encrypted from dba_tablespaces;

TABLESPACE_NAME                ENC

------------------------------ ---

SYSTEM                         NO

SYSAUX                         NO

UNDOTBS1                      NO

TEMP                           NO

USERS                          NO

EXAMPLE                        NO

TBS1                           NO

TBS2                           NO

TBS3                           NO

TBS4                           NO

ENCRYPTED_TBS                  YES            加密狀態


實驗

在加密表空間上建立一張表encryption_t,這張表上資料全部為加密狀態

SYS@COFFEE> create table encrypted_t (x int) tablespace encrypted_tbs;

Table created.

插入一條資料

SYS@COFFEE> insert into encrypted_t values (100);

1 row created.

SYS@COFFEE> commit;

Commit complete.

SYS@COFFEE> select * from encrypted_t;

         X

--------------------

       100

我們關閉wallet看效果

SYS@COFFEE> alter system set wallet close;

System altered.

當沒有開啟wallet時不允許開打表

SYS@COFFEE> select * from encrypted_t;

select * from encrypted_t

              *

ERROR at line 1:

ORA-28365: wallet is not open          

建立一個新表encryption_t1時,也需要使用wallet錢包中的金鑰進行加密

SYS@COFFEE> create table encrypted_t1 (x int) tablespace encrypted_tbs;

create table encrypted_t1 (x int) tablespace encrypted_tbs

*

ERROR at line 1:

ORA-28365: wallet is not open

唯一例外->刪除表,因為刪除的過程是不需要金鑰key參與,所以walletopen or close狀態都無所謂,直接執行就好

SYS@COFFEE>drop table encryption_t;

Table dropped.


小結:我們介紹了Oracle加密表空間的原理、場景、實踐操作,從理論到實踐給朋友們展示了Oralce加密表空間的使用效果,這裡切記一定不要忘記wallet的認證密碼,否則你將不能查詢到表空間內的資料,最好的辦法就是把密碼記錄到一個密碼生成器中,定期更新,這樣既保證安全性又保證不會忘記。


 【11g新特性】Oracle加密表空間.pdf      請點選下載

2015-1-5 21:07 上傳
下載次數: 0
    請點選下載


Leonarding
2015.01.05
天津&winter
分享技術~成就夢想
Blog
www.leonarding.com


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

相關文章