什麼時候會用到透明加密表空間呢?

snowdba發表於2015-03-25
最近ISO20000隨著和煦的春風吹遍各家公司,作為傳統行業的金融系統自然躲不開這一輪折騰。

在金融系統對資料庫安全有著明確的規範,例如:

資料保密性
本項評價指標包括:
——應採用加密或其他有效措施實現系統管理資料、鑑別資訊和重要業務資料傳輸保密性;

——應採用加密或其他保護措施實現系統管理資料、鑑別資訊和重要業務資料儲存保密性。


這個需求從資料庫和應用程式兩方面都可以實現,對於資料庫運維方面可以使用透明加密的技術來實現。這個技術平時很少用到,下面是根據官方文件中的描述整理出來的步驟,當有業務需求時可以參考。

為了使用透明資料加密,首先指定一個wallet路徑並且設定一個秘鑰,步驟如下:
1. 在sqlnet.ora檔案中指定一個wallet路徑
2. 建立主秘鑰
3. 開啟wallet
4. 建立表空間

下面看具體步驟
1.在$ORACLE_HOME/network/admin路徑下編輯sqlnet.ora檔案,新增下面的語句,將wallet路徑設定到/home/oracle
ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(/home/oracle)))

2. 建立主秘鑰
ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "oracle";

3. 當資料庫關閉時wallet也會隨之關閉。在這一步手工開啟wallet
ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "oracle";

4. 建立加密表空間後,在該表空間中建立的表預設支援加密功能。
CREATE TABLESPACE sec_tbs
DATAFILE '/oradata/sec_tbs01.dbf'
SIZE 100M
ENCRYPTION
DEFAULT SOREAGE(ENCRYPT);

5. 在加密表空間上建立表,不再需要特別指定加密語法
CREATE TABLE sec_tab
(id INT, name VARCHAR2(10))
TABLESPACE sec_tbs;

6. 檢視錶空間加密方式
SELECT tablespcae_name,status,encrypted
FROM dba_tablespaces
WHERE tablespace_name='SEC_TBS';

這個做法也有個隱患,就是wallet檔案。該檔案就是密碼本,如果丟失了或者損壞了密碼本,加密後的資料就無法解密了,所以注意保護好該檔案。

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

相關文章