日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle数据透明加密,oracle数据透明加密-TDE

發(fā)布時間:2023/12/16 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle数据透明加密,oracle数据透明加密-TDE 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

介紹

10g R2提供了一個新的特性,讓你只需要做如下動作:你可以不寫一行代碼,只需要聲明你需要加密某列。當(dāng)用戶插入數(shù)據(jù)的時候,數(shù)據(jù)庫透明的加密數(shù)據(jù)然后存儲加密后的數(shù)據(jù)。同樣的,當(dāng)用戶讀取數(shù)據(jù)時,數(shù)據(jù)庫自動進行解密。由于加解密操作對應(yīng)用程序來說都是透明的,不需要應(yīng)用程序修改代碼,因此這個特性就叫做:透明數(shù)據(jù)加密(TDE)。

簡單來說默認不對數(shù)據(jù)進行TDE加密,數(shù)據(jù)庫中的某些敏感數(shù)據(jù)是直接可以在操作系統(tǒng)層面進行讀取的,方法不進行闡述。

10gR2 可以對指定列進行加密,11g還可以對表空間進行加密。

配置TDE

制定master密鑰存放位置(位置TNS_ADMIN變量為準)

vi

$ORACLE_HOME/network/admin/sqlnet.ora

添加如下參數(shù)

ENCRYPTION_WALLET_LOCATION=

(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=

/home/oracle/app/oracle/admin/orcl/wallet)))

oracle用戶手動創(chuàng)建wallet文件夾

mkdir /home/oracle/app/oracle/admin/orcl/wallet

否則報錯ORA-28368: cannot auto-create wallet

創(chuàng)建wallet并在其中裝入master密鑰

SQL> alter system set key

identified by "oracle";

System altered.

在$ORACLE_BASE/admin/sid/wallet文件夾中生成密鑰文件

ewallet.p12

創(chuàng)建wallet后,它將保持打開狀態(tài),直到將其關(guān)閉,或者重啟數(shù)據(jù)庫。

可以檢查wallet的狀態(tài)

col wrl_type format a7

col wrl_parameter format a55

select

wrl_type,wrl_parameter,status from gv$encryption_wallet;

WRL_TYP WRL_PARAMETER

-------

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

STATUS

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

file??? /home/oracle/app/oracle/admin/orcl/wallet

OPEN

手動打開wallet,打開是需要密碼的

alter system set encryption wallet

open identified by? "oracle";

也就是說數(shù)據(jù)庫每次重啟都需要安全管理專員手動打開wallet,否則加密數(shù)據(jù)無法讀寫。

當(dāng)然也可以設(shè)置自動登錄wallet,但是建議在開發(fā)或者測試階段進行。

打開自動登錄的方法通過Oracle

wallet Manager

運行owm命令打開圖形界面,

打開現(xiàn)有wallet(找到master密鑰存放路徑)

打開自動登錄

在master密鑰存放路徑中生成一個文件cwallet.sso。

關(guān)閉wallet

可以通過手動關(guān)閉wallet

alter system set wallet close;

注意10g關(guān)閉不需要wallet口令,如果wallet被關(guān)閉,所有的加密解密將自動終止。

11g關(guān)閉需要wallet口令,語法如下,否則提示ORA-28390:

auto login wallet not open but encryption wallet may be open

alter system set wallet close

identified by "oracle";

另外,如果設(shè)置自動登錄11g環(huán)境下執(zhí)行關(guān)閉命令不需要輸入密碼

SQL> alter

system set wallet close;

可以執(zhí)行成功,但是查詢gv$encryption_wallet視圖,狀態(tài)依然是OPEN,而不是closed。

此時查詢依然可以查詢加密內(nèi)容。

TDE的密鑰管理

在對表進行加密時,TDE為每個包含加密字段的表都生成相應(yīng)的密鑰,而不是所有的表都使用相同的密鑰。

TDE使用對稱密鑰技術(shù)進行數(shù)據(jù)加密和解密,性能高。

對于表空間的密鑰是存儲在數(shù)據(jù)字典中,前提是它首先使用master密鑰對所有的表密鑰進行加密。

新表創(chuàng)建加密列

create table

( encrypt [algorithm] [nomac] [no salt]);

[algorithm]加密算法

