Oracle 透明資料加密--列加密____Oracle

來源:互聯網
上載者:User

我們所需要做的就是把某列聲明成加密的,剩下的全部由Oracle完成。當使用者插入或者更新資料時,列值會被截獲、加密,然後用加密後的格式儲存。然後,當這一列被查詢時,又會自動對列值進行解密,然後把解密後的文本(明文)返回給使用者。使用者甚至都不需要知道發生過加密和解密——也就是所謂的透明。全部都是由Oracle代碼內部完成,不需要任何觸發器或者複雜的過程邏輯。


TDE的目的:用最小的代價加密敏感性資料,避免可能的對資料檔案的盜竊帶來的破壞。不過,注意,強調的重點是透明——也就是說,加密是自動進行的,解密也一樣。在資料庫中。Oracle不會區分使用者。當一個使用者具有查詢對象的許可權時,Oracle都會明文給出資料值
TDE總共有三層加密,第一層,wallet密鑰的驗證密碼,這個值是人工設定的密碼,第二層wallet密鑰,第三層,表密鑰,所以只要任何一層沒被竊取,你的資料都是相對安全的。
加密解密過程


使用限制:
1.不能在主鍵,外鍵列使用TDE
2.對於使用了TDE的列我們只能建立b樹索引。
3.大對象資料類型不可以使用,BLOB,CLOB
4.import/export
5.其他直接存取資料庫資料檔案的工具不可以使用

支援的密碼編譯演算法:

Algorithm Key Size Parameter Name

Triple DES (Data Encryption Standard)

168 bits

3DES168

AES (Advanced Encryption Standard)

128 bits

AES128

AES

192 bits (default)

AES192

AES

256 bits

AES256

支援加密的資料類型

CHAR

DATE

INTERVAL DAY TO SECOND

INTERVAL YEAR TO MONTH

NCHAR

NUMBER

NVARCHAR2

RAW

TIMESTAMP (includes TIMESTAMP WITH TIME ZONE and TIMESTAMP WITH LOCAL TIME ZONE)

VARCHAR2

參考命令說明


Task SQL Command

Add encrypted column to existing table

ALTER TABLE table_name ADD (column_name datatypeENCRYPT);

Create table and encrypt column

CREATE TABLE <table_name> (column_name datatypeENCRYPT);

Encrypt unencrypted existing column

ALTER TABLE table_name MODIFY (column_name ENCRYPT);

Master key: set or reset

ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY <password>;

Master key: set or reset to use PKI certificate

ALTER SYSTEM SET ENCRYPTION KEY <certificate_ID>IDENTIFIED BY <password>;

Wallet: open to access master keys

ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY <password>;


舉例:系統建立wallet目錄,指定wallet位置mkdir -p /opt/oracle/admin/skydb/wallet修改sqlnet.ora加入以下內容ENRYPTION_WALLET_LOCATION =(SOURCE=(METHOD=file)METHOD_DATA=(DIRECTORY=/opt/oracle/admin/skydb/wallet))資料庫裡建立wallet並且設定訪問密碼alter system set encryption key authenticated by "123456";建立帶有加密列的表,插入相關資料create table en_tab (id int,name varchar(20),salary number(10,2) encrypt using 'AES256');insert into en_tab values(1,'dabing',50000.00);insert into en_tab values(2,'newboy',50000.00);設定了密碼後可以手動開啟或者關閉wallet開啟walletalter system set encryption wallet open authenticated by "123456";關閉walletalter system set encryption wallet close;如果有查詢許可權,不加密的列可以查詢,加密的無法查詢,必須開啟wallet才可以SQL> desc  hank.en_tab; Name                                      Null?    Type ----------------------------------------- -------- ---------------------------- ID                                                 NUMBER(38) NAME                                               VARCHAR2(20) SALARY                                             NUMBER(10,2) ENCRYPTSQL> select id,name from  hank.en_tab;        ID NAME---------- --------------------         1 dabing         2 newboySQL> select SALARY from hank.en_tab;select SALARY from hank.en_tab                        *ERROR at line 1:ORA-28365: wallet is not open開啟wallet,可以正常訪問加密列SQL> alter system set encryption wallet open authenticated by "123456";System altered.SQL>  select SALARY from hank.en_tab;    SALARY----------     50000     50000隻能建立no salt的btree索引SQL> create index ind_sar on en_tab (salary);create index ind_sar on en_tab (salary)                                *ERROR at line 1:ORA-28338: cannot encrypt indexed column(s) with saltSQL> alter table en_tab modify (salary ENCRYPT NO SALT);Table altered.SQL> create index ind_sar on en_tab (salary);Index created.
可以參看資料字典查看那些列被加密SQL> select * from user_encrypted_columns;TABLE_NAME                     COLUMN_NAME                    ENCRYPTION_ALG                SAL------------------------------ ------------------------------ ----------------------------- ---EN_TAB                         SALARY                         AES 256 bits key              NO


參考:https://docs.oracle.com/cd/B19306_01/network.102/b14268/asotrans.htm#ASOAG600









聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.