Oracle錢夾的使用

db_wjw發表於2011-12-02
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4

為了安全起見,有時想對敏感資料加密,對其進行編碼以保證授權使用者才能理解它。可以使用OracleTDETransparent Data Encryption,透明資料加密)特性。使用Oracle錢夾儲存密匙,資料庫處理所有的加密和解密細節。Oracle Database 10g允許加密表總的列,在Oracle Database 11g中,可以加密整個表空間。

錢夾

1)        建立一個新目錄,並指定為wallet目錄

$ mkdir -p /u01/app/oracle/admin/orcl/wallet

設定wallet目錄的方法很簡單,編輯引數檔案sqlnet.ora

$ vi $ORACLE_HOME/network/admin/sqlnet.ora

加入以下資訊,儲存。

ENCRYPTION_WALLET_LOCATION=

  (SOURCE=

    (METHOD=file)

    (METHOD_DATA=

       (DIRECTORY=/u01/app/oracle/admin/orcl/wallet)

    )

  )

ENCRYPTION_WALLET_LOCATION引數的作用就是告知Wallet的實現方式和物理位置。上述示例中將/u01/app/oracle/admin/orcl/wallet目錄作為主加密Key的存放位置。

2)        建立master key檔案,指定wallet密碼

使用SYS使用者登陸,透過以下命令建立加密檔案:

SQL> alter system set encryption key identified by "wjw";

其中,wjwwallet密碼。Oracle Wallet是一個可以開啟關閉的功能元件,設定密碼之後,只有透過密碼口令可以啟用wallet功能。

此時,在設定的目錄下會多出一個ewallet.p12檔案。這就是生成的master key檔案。

3)        啟動和關閉Wallet

啟動Wallet

SQL> alter system set encryption wallet open identified by "wjw";

關閉Wallet

SQL> alter system set encryption wallet close identified by "wjw";

可以透過以下語句查詢Wallet是否在開啟狀態:

SQL> select * from v$encryption_wallet;

在建立了主密匙後,可以在希望加密的列的名字後使用ENCRYPT關鍵字,來加密表列。

在建立表時加密列:

SQL> create table t

(id number primary key,

name varchar2(30) encrypt);

加密已有表中的某個列:

SQL> alter table employees modify (emp_id encrypt);

       為表新增一個加密列:

SQL> alter table employees add (encrypt_id number(9) encrypt);

       可以使用下列命令檢視錶中的加密列:

SQL> desc 表名稱;

如果處於某種原因想關閉加密,則可以使用DECRYPT關鍵字:

SQL> alter table employees modify(emp_id decrypt);

1)        表空間加密的限制:

l        不能加密臨時和撤銷表空間

l        不能更改加密表空間的安全密匙

l        不能加密外部表

2)        加密表空間示例:

SQL> create tablespace wjw

     datafile '/u01/app/oracle/oradata/orcl/wjw01.dbf' size 500m

     encryption

     default storage(encrypt);

       其中encryption表時資料庫使用預設的加密演算法DES128,可以在encryption後面使用using子句來指定另外的演算法,如:

SQL> create tablespace wjw

     datafile '/u01/app/oracle/oradata/orcl/wjw01.dbf' size 500m

     encryption using '3DES168'

     default storage(encrypt);

3)        檢查一個表空間是否加密:

SQL> select encrypted from dba_tablespaces where tablespace_name='WJW';

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

相關文章