[nomac] 10.2.0.4才開始有的參數(shù)當(dāng)加密一個列需要額外的20字節(jié)存儲密文時,將會生成一個消息驗證碼。

[no salt]) salt通過在明文中插入某個隨機值(在TED中為一個16字節(jié)的值)能夠有效的增強加密算法的強度,避免對加密數(shù)據(jù)的“明文"攻擊。

create table foo (columnA

dataype,columnB dataype encrypt);

該句默認使用192為子長密鑰的AES加密算法,使用salt以及一個20位的mac。當(dāng)然,如果希望某列上用索引,最好不要在其上加入salt。

查看加密列

select

owner,table_name,column_name,encryption_alg,salt from dba_encrypted_columns;

對現(xiàn)有列進行加密

alter table

modify? ( encrypt

['nomac'] [no salt]);

如果數(shù)據(jù)量比較大,直接對列加密會增加cpu和存儲負載,因此可以考慮使用在線重定義的形式重新組織表。(不贅述)

TDE列加密弊端

使用數(shù)據(jù)修改捕獲(無論同步還是異步)、流、物化視圖、透明表空間、LOB就不能用了,隨著11G引入表空間加密,這一問題得到解決。

加密的列如果使用了salt,則無法在上面創(chuàng)建索引。

因為索引存儲的是加密后的值,所以即使不使用salt也只可以使用基于等式匹配的查詢,對于范圍查詢也無能為力。

因為不同表密鑰不同,因此除非事先解密數(shù)據(jù),否則無法發(fā)現(xiàn)PK/FK的關(guān)系定義。

表空間加密

表空間加密,其中的所有存儲內(nèi)容都會進行加密。

create tablespace ts_encrypted

datafile

'/home/oracle/app/oracle/oradata/ORCL/datafile/ts_encrypted _d08ww9lb_.dbf'

size 100m autoextend on encryption using 'AES192' default? storage(encrypt);

查詢表空間加密

select

ts.name,et.encryptedts,et.encryptionalg from v$tablespace

ts,v$encrypted_tablespaces et where ts.ts#=et.ts#;

列級別加密步驟

1確定待加密的列

2確定tde都能夠支持此數(shù)據(jù)類型

3確定在該列上不存在索引

4確定改了不屬于某個PK/FK關(guān)系

5對列進行加密

6重新組織表或在線重定義

表空間加密步驟

1確定含有敏感數(shù)據(jù)的列表

2創(chuàng)建一個新的加密表空間

3使用alert table

customer move tablespace encrypted_customer ;將表移動到新表空間。

4索引需要重建,例如:alter table tde_table1_index1 rebuild tablespace encryptedtbs;

5將表從加密的表空間move到普通表空間,就完成了解密。

11g表空間級透明數(shù)據(jù)加密的功能提升

相對于10g版本的列級TDE,表空間級TDE提供了更多的靈活性和更好的性能。

下列表格是10g列級TDE和11g表空間級TDE的比較。

列級TDE

表空間級TDE

加密完成在

PGA

Data Block層

在SGA中加密數(shù)據(jù)的狀態(tài)

加密的

解密的

支持的索引類型

只支持b-tree索引

支持所有類型索引

支持外鍵?

不知道外鍵加密(因為不同的表用不通的key)

支持外鍵

支持的索引search方式

支持等值search,不知道范圍掃描

支持所有類型的search

支持的數(shù)據(jù)類型

部分

所有

執(zhí)行計劃是否改變

可能

不改變

是否需要增加存儲的占用

對其他產(chǎn)品的支持

l? TDE支持Dataguard,

l? TDE不支持傳統(tǒng)導(dǎo)出導(dǎo)入exp/imp

l? TDE支持expdp/impdp,可以直接導(dǎo)出,但是會提示ORA-39173 encryptd data has been stored unencrypted in dump file set,表時是明文方式存儲在DUMP文件中,可以直接導(dǎo)入。

為了保證導(dǎo)出DUMP的安全也可以在導(dǎo)出時使用ENCRYPTION_PASSWORD參數(shù)來對備份文件設(shè)置加密口令,導(dǎo)入時只有提供口令密碼才能導(dǎo)入數(shù)據(jù)。

總結(jié)

以上是生活随笔為你收集整理的oracle数据透明加密,oracle数据透明加密-TDE的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